marver 0.0.10

A TUI workspace for AI agent sessions: tmux orchestration, git worktree management, and repo control in one place.
Documentation
# 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.