The Spatial Dashboard for your Terminal Workflow
Orbit is a modern terminal user interface (TUI) application designed to streamline your development workflow. It provides a unified dashboard for monitoring Docker containers, managing ports, tracking environment variables, and executing project actions—all from your terminal.
- Project Detection - Automatically detects Node.js, Rust, Python, Go, and Docker projects
- Docker Integration - Monitor and manage containers with real-time stats
- Port Scout - Track active ports and detect conflicts
- Environment Management - View and manage environment variables
- Secrets Management - Secure storage via macOS Keychain
- Focus Mode - Distraction-free work sessions with Do Not Disturb integration
- Action Palette - Quick access to project scripts and commands
- Real-time Output - See command output as it streams
- Beautiful Themes - Tokyo Night, Catppuccin, Dracula, Nord, and Gruvbox
# Clone and install
git clone https://github.com/lulzx/orbit.git
cd orbit
./install.shThe install script will:
- Build orbit in release mode
- Install to
~/.local/bin(or custom location with--dir) - Guide you to add to PATH if needed
./install.sh # Install/update orbit
./install.sh --dir /usr/local/bin # Custom install location
./install.sh --debug # Build debug version
./install.sh --uninstall # Remove orbitcargo build --release
cp target/release/orbit ~/.local/bin/- Rust 1.70 or later
- macOS or Linux
- Docker (optional, for container management)
Launch the interactive dashboard in your project directory:
orbitOr specify a path:
orbit --path /path/to/project| Key | Action |
|---|---|
Space |
Open command palette |
? |
Show help |
q / Ctrl+C |
Quit |
Tab / Shift+Tab |
Switch panels |
j/k or ↑/↓ |
Navigate |
Enter |
Execute action |
Esc |
Close palette/dialog |
f |
Enter focus mode |
d |
Toggle Docker panel |
p |
Toggle ports panel |
e |
Toggle environment panel |
r |
Refresh project |
Press Space to open the command palette where you can:
- Search and filter actions by typing
- Execute project scripts (npm, cargo, make, etc.)
- Toggle panels and settings
- Enter focus mode
- Access system commands
# List detected project actions
orbit actions
# Show all actions including system ones
orbit actions --all
# Show environment variable status
orbit env
orbit env --show-values
# Show port status
orbit ports
orbit ports --kill 3000 # Kill process on port
# Show Docker container status
orbit docker
orbit docker --up # Start containers
orbit docker --down # Stop containers
# Enter focus mode (25 minutes with ambient sound)
orbit focus --duration 25 --ambient --sound lofi
# Manage secrets
orbit secrets list
orbit secrets set API_KEY
orbit secrets remove API_KEY
orbit secrets inject --shell zsh
# Initialize project configuration
orbit init
orbit init --forceCreate ~/.config/orbit/config.toml:
[general]
check_updates = true
startup_time_target = 50
[display]
theme = "tokyo-night" # tokyo-night, catppuccin, dracula, nord, gruvbox
layout = "standard" # standard, compact, wide
animations = true
[keybindings]
quit = "q"
palette = "space"
focus = "f"
[docker]
stats_interval = 2
[focus]
default_duration = 25
enable_dnd = true
minimize_windows = true
ambient_sound = "lofi"
ambient_volume = 30
[notifications]
native = true
on_action_complete = true
on_focus_end = true
on_port_conflict = trueCreate .orbit.toml in your project root:
[project]
name = "my-project"
description = "My awesome project"
[display]
docker_panel = true
ports_panel = true
env_panel = true
[actions]
favorites = ["dev", "build", "test"]
[[actions.custom]]
name = "deploy"
command = "npm run deploy"
category = "deploy"
description = "Deploy to production"
confirm = true
[secrets]
keychain = ["API_KEY", "DATABASE_URL"]
[[ports.expected]]
port = 3000
service = "dev-server"
[[ports.expected]]
port = 5432
service = "postgres"
[focus]
default_duration = 30
ambient_sound = "rain"Orbit automatically detects and configures support for:
| Project Type | Detection | Scripts From |
|---|---|---|
| Node.js | package.json |
npm/yarn/pnpm/bun scripts |
| Rust | Cargo.toml |
cargo commands |
| Python | pyproject.toml, requirements.txt |
scripts, common commands |
| Go | go.mod |
go commands |
| Docker | Dockerfile, docker-compose.yml |
compose services |
| Generic | Makefile |
make targets |
Orbit discovers runnable commands from:
package.jsonscripts (dev, build, test, lint, etc.)MakefiletargetsCargo.tomlbinaries and examplesdocker-compose.ymlservicespyproject.tomlscripts
Focus mode helps you concentrate by:
- Enabling macOS Do Not Disturb
- Minimizing other windows (optional)
- Playing ambient sounds (lofi, rain, cafe, forest, fireplace)
- Displaying a countdown timer
# Start a 25-minute focus session
orbit focus
# Custom duration with rain sounds
orbit focus --duration 45 --ambient --sound rain
# No ambient sound
orbit focus --duration 20Press Esc or q to exit focus mode early.
Orbit includes several beautiful color themes:
- Tokyo Night (default) - A clean, dark theme with blue accents
- Catppuccin Mocha - Warm, pastel colors
- Dracula - Classic dark theme with purple accents
- Nord - Arctic, bluish color palette
- Gruvbox - Retro groove colors
Change themes in your config file.
src/
├── main.rs # CLI entry point
├── actions/ # Action execution system
├── config/ # Configuration management
├── core/
│ ├── app.rs # Main application loop
│ ├── events.rs # Event handling
│ └── state.rs # Application state
├── detection/ # Project detection
│ └── analyzers/ # Language-specific analyzers
├── focus/ # Focus mode implementation
├── integrations/
│ ├── docker/ # Docker integration
│ └── ports/ # Port scanning
├── secrets/ # Keychain integration
└── ui/
├── layout/ # Layout management
├── theme/ # Color themes
├── widgets/ # UI components
└── renderer.rs # Main renderer
# Run in development mode
cargo run
# Run with verbose logging
cargo run -- -vv
# Run tests
cargo test
# Build release
cargo build --release
# Check for issues
cargo clippy
# Format code
cargo fmt- Make sure the action has a command (system actions like Quit work differently)
- Check the OUTPUT panel for error messages
- Verify the command works in your terminal first
- Ensure Docker is running
- Check if you have permissions to access Docker socket
- Output appears in the OUTPUT panel (bottom right by default)
- Use Tab to navigate to the Output panel
- Commands run in the background; output streams in real-time
- Make sure you're in Dashboard mode (press Esc to exit dialogs)
- Some keys only work when specific panels are focused
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Ratatui for the TUI framework
- Inspired by modern developer tools and terminal applications
- Color themes based on popular editor themes