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
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccaa1cd1ba0348f60bbed8ab67a1011eacba673b044d82e493ea4c3801a60fa2
|
|
| MD5 |
929290093c4a368d849522556541a1e3
|
|
| BLAKE2b-256 |
4119917ab4ac970813f390a6e5192c43424cd59a6fe8c8f7a0833c8dc8d28c3f
|
Provenance
The following attestation bundles were made for vigil_tui-0.1.0.tar.gz:
Publisher:
publish.yml on joshuazd/vigil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vigil_tui-0.1.0.tar.gz -
Subject digest:
ccaa1cd1ba0348f60bbed8ab67a1011eacba673b044d82e493ea4c3801a60fa2 - Sigstore transparency entry: 1191982791
- Sigstore integration time:
-
Permalink:
joshuazd/vigil@d1707e07e8040e8c8beb4798cf150bb8572a689b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/joshuazd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d1707e07e8040e8c8beb4798cf150bb8572a689b -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d392437be987be0211f867e8ac75b5444124e97906368fb145ae14bbabbb82e3
|
|
| MD5 |
f6784d50a6a036ebff53217c4c31e36a
|
|
| BLAKE2b-256 |
a041990d676a7cab80b8579671196e61bba91adee50353a34dea66f48d838d1d
|
Provenance
The following attestation bundles were made for vigil_tui-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on joshuazd/vigil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vigil_tui-0.1.0-py3-none-any.whl -
Subject digest:
d392437be987be0211f867e8ac75b5444124e97906368fb145ae14bbabbb82e3 - Sigstore transparency entry: 1191982794
- Sigstore integration time:
-
Permalink:
joshuazd/vigil@d1707e07e8040e8c8beb4798cf150bb8572a689b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/joshuazd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d1707e07e8040e8c8beb4798cf150bb8572a689b -
Trigger Event:
release
-
Statement type: