A lightweight TUI to manage your fleet of agents across all your projects.
- Guided 3-step workflow: pick a project, pick/create a workspace (git worktree), then launch a tool (
opencode,amp,claude,codex, ornone). - Fast fuzzy filtering in every step (projects, workspaces, tools, and sessions).
- Scans
~/Projects(or provided roots) within a shallow directory tree, skipping hidden/common vendor directories. - Built-in tmux session switcher: press
ctrl+sfrom the main screens to open Active tmux sessions, filter them, and pressenterto attach. - In wide terminals, Active tmux sessions shows a table with
Project,Branch, andLast active. - Workspace tmux sessions are prewarmed in the background and reused if already running. Each workspace session keeps a
lazygitwindow, and the selected tool (opencode,amp,claude,codex, ornone) gets its own tmux window on demand. - Project/workspace lifecycle management in-app (create and delete with confirmation and cleanup). Worktree deletions are limited to rivet-managed worktrees under
~/.rivet/worktrees(project root is protected). - Stale worktree references (from manually deleted directories) are automatically pruned whenever the worktree list is loaded, keeping the list accurate.
- Keyboard-first UX with help modal (
?), theme picker (ctrl+t), and a persistent help bar. - Optional non-interactive mode for launching sessions directly via CLI flags.
demo.mp4
- tmux
- git
- lazygit
opencode,amp,claude, and/orcodex(optional fornonesessions)- Projects must be valid git repositories. The tool by default will look for projects under
~/Projectsand additional worktrees will be created under~/.rivet/worktrees/
$ mkdir -p ~/Projects ~/.rivet/worktrees
$ go install github.com/ariguillegp/rivet/cmd/rv@latestCreate keybindings to run this tool from your regular shell environment and from inside tmux sessions. If are you are not using ~/Projects/ as your base directory for your project repositories, you will need to run rv YOUR_BASE_DIR to find out the repos you wanna work on.
Bash
Add the following line to your ~/.bashrc
bind -x '"\C-f": "rv YOUR_BASE_DIR"'tmux
Add the following line to your ~/.config/tmux/tmux.conf so you can use tmux-prefix + f to launch rv from a tmux session
bind-key f run-shell "tmux has-session -t rv-launcher 2>/dev/null && tmux kill-session -t rv-launcher; tmux new-session -d -s rv-launcher 'bash -lc \"rv YOUR_BASE_DIR\"'; tmux switch-client -t rv-launcher"This launches rv in a temporary tmux session to keep your current session clean.
Zsh
Add the following line to your ~/.zshrc
bindkey -s '^f' 'rv YOUR_BASE_DIR\n'tmux
Add the following line to your ~/.config/tmux/tmux.conf so you can use tmux-prefix + f to launch rv from a tmux session
bind-key f run-shell "tmux has-session -t rv-launcher 2>/dev/null && tmux kill-session -t rv-launcher; tmux new-session -d -s rv-launcher 'zsh -lc \"rv YOUR_BASE_DIR\"'; tmux switch-client -t rv-launcher"This launches rv in a temporary tmux session to keep your current session clean.
rv [directories...]Rivet starts tools directly inside tmux sessions using your default shell, so no login shell flags are required.
By default, rv scans ~/Projects (personal preference). Pass custom directories as arguments:
rv ~/projects ~/workScanning is intentionally shallow and skips common vendor/cache directories such as .git, node_modules, vendor, .cache, .venv, __pycache__, and target.
Open a session directly without the UI:
rv --project my-project --worktree main --tool opencode [--detach]
rv --project my-project --worktree main --tool amp [--detach]
rv --project my-project --worktree main --tool claude [--detach]
rv --project my-project --worktree main --tool codex [--detach]
rv --project my-project --worktree main --tool none [--detach]--project and --worktree accept names or paths. If the worktree doesn't exist yet, rivet creates a new worktree/branch automatically. Use --create-project to initialize a missing project (in the first root or at the provided path).
Create a new project non-interactively:
rv --project my-project --worktree main --tool opencode --create-projectInspired by:
- agent-of-empires (Rust + ratatui + tmux)
- agent-deck (GO + BubbleTea + tmux)
MIT
