Skip to main content

TUI mission control for tmux worktree sessions

Project description

vigil

TUI mission control for tmux worktree sessions. Monitors session status, git changes, and PR state from a single dashboard.

Prerequisites

  • Python 3.10+
  • tmux
  • git
  • gh (GitHub CLI, authenticated)

Installation

From PyPI

pipx install vigil-tui

Or with pip:

pip install vigil-tui

From source

git clone https://github.com/joshuazd/vigil.git
cd vigil
./vigil

The ./vigil bootstrap script auto-creates a venv and installs dependencies.

Keybindings

Key Action
q Quit
j / k Navigate down / up
Enter Switch to session (popup mode) or toggle detail
Tab Toggle detail panel
o Open PR in browser
m Merge PR (press twice to confirm)
a Approve PR
x Cleanup session (press twice to confirm)
d Dispatch (run configured hook with input)
b Rebase and force-push
r Refresh
Esc Cancel

Configuration

Config file

~/.config/vigil/config.toml — optional TOML config for hooks and future settings.

[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

[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 can be customized via shell command templates with {placeholder} variables:

Hook Variables Default
cleanup {session}, {path}, {branch}, {git_root} Built-in: kill tmux session + remove worktree
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

Variables are automatically shell-escaped. Set a hook to "" to disable it.

The default merge hook uses --squash --delete-branch. Override [hooks] merge for a different strategy.

Environment variable overrides

Environment variables override TOML settings for quick testing or per-machine config:

VIGIL_GIT_INTERVAL, VIGIL_PR_INTERVAL, VIGIL_CACHE_TTL, VIGIL_LOG_LEVEL, VIGIL_GIT_WORKERS

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

Development

pip install -e ".[dev]"
pytest tests/ -v
ruff check src/ tests/
mypy src/

Architecture

See CLAUDE.md for module-level documentation.

License

GPL-3.0

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.1.0.tar.gz (40.6 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.1.0-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vigil_tui-0.1.0.tar.gz
  • Upload date:
  • Size: 40.6 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.1.0.tar.gz
Algorithm Hash digest
SHA256 ccaa1cd1ba0348f60bbed8ab67a1011eacba673b044d82e493ea4c3801a60fa2
MD5 929290093c4a368d849522556541a1e3
BLAKE2b-256 4119917ab4ac970813f390a6e5192c43424cd59a6fe8c8f7a0833c8dc8d28c3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for vigil_tui-0.1.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: vigil_tui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 33.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d392437be987be0211f867e8ac75b5444124e97906368fb145ae14bbabbb82e3
MD5 f6784d50a6a036ebff53217c4c31e36a
BLAKE2b-256 a041990d676a7cab80b8579671196e61bba91adee50353a34dea66f48d838d1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vigil_tui-0.1.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