The brief
AI coding agents are powerful, but trusting a single model to plan, implement, and judge its own work is like letting a student grade their own exam. Self-review misses the assumptions and blind spots baked into a model’s own training lineage. Crossagent exists for one reason. No single AI model should be both the maker and the checker.
What it does
The unit of work is a four-phase pipeline, Plan, Review, Implement, Verify, and each phase is routed to a chosen agent. The defaults are deliberate. Claude builds (plan + implement) and Codex checks (review + verify), so the maker and the checker are always different model families. A second model with a different lineage catches what self-review can’t.
Every phase emits a plain-file artifact (plan.md, review.md, verify.md) that you can read, edit, and version-control before the next phase runs. Nothing hides in opaque embeddings. Agents run in full auto-execute mode inside an OS sandbox scoped to only the directories you declare, and if verification fails, it auto-retries the implement-verify loop. Around that core sit a three-tier memory model (global / project / workflow) that compounds across runs, mixture-of-experts personas you assign per phase, git-worktree isolation with per-repo write policy and a typed handoff that gates completion, and multi-round Follow-up iteration that archives artifacts and resets to Plan.
How it’s built
Crossagent is a single Go binary (Go 1.25) with an embedded HTTP/WebSocket server and a vanilla-JS frontend shipped via go:embed. There is no separate web deploy, and the CLI is the engine the UI merely views. The restraint is the point. There are two external Go dependencies, creack/pty for Unix pseudo-terminals and gorilla/websocket for terminal streaming, across roughly 30,000 lines of Go.
PTY-backed sessions stream live terminal output over WebSocket. A SessionManager atomically deduplicates spawns, so a second browser tab reattaches to the running session instead of forking a duplicate PTY. Every state transition, whether phase bumps, config, or memory, uses atomic writes and file locking, so the CLI and Web UI can touch the same workflow without corrupting it. It ships through Homebrew under AGPL-3.0, with security CI and release automation.
Why it matters
Crossagent is how we apply modern AI, with the same engineering discipline we bring to everything else. That means separation of duties, inspectable artifacts, reproducible runs, and guardrails over good intentions. It’s young, about 100 commits over its first few months, and openly the frontier of the studio. But it’s built on the production-Go habits we’ve held since 2018, which is exactly why “we use AI” means something specific here rather than a slogan.
And it’s free and open source, AGPL-3.0, installable via Homebrew, with the full source public at github.com/grikwong/crossagent. The discipline we hold ourselves to isn’t a pitch deck. It’s code you can read.