Skip to content

Model Peer v0.3.0

Choose a tag to compare

@makedirectory makedirectory released this 10 Aug 23:41
· 10 commits to main since this release
ba0ed9c

Repository setup and orchestration robustness. model-peer init closes the gap between installing the tool and an agent ever using it; the review path is hardened against the failure modes that cost a whole run.

Install

curl -fsSL https://raw.githubusercontent.com/makedirectory/ModelPeer/v0.3.0/install.sh | bash

Docs: https://modelpeer.app

Set up a repository

Installing Model Peer globally gives you a command. It does not give the coding agent in your repository a habit. One command per project fixes that:

cd ~/code/your-project
model-peer init
  created   AGENTS.md
  linked    CLAUDE.md -> AGENTS.md
  linked    GEMINI.md -> AGENTS.md
  created   .claude/commands/peer-review.md (/peer-review)

--split writes one tailored file per CLI instead, each addressing that model directly and naming its two peers, so each harness loads only its own: .claude/rules/cross-model-consultation.md, AGENTS.md, GEMINI.md.

These are the paths each CLI genuinely loads, verified against the shipping binaries. .codex/rules/*.md and .gemini/global_rules.md look tidy and are never read, so init will not create them.

Rules live between <!-- BEGIN MODEL PEER RULES --> markers. Content outside them is never rewritten, so init appends below an existing AGENTS.md, is safe to re-run, and refreshes in place after an upgrade. model-peer rules check exits 1 on a missing or stale block, for CI.

Review robustness

  • Bounded consultations. --timeout (600s default, 0 disables, MODEL_PEER_TIMEOUT), a 30s stderr heartbeat, exit 124 on timeout.
  • Hangs actually die. On timeout the peer's whole process group is signalled. Killing only the direct child left vendor helper processes holding the inherited stdout, so the downstream pipeline never saw EOF and the hang survived the kill.
  • Partial panels. A reviewer that times out, fails, or exits 0 with zero output is dropped and named. Synthesis proceeds while at least two reviewers produced a real review and is refused below that. The synthesizer is told which reviewers are missing, so a partial panel is never reported as complete. --strict restores refuse-on-any-failure.

Fixed

  • Untracked files were invisible to reviewers. git diff HEAD cannot see them, and git status --short collapses a new directory to a single ?? src/ line — an entire new package reached reviewers as one path with no filenames and no contents. Context now includes an add-diff for every untracked, non-ignored file.
  • Gemini failed silently in untrusted directories. Its folder-trust gate refuses to work headlessly and exits 0 having produced nothing, which a panel read as "this reviewer found no issues". Model Peer now passes --skip-trust, feature-detected from gemini --help. This does not widen the boundary.
  • An empty review counted as a clean review.

Docs

New pages: In your workflow and Troubleshooting. The site moved to its own domain, https://modelpeer.app.

Full notes in CHANGELOG.md.

Full Changelog: v0.2.0...v0.3.0