# revmux

> Supervised multi-agent review driven by your coding agent: spawns claude and codex subprocesses, watches them, returns verified findings as JSON

revmux runs a structured multi-agent review by spawning and supervising `claude --print` and `codex exec` subprocesses, then returning findings on stdout. It is normally launched by a coding agent rather than typed by a user: the shipped skill resolves what is under review, writes the context to disk, runs revmux and reads the report back, so revmux is a black box with a stable contract, context in and a verified report out. The subject need not be code. A branch, a pull request, a design document, an implementation plan, a proposal or a filed issue all go in the same way. It exists because agent fan-out driven from inside an AI coding session is unobservable and unrecoverable: agents go quiet for minutes, sometimes never return, and the caller has no timeout, no kill, no retry and no progress. A subprocess does not make the model faster. What it buys is control: a watchdog that notices a stall, a kill and retry the caller owns, a live view of every agent, per-agent token counts, and a run archive that can be audited afterwards.

revmux runs a review and returns findings, and does nothing else. It performs no scope detection, no git operations, no PR fetching and no source modification, and it has zero VCS dependency. All review context is written to disk by the caller as a task round and passed in with `--task` and `--run`.

## Key Features

- Three fixed stages: parallel find across a roster of lens agents, one synthesis call that dedupes and boosts corroborated findings, then parallel verification grouped so no verifier anchors on a neighbour
- Supervision: per-finder idle and hard timeouts, one automatic retry, and degrade-rather-than-abort with the missing source named in the report; verification is single-attempt and leaves a failed group `unverified` rather than dropping its findings
- Cross-source confidence: a source is a process, never a lens, so an agent cannot corroborate itself; revmux stamps the attribution itself and no schema exposes it to the model
- Profiles and lenses are files resolved per file across project, user and embedded layers; the eight shipped profiles are starting points, and adding a file under `prompts/profiles/` or `lenses/` is all it takes to have your own
- A profile composes any number of agents, each with its own lens set and optionally its own binary, model and effort, and the two stages choose separately, so one review can mix vendors and effort levels
- Checked into `.revmux/`, that tree is the project's review standard: versioned, diffable, and run by everyone who clones the repository, so a contributor gets the review a maintainer would have run
- One `model:` string per agent or stage selects binary, model and effort together, so claude and codex mix inside one review
- Run archive per round: composed prompts, verbatim agent output, per-stage findings, an event log of stalls and retries, and a manifest recording prompt provenance and requested vs actual model
- Task rounds: a review, some fixes, another round, with prior rounds injected into every prompt along with an instruction to judge them independently
- Terminal UI with a per-process status table and a findings browser, or timestamped stderr lines with `--no-tui`
- JSON on stdout by default with `--markdown` as the alternative, and exit codes 0, 1, 2 that callers script against
- Issue triage as a second job: point it at an issue, proposal or discussion and the `triage` profile runs a four-way panel (is the claim true of the code today, how comparable asks were decided before, the case for, the case against, what the work reaches into), returning arguments for a maintainer to weigh rather than a verdict
- Caller shipped as an agent skill for Claude Code and Codex CLI, including a launcher that runs the TUI in a terminal overlay

## Docs

- [Documentation](https://revmux.com/docs): the full user guide covering install, task rounds, the three stages, profiles, lenses, configuration, the report, the run archive, the terminal UI and every subcommand
- [Reference](https://revmux.com/reference): every flag, config key, front-matter key, lens, prompt variable, JSON field, verdict and exit code
- [README](https://github.com/umputun/revmux/blob/master/README.md): the project synopsis, with install and a quick start

## Install

- Homebrew on macOS: `brew install umputun/apps/revmux`
- [Releases](https://github.com/umputun/revmux/releases): prebuilt binaries for macOS and Linux on amd64 and arm64, plus `.deb` and `.rpm` packages
- With a Go toolchain: `go install github.com/umputun/revmux/app@latest` (installs as `app`, rename it to `revmux`)
- From a clone: `make build` produces `.bin/revmux`, `make install` symlinks it into `/usr/local/bin`
- The model CLIs the chosen profile names must be installed and authenticated; `preflight.sh` in the shipped skill checks any invocation

## Optional

- [Home page](https://revmux.com): what it does, the pipeline, the archive and the shipped profiles
- [Source](https://github.com/umputun/revmux): MIT licensed
- [Issues](https://github.com/umputun/revmux/issues): bug reports
- [agterm](https://agterm.com): the terminal whose overlay the shipped launcher uses to show a live review
