A vim-inspired terminal user interface (TUI) for managing supervisord processes. Easily browse, control, and manage your supervisord processes with a beautiful, keyboard-driven interface.
- Two-panel interface: Browse processes on the left, view details and logs on the right
- Vim-like keybindings: Navigate with
j/k, search with/, and more - Process management: Start, stop, restart processes with hotkeys
- Full CRUD operations: Add, edit, and delete supervisord process configurations
- Live log viewing: View last lines from stdout and stderr logs in real-time
- Template-based creation: Create new processes from a predefined template
- Auto-refresh: Process status and logs update automatically every 3 seconds
- Config validation: Helpful error messages with configuration guidance
brew install nicklasos/tap/godDownload the latest binary for your platform from the releases page.
macOS:
# Intel Mac
curl -L https://github.com/nicklasos/god/releases/latest/download/god_Darwin_x86_64.tar.gz -o god.tar.gz
tar xzf god.tar.gz
sudo mv god /usr/local/bin/
rm god.tar.gz
# Apple Silicon (M1/M2/M3)
curl -L https://github.com/nicklasos/god/releases/latest/download/god_Darwin_arm64.tar.gz -o god.tar.gz
tar xzf god.tar.gz
sudo mv god /usr/local/bin/
rm god.tar.gzLinux:
# AMD64
curl -L https://github.com/nicklasos/god/releases/latest/download/god_Linux_x86_64.tar.gz -o god.tar.gz
tar xzf god.tar.gz
sudo mv god /usr/local/bin/
rm god.tar.gz
# ARM64
curl -L https://github.com/nicklasos/god/releases/latest/download/god_Linux_arm64.tar.gz -o god.tar.gz
tar xzf god.tar.gz
sudo mv god /usr/local/bin/
rm god.tar.gzNote: If /latest/download/ doesn't work, use the specific version URL:
# Replace v1.0.0 with the desired version
curl -L https://github.com/nicklasos/god/releases/download/v1.0.0/god_Linux_x86_64.tar.gz -o god.tar.gz
tar xzf god.tar.gz
sudo mv god /usr/local/bin/
rm god.tar.gzWindows:
Download the .zip file from releases and extract it to a directory in your PATH.
go install github.com/nicklasos/supervisord-tui@latestNote: When installed via go install, the binary is named supervisord-tui (Go uses the module path name). To use god instead, create an alias or symlink:
# Create an alias (add to ~/.bashrc or ~/.zshrc)
alias god='supervisord-tui'
# Or create a symlink
ln -s $(which supervisord-tui) $GOPATH/bin/god
# or if GOBIN is set:
ln -s $(which supervisord-tui) $GOBIN/godMake sure $GOPATH/bin or $GOBIN is in your PATH.
git clone https://github.com/nicklasos/god.git
cd god
make build
sudo mv god /usr/local/bin/- Go 1.21 or later
- supervisord installed and configured
- A terminal with support for ANSI colors
The application automatically detects your supervisord config file by checking:
SUPERVISOR_CONFIGenvironment variable/etc/supervisor/supervisord.conf(Linux)/etc/supervisord.conf(Linux)/opt/homebrew/etc/supervisord.conf(macOS Apple Silicon)/usr/local/etc/supervisord.conf(macOS Intel)~/.supervisord.conf(user home)
You can also specify the config file path:
god -config /path/to/supervisord.confNote: If you installed via go install, use supervisord-tui instead of god:
supervisord-tui -config /path/to/supervisord.confYour supervisord config file must include these sections:
[unix_http_server]
file=/tmp/supervisor.sock
chmod=0700
[supervisord]
logfile=/tmp/supervisord.log
pidfile=/tmp/supervisord.pid
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sockThe application will show helpful error messages if these sections are missing.
Simply run:
godNote: If you installed via go install, the binary is named supervisord-tui:
supervisord-tuiYou may need to run the application with sudo if your supervisord socket requires elevated permissions:
sudo god
# or if installed via go install:
sudo supervisord-tuiThe application will:
- Find and load your supervisord config file
- Get the current status of all processes
- Display them in the TUI interface
j/β- Move down in the process listk/β- Move up in the process list/- Enter search modes- Start the selected processx- Stop the selected processr- Restart the selected processa- Add a new process (with template)e- Edit the selected process configurationd- Delete the selected processl- View stdout log in editorL- View stderr log in editorq/Ctrl+C- Quit the application
- Type to filter the process list in real-time
Enter- Exit search modeEsc- Cancel search and return to normal mode
- Edit the process configuration in a textarea
Enter- Save changesEsc- Cancel editing and return to normal mode
y- Confirm deletionn/Esc- Cancel deletion
Processes are configured using standard supervisord INI format:
[program:myapp]
command=/path/to/command
directory=/path/to/directory
user=username
autostart=true
autorestart=true
startsecs=10
startretries=3
stdout_logfile=/var/log/myapp.log
stderr_logfile=/var/log/myapp-error.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
environment=KEY1=value1,KEY2=value2
priority=999
stopsignal=TERM
stopwaitsecs=30The interface is divided into two main areas:
- Left Panel: Process list with status indicators
- Right Panel: Combined panel with three sections:
- Process Info: Process information (name, status, PID, uptime, config) - each parameter on its own line
- Error Log: Last 6 lines from stderr
- Stdout Log: Last 6 lines from stdout
Process status is color-coded:
- Green - RUNNING
- Red - STOPPED, FATAL
- Yellow - STARTING, STOPPING
- Gray - EXITED, UNKNOWN
- Press
lto open the stdout log file in your default editor ($EDITORorvi) - Press
L(Shift+L) to open the stderr log file in your default editor - The last 6 lines from each log are also displayed in the right panel
To build from source:
git clone https://github.com/nicklasos/god.git
cd god
make buildOr use the Makefile targets:
make help # Show all available targets
make build # Build the binary
make install # Install to GOPATH/bin
make test # Run tests
make release # Create a release (requires GoReleaser and git tag)
make snapshot # Create a snapshot buildReleases are automated using GitHub Actions. To create a new release:
-
Create and push a git tag:
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 -
GitHub Actions will automatically:
- Build binaries for Linux (amd64, arm64), macOS (amd64, arm64), and Windows (amd64)
- Create a GitHub release with all binaries
- Update the Homebrew tap (if
HOMEBREW_TAP_TOKENsecret is configured)
Setting up GitHub Secrets:
For automatic Homebrew tap updates, add a secret in your GitHub repository:
- Go to Settings β Secrets and variables β Actions
- Add a new secret named
HOMEBREW_TAP_TOKENwith your GitHub token (needsreposcope)
Local Release (Alternative):
If you want to create a release locally:
make releaseFor snapshot builds (no git tag required):
make snapshotgithub.com/charmbracelet/bubbletea- TUI frameworkgithub.com/charmbracelet/lipgloss- Stylinggithub.com/charmbracelet/bubbles- UI components (textarea, textinput)
Add the required sections to your supervisord config file. See the Configuration section above.
Make sure supervisord is running:
supervisord -c /path/to/supervisord.confSpecify the config file path explicitly:
god -config /path/to/supervisord.confOr set the environment variable:
export SUPERVISOR_CONFIG=/path/to/supervisord.conf
godMIT
