# marver
A TUI workspace for AI agent sessions — tmux orchestration, git worktree
management, and repo control in one place.
Start a task, describe it, and marver opens a tmux session with an agent already
working in its own worktree. Inspired by k9s, cmux, and Warp.
> **Status: early development.** Every subsystem exists and the loop closes —
> describe a task, an agent runs it, review the diff, commit — but nothing has
> been used in anger yet. The published crate is still a name reservation.
```
marver open the interface, starting a daemon if none is running
marver status report whether a daemon is running, and what it holds
marver daemon run the scheduler and hook receiver in the foreground
marver scan [root] list the git repos it can see
marver --version print the version (-v, -V)
marver --help print usage (-h)
```
Every command takes `--data-dir` for where the database, socket, and log live,
`--scan-root` for the directory searched for repos, and `--cap` for how many
agents may run at once. The interface and the daemon find each other through
those paths, so a `--data-dir` given to one must be given to the other.
Just run `marver`. If no daemon is listening it starts one, detached, the way a
tmux client starts the server it needs — and that daemon keeps running after you
close the interface. It owns the queue: it creates a worktree per repo, opens a
tmux session, starts Claude Code with hooks pointing back at itself, and notifies
you when a task finishes or gets stuck. Its output goes to `daemon.log` beside
the database.
Run `marver daemon` yourself to watch it in the foreground or to put it under a
supervisor. Starting a second one is refused rather than allowed to displace the
first.
## Upgrading
Installing a new marver does not replace a daemon that is already running: it
keeps executing the old binary, and since it still holds the socket, nothing
starts a replacement. This is deliberate — that daemon is supervising live
agents, and restarting it underneath them would fail every task it was watching.
`marver status` reports both versions and says so when they differ. Restart at a
moment that suits you:
```
pkill -f 'marver daemon'
```
The next `marver` starts a fresh one. Agents already running in tmux are not
affected either way.
See [ARCHITECTURE.md](ARCHITECTURE.md) for the design and the reasoning behind
it.
## Requirements
`tmux` 3.x, `git`, and Claude Code.
## Name
A *marver* is the polished steel table a glassblower rolls hot glass across —
shaping the piece and controlling its temperature between trips to the furnace.
It is the surface where work takes form.
## License
MIT OR Apache-2.0, at your option.