No description
  • Go 99.5%
  • Nix 0.5%
Find a file
Nimmo 2b7419c766 Add pull (p) and push (P) shortcuts to git view
Both operations run asynchronously and display the first line of git's
output (captured from combined stdout+stderr) in the status bar.
Push uses the configured default branch with --set-upstream.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 23:26:18 +00:00
compose Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
config Support non-standard SSH ports for git remote URLs 2026-03-25 21:43:27 +00:00
git Add pull (p) and push (P) shortcuts to git view 2026-03-25 23:26:18 +00:00
ollama Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
remotes Auto-create remote repo on URL save; push after commit 2026-03-25 23:05:25 +00:00
stacks Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
ui Add pull (p) and push (P) shortcuts to git view 2026-03-25 23:26:18 +00:00
.envrc Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
.gitignore Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
flake.lock Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
flake.nix Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
go.mod Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
go.sum Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
main.go Initial commit: stack-browser TUI 2026-03-25 20:49:09 +00:00
README.md Add README 2026-03-25 20:53:05 +00:00

stack-browser

A terminal UI for browsing and managing Docker Compose stacks.

Features

  • Stack browser — navigate all stacks in a configured directory
  • Service summary — glanceable overview of each container (image, ports, restart policy, container name)
  • Service detail editor — drill into any service and edit its configuration; changes write back to the compose file
  • Compose file viewer/editor — syntax-highlighted view with inline editing
  • .env file viewer/editor — view and edit environment variables alongside the compose file
  • Git management — per-stack git operations from within the TUI:
    • Initialise a repository, set or change the remote URL
    • Stage individual files and commit with a hand-written or AI-generated message
    • AI commit messages via Ollama (diff is sent to your configured model)
    • .gitignore editor — add/remove entries; .env is automatically ignored on repo init
    • Remote repository creation (GitHub supported; GitLab/Gitea stubbed)
  • Settings UI — configure everything without touching the config file

Requirements

  • Go 1.21+
  • Git (must be on $PATH)
  • Docker Compose stacks in a local directory (default: ~/stacks)
  • Ollama (optional — only needed for AI commit messages)

Installation

git clone https://github.com/nimmo/stack-browser
cd stack-browser
go build -o stack-browser .

For NixOS / Nix with flakes:

nix build

Or drop into a dev shell:

nix develop

Usage

./stack-browser

Navigation

Key Action
/ Move through stack list
/ Switch tabs (Summary / Compose / .env / Git)
tab Toggle focus between stack list and content panel
enter Open service detail (from Summary tab)
, Open settings
q / ctrl+c Quit

Summary tab

Key Action
/ Navigate services
enter Open service detail editor

Git tab

Key Action
i Toggle between staged files and .gitignore (when repo exists) / initialise repo
/ Navigate file list
space Toggle file staged / ignored
A Select all files
r Edit remote URL
a Generate commit message via Ollama
m Focus commit message input
enter Confirm / commit
n Add new .gitignore entry (when in .gitignore section)
d Delete .gitignore entry (when in .gitignore section)
esc Go back / cancel

Configuration

Settings are stored at ~/.config/stack-browser/config.toml and can be edited via the built-in settings screen (,).

Setting Default Description
stacks_dir ~/stacks Directory containing your stacks
ollama.host 192.168.8.124 Ollama host
ollama.port 11434 Ollama port
ollama.model qwen3.5:122b Model used for commit message generation
git.default_base_url Pre-filled base URL for new remotes (e.g. github.com)
git.default_user Pre-filled username for new remotes
git.access_token Token used to create remote repositories
git.default_branch main Default branch name for new repositories
git.auto_ignore_env true Automatically add .env to .gitignore on repo init

Stack directory layout

Each subdirectory of stacks_dir is treated as a stack:

~/stacks/
├── nextcloud/
│   ├── docker-compose.yml
│   └── .env
├── jellyfin/
│   ├── compose.yaml
│   └── .env
└── traefik/
    └── docker-compose.yml

Supported compose filenames (in order of preference): docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml