Skip to content
ardey26Public

About

Terminal workspace for running coding agents across parallel git worktrees — zellij, zsh, silent build signals

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bento

A terminal workspace for running coding agents across parallel git worktrees.

Built around one problem: long builds. You start one, switch to another worktree to keep working, and then have to remember to check whether the first finished. This setup makes that unnecessary — the workspace tells you, silently, and survives you closing the terminal.

┌────────────────────────────┬──────────────────┐
│  agent                     │                  │
│  (claude, resumed)         │     lazygit      │
├────────────────────────────┤                  │
│  build                     │                  │
└────────────────────────────┴──────────────────┘
   tab: bento    review    docs

What it gives you

One session per worktree. bento opens a zellij session named after the worktree you're in. Detach with Alt+d, close the terminal, come back later — the build is still running.

Silent build signals. Any command over 60s renames its tab to ✓ make 47m when it finishes, and rings a bell that has audio disabled. The status persists, so it's still there an hour later, and Do Not Disturb can't swallow it. Only failures raise a notification banner.

Worktrees that share expensive state. promote <branch> swaps a branch into your main checkout, so it reuses the node_modules, docker volumes and build caches that already live there instead of rebuilding them per worktree. The branch moves to the resources, not the other way round.

Worktree awareness everywhere. A wt marker appears in the prompt, the zellij tab name and the window title whenever you're in a linked worktree, so you never commit to the wrong tree. Detection is structural (.git/worktrees/), not name matching.

Commands

bento              open / re-attach this worktree's session
bentols            list sessions
bentorm            destroy a session (--all for every one)

wt <branch>        create / switch to a worktree
wtls               list worktrees: branch, dirty state, live session
promote <branch>   swap a branch into the main checkout   (--stash if dirty)
mw                 cd to the main checkout
wtrm [branch]      remove a worktree — never deletes branches

Keys

Zellij runs locked by default so TUIs in panes receive every keystroke.

Alt+h/j/k/l       move between panes
Alt+[ / Alt+]     previous / next tab
Alt+d             detach
Alt+f             fullscreen pane
Alt+n / Alt+w     new / close pane
Ctrl+g            unlock zellij's own keybindings

Alt+Left/Right is deliberately unbound in zellij — it belongs to the shell for word movement.

Install

git clone https://github.com/<you>/bento ~/.bento
~/.bento/install.sh

The installer symlinks the configs and backs up anything it replaces. It does not install the tools — see below.

Requirements

Install via mise (or your package manager of choice):

mise use -g zellij lazygit starship fzf zoxide ripgrep fd bat eza jq yq delta glow

Plus zsh-autosuggestions and zsh-syntax-highlighting, and a Nerd Font for the icons. The prompt colors are tuned for a dark background.

Notes

  • Tested on macOS with Ghostty. The zsh and zellij parts are portable; ghostty/config is not.
  • zellij 0.45 can't combine -s with -l, so bento writes the session name into a generated layout under ~/.cache/zellij-bento/.
  • Declaring local path in a zsh function destroys PATH inside it — zsh ties the two. Worth knowing before editing these functions.

About

Terminal workspace for running coding agents across parallel git worktrees — zellij, zsh, silent build signals

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages