Skip to main content

TUI dashboard for tmux sessions with git and PR status

Project description

vigil

TUI dashboard for tmux sessions. Monitors git status and GitHub PR state across all your sessions from a single view.

Navigate sessions with vim-style keybindings, merge PRs, approve reviews, rebase branches, and clean up sessions — all without leaving the terminal. Works with any tmux workflow: git worktrees, one-branch-per-session, or plain repos.

Install

brew install joshuazd/tap/vigil

Or via PyPI:

pipx install vigil-tui

Or from source:

git clone https://github.com/joshuazd/vigil.git
pipx install ./vigil

Prerequisites

Usage

# Launch the TUI
vigil

# Show help
vigil --help

Vigil discovers all tmux sessions, reads git status from each session's working directory, and fetches PR state via gh. Sessions are color-coded by state: idle, pending review, CI failing, mergeable, etc.

Keybindings

Key Action
j / k Navigate down / up (wraps around)
Enter Switch to session (popup mode) or toggle detail
Tab Toggle detail panel
p Cycle detail mode (pane / PR description / review comments)
f / F Cycle session filter by state (forward / backward)
s / S Cycle sort mode: created / state / alpha (forward / backward)
D Toggle PR draft status
Space Toggle multi-select for batch operations
o Open PR in browser
m Merge PR (press twice to confirm)
a Approve PR
b Rebase and force-push
x Cleanup session (press twice to confirm)
d Dispatch (run configured hook with input)
r Refresh
Escape Clear selection / cancel
q Quit

With multi-select active, m, a, x, b, and D operate on all selected sessions as a batch.

Configuration

All configuration is optional. Create ~/.config/vigil/config.toml to customize:

[settings]
git_interval = 3              # Git polling interval (seconds)
pr_interval = 30              # PR polling interval (seconds)
cache_ttl = 30                # Cache staleness threshold (seconds)
log_level = "INFO"            # DEBUG, INFO, WARNING, ERROR
git_workers = 8               # Max parallel git status threads
capture_window = ""           # Window name for detail panel (empty = first window)
stale_threshold = 86400       # Rebase age warning threshold (seconds, default 24h)
notifications_enabled = true  # Toast + hook on session state changes
auto_cleanup = false          # Auto-cleanup sessions when PR merges

[hooks]
cleanup = "tmux kill-session -t {session} && git worktree remove {path}"
dispatch = "my-dispatch-script {input}"
merge = "gh pr merge {branch} --squash --delete-branch"
approve = "gh pr review {branch} --approve"

Hooks

Actions are shell command templates with {placeholder} variables, automatically shell-escaped:

Hook Variables Default
cleanup {session}, {path}, {branch}, {git_root} Built-in (see below)
dispatch {input} (none — must be configured)
merge {branch}, {git_root} gh pr merge {branch} --squash --delete-branch
approve {branch}, {git_root} gh pr review {branch} --approve
notify {session}, {old_state}, {new_state} tmux display-message "vigil: {session} → {new_state}"

The built-in cleanup kills the tmux session, then removes the git worktree if the session directory is one. For non-worktree sessions, it just kills the session. Override with a hook for custom behavior.

The default merge uses --squash --delete-branch. Override [hooks] merge for a different strategy. Set any hook to "" to disable it.

Environment variable overrides

Environment variables override TOML settings for quick testing:

VIGIL_GIT_INTERVAL, VIGIL_PR_INTERVAL, VIGIL_CACHE_TTL, VIGIL_LOG_LEVEL, VIGIL_GIT_WORKERS, VIGIL_CAPTURE_WINDOW, VIGIL_STALE_THRESHOLD, VIGIL_NOTIFICATIONS, VIGIL_AUTO_CLEANUP

Development

git clone https://github.com/joshuazd/vigil.git
cd vigil
make install   # bootstrap venv
make test      # run tests
make lint      # run linter
make release   # tag, publish to PyPI, update Homebrew tap

The ./vigil bootstrap script auto-creates a virtualenv at ~/.local/share/vigil/venv for quick local use without a manual install.

Logs are written to ~/.local/share/vigil/vigil.log (rotating, 2 MB max).

License

GPL-3.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vigil_tui-0.4.0.tar.gz (47.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vigil_tui-0.4.0-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file vigil_tui-0.4.0.tar.gz.

File metadata

  • Download URL: vigil_tui-0.4.0.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vigil_tui-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d3025dbe9308f47dc22bded4a01742786776165d8a4454e93a649969bf18d7ad
MD5 d7e41ea3cdb2da9a15ce12cdd7eed8b5
BLAKE2b-256 a65a3fbe218e84c1bd706e5eb943b542806eaf1c28066e234dc1c00ad9b7796c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vigil_tui-0.4.0.tar.gz:

Publisher: publish.yml on joshuazd/vigil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vigil_tui-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: vigil_tui-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 39.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vigil_tui-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 972f87d4ec50b031f7c606cdf38c749e379014616d5f66c59824beadd4a3b518
MD5 3ee0215e0e28c6b9a9d79b48fbd726fe
BLAKE2b-256 a7cd629d36b9ed71164f4532294948e6e30008fc5d2918ed1a57d8839abf1b76

See more details on using hashes here.

Provenance

The following attestation bundles were made for vigil_tui-0.4.0-py3-none-any.whl:

Publisher: publish.yml on joshuazd/vigil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page