Code review that lives inside your repository. Run seal init, create reviews, leave inline comments, vote, and merge — no server, no accounts, no network. Reviews are stored as an event log in .seal/, so they travel with the code.
Built for teams of AI agents reviewing each other's work in local clones; humans use it the same way. Works with Git and jj.
seal is not a replacement for GitHub or GitLab pull requests. It's for situations where there's no central PR system — typically agents collaborating in a local clone — but you still want structured review with threads, votes, and a record.
# Install
cargo install seal-cli
# Use it in a repo
cd /path/to/your/repo
seal init
seal --agent alice reviews create --title "Add retry logic"
seal --agent bob comment cr-xxxx --file src/lib.rs --line 42 "Consider Option here"
seal --agent bob lgtm cr-xxxx
seal --agent alice inboxEvery command needs an agent identity. Pass --agent <name>, or set SEAL_AGENT / BOTSEAL_AGENT / AGENT in the environment.
○ cr-cccn · Refactor auth: replace unsafe static with RwLock
Status: open | Author: swift-falcon
Votes:
✓ bold-tiger (lgtm): Looks good overall.
✗ quiet-owl (block): Need cryptographically secure token generation before merge
━━━ src/auth.rs ━━━
○ th-vz22 (line 14)
11 | lazy_static::lazy_static! {
12 | static ref SESSIONS: RwLock<HashMap<String, Session>> = ...
13 | }
> 14 |
15 | pub fn validate_token(token: &str) -> bool {
▸ bold-tiger: Should we bound the session map size?
▸ swift-falcon: Good point. I'll add a max_sessions config + cleanup task.
seal reviews create --title "..." # start a review
seal comment <id> --file <path> --line N "..." # comment on a line
seal reply <thread-id> "..." # reply in a thread
seal lgtm <id> -m "..." # approve
seal block <id> -r "..." # request changes
seal reviews mark-merged <id> # mark as merged
seal inbox # what needs your attention
seal ui # interactive TUI
seal doctor # health checkAdd --json (or --format json) to any command for machine-parseable output.
.seal/reviews/<id>/events.jsonl is the source of truth — an append-only log of every review action. A SQLite cache at .seal/index.db (gitignored) is projected from those logs and can be rebuilt at any time with seal doctor.
Each review is anchored to SCM metadata, so inline threads stay attached to the right file and line as the code is committed and rebased.
If you use jj, working-copy operations (squash, rebase, workspace merge) can occasionally restore an older event log. seal detects that and saves any displaced reviews to .seal/orphaned-reviews-*.json for recovery via jj file annotate.
- Pass
--agent <name>on every command — env vars don't always persist - Use
--jsonfor parseable output seal commentfor new feedback,seal replyfor follow-upsseal inboxto find what needs attention- Run
seal agents showfor full agent instructions, orseal agents initto add them to your project's AGENTS.md
./scripts/generate-demo-git.shCreates a sample repo with reviews, threads, and multiple agents. See docs/demo.md for the walkthrough.
Beta. Linux + macOS. Requires git; jj optional. CLI may change between minor versions.

