Skip to content

grikwong/crossagent

Crossagent logo

Crossagent

No single AI model should be both the maker and the checker. Crossagent is a cross-model agent orchestrator that routes planning and implementation to one AI, then review and verification to another — the same maker-checker principle that makes human code review effective, applied to AI agents.

License: AGPL-3.0-or-later Security Check Release Homebrew

Installation | Troubleshooting | Architecture

┌────────┐  plan.md  ┌────────┐  review.md  ┌────────┐  changes ┌────────┐
│ 1.PLAN ├──────────►│2.REVIEW├────────────►│3.IMPL  ├─────────►│4.VERIFY│
│ Claude │           │ Codex  │             │ Claude │          │ Codex  │
└────────┘           └────────┘             └────────┘          └────────┘

The pipeline-timeline UI running a live workflow — phase execution in the terminal drawer, real-time status on the board, and rendered artifacts in the reader.

Crossagent pipeline-timeline UI: a workflow progressing through Plan → Review → Implement → Verify with live terminal output and rendered artifacts

Why Crossagent?

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. Crossagent exists because no single AI model should be both the maker and the checker.

We couldn't find any tool that addressed all of these problems at once, so we built one.

Eliminate agent bias with cross-model review

This is the primary driver behind Crossagent. Most AI coding tools use one model for everything. Crossagent breaks that pattern by routing execution and review to different AI providers — Claude builds, Codex reviews (or vice versa). A second model with a different training lineage catches assumptions, blind spots, and failure modes that self-review misses. This maker-checker separation is the same principle that makes code review between humans effective, applied to AI agents.

Transparent context engineering

Every input and output — plans, reviews, prompts, memory — is a plain file you can inspect, edit, and version-control. Nothing is hidden in opaque embeddings or databases. You can read exactly what your agents see and override anything before the next phase runs.

Autonomous execution with sandboxed safety

No more clicking "approve" on every file edit. Crossagent runs agents in full auto-execute mode within a sandbox that only has access to the directories you explicitly specify. If the verification phase fails, it automatically retries the implement-verify cycle. Hands-off execution with guardrails — not hands-off with fingers crossed.

Auto-improving memory across projects

Every workflow builds knowledge. Crossagent maintains three tiers of persistent memory — global, project, and workflow — and feeds it back into future runs automatically. Codebase patterns, conventions, lessons learned, and domain context compound across repositories. The tool gets smarter with every run instead of starting from zero each time.

Predictable, fixed-cost billing

Crossagent runs on top of CLI tools that use subscription-based plans (Claude Code via Claude Pro/Max, Codex CLI via ChatGPT Pro), not per-token API billing. No surprise invoices, no cost anxiety mid-workflow. You know what you're paying before you start.

Advanced Features

  • Atomic State Management: All state transitions (phase bumps, configuration changes, memory updates) use atomic writes and file locking. This prevents data corruption even if the CLI and Web UI access the same workflow simultaneously.
  • Multi-Round Iteration: Finished a feature? Use the Follow-up feature to archive all current artifacts into a numbered "round" and reset to Phase 1. Subsequent rounds automatically carry over relevant context from previous iterations.
  • Searchable Workflow Picker: Manage hundreds of workflows with ease using the project-grouped, searchable picker. Supports type-to-filter and full keyboard navigation.
  • Deep Observability: Every retry attempt is preserved. View archived plan.md versions and their corresponding chat logs directly in the Web UI to understand exactly why a phase was retried.
  • Pipeline-Timeline UI: The default web layout shows all four phases as a progress board with live status indicators, a collapsible terminal drawer, and an artifact reader with metadata rail — density and drawer state persist across reloads.
  • Concurrent Session Safety: The server atomically deduplicates spawn requests; a second browser tab connecting to the same workflow phase reattaches to the running session rather than spawning a duplicate PTY.

Installation

Prerequisites

Install via Homebrew (macOS / Linux)

brew tap grikwong/tap
brew install crossagent

Install from Source

Requires Go 1.25+.

git clone https://github.com/grikwong/crossagent.git
cd crossagent
make install           # Builds and installs to /usr/local/bin (may prompt for sudo)
More install options
make build                          # Compile without installing
make install PREFIX=$HOME/.local    # User-local (~/.local/bin)
go install github.com/grikwong/crossagent/cmd/crossagent@latest

Windows: Use WSL and follow the steps above. Native Windows is not supported (Unix PTY dependency).

Launch

make start    # Build + launch Web UI at http://localhost:3456
make check    # Preflight checks + auto-install + build (no server launch)
crossagent serve --open   # Or run directly with browser auto-open

On macOS, make check will detect missing dependencies and offer to install them automatically via Homebrew. Set CROSSAGENT_AUTO_INSTALL=1 to skip the prompt (auto-yes) or CROSSAGENT_AUTO_INSTALL=0 for report-only mode.

Your first workflow

  1. Click + — enter a name, repo path, and feature description.
  2. Run Plan — Claude writes plan.md. Review it in the artifact sidebar.
  3. Run Review — Codex reviews the plan and writes review.md.
  4. Run Implement — Claude implements per the reviewed plan.
  5. Run Verify — Codex examines the diff and writes verify.md.

How Each Phase Works

Phase Agent Produces Key outputs
1. Plan Claude Code plan.md Overview, affected files, implementation phases, test gates, risks
2. Review Codex CLI review.md Edge cases, correctness, security, verdict (APPROVE / APPROVE WITH CHANGES / REQUEST REWORK)
3. Implement Claude Code Code changes Reads plan + review. Use --phase N for sub-phases
4. Verify Codex CLI verify.md Status (PASS / FAIL), plan drift, issues, ship recommendation

Web UI Controls

The default layout is the pipeline-timeline view: a top titlebar with workflow selector and search, a phase board showing all four phases in order, a collapsible terminal drawer at the bottom, and an artifact reader with an info rail on the right.

Control Action
Run [Phase] Starts the current phase in the embedded terminal drawer
Advance Manually advance to the next phase
Done Mark the workflow complete
Artifact reader Click any phase card or artifact tab to view rendered markdown
Terminal drawer Collapse or expand the terminal (state persists across reloads)
Workflow selector Switch between workflows; supports type-to-filter search
Description (pencil) Edit the feature description — only available before the workflow has started

Environment variables: CROSSAGENT_PORT (default 3456), CROSSAGENT_HOME (default ~/.crossagent).

CLI Reference

The CLI is the engine under the Web UI. It also works standalone.

Workflows

crossagent new <name> [--repo <path>] [--add-dir <path>]...
crossagent status [--json]
crossagent list [--json]
crossagent use <name>
crossagent reset <name>

Phases

crossagent plan [--force]
crossagent review [--force]
crossagent implement [--phase <n>] [--force]
crossagent verify [--force]
crossagent next                     # Run whatever comes next

Projects

Workflows are grouped under projects (defaults to default). Projects provide scoped memory shared across related workflows.

crossagent projects list [--json]
crossagent projects new <name>
crossagent projects delete <name>
crossagent projects show <name> [--json]
crossagent projects rename <old> <new>
crossagent projects suggest [--description <text>] [--json]
crossagent move <workflow> --project <project>

Memory

Three tiers: workflow (memory.md), project (~/.crossagent/projects/<name>/memory/), and global (~/.crossagent/memory/).

crossagent memory show [--global|--project [name]] [--json]
crossagent memory list [--global|--project [name]] [--json]
crossagent memory edit [--global|--project [name]]

Agents

Ships with builtin claude, codex, and gemini agents. Register custom agents and reassign phases:

crossagent agents list [--json]
crossagent agents add <name> --adapter <claude|codex|gemini> [--command <cmd>] [--display-name <name>]
crossagent agents remove <name>
crossagent agents show [--workflow <name>] [--json]
crossagent agents assign <phase> <agent> [--workflow <name>]
crossagent agents reset <phase> [--workflow <name>]
crossagent agents autoselect [--workflow <name>] [--json]

Adapters are constrained to claude, codex, or gemini — the three supported CLI protocols (each encodes a different set of flag conventions, sandbox controls, and prompt-passing mechanics). Pick the adapter that matches the binary you're wiring up. Custom agents can override the binary path via --command (for example to run a specific Gemini binary name):

crossagent agents add gemini-pro --adapter gemini --command gemini --display-name "Gemini Pro"
crossagent agents assign plan gemini-pro

Auto-select heuristic

agents autoselect picks an agent for each phase of a workflow based on the currently registered agents (case-insensitive substring match on name and display name):

Phase Preference order
plan geminiclaudecodex → first
review codex/gptclaude → first
implement claudecodex → first
verify geminicodexclaude → first

With only the builtin agents installed, the heuristic picks gemini for plan and verify (since a gemini builtin is now registered), while implement stays on claude and review stays on codex. If the gemini binary isn't installed on PATH, launching those phases will surface a "command not found" error — reassign with agents assign or remove the gemini builtin expectation by picking an explicit agent per phase.

Managing models in the Web UI

The Web UI exposes the same controls:

  • Models button in the top bar opens a modal for listing, adding, and deleting agents (builtins cannot be deleted).
  • The ⚙ gear in the sidebar Phases header opens the same modal scrolled to per-phase assignment dropdowns for the active workflow.
  • The ✨ Auto-select button inside the modal runs agents autoselect for the active workflow.

Navigation and automation

crossagent advance                  # Manually advance phase
crossagent done                     # Mark workflow complete
crossagent log                      # Display all artifacts
crossagent open                     # Open workflow directory
crossagent phase-cmd <phase> --json # Launch params without executing (used by Web UI)

Multi-Repo Workflows

crossagent new cross-repo-feature \
  --repo ~/projects/backend \
  --add-dir ~/projects/frontend \
  --add-dir ~/projects/shared-types

All agents get access to all specified directories.

Tips

  • Don't skip review. It catches architectural issues before you spend time implementing.
  • Use sub-phases. Break implementation into small testable chunks with --phase N.
  • Read the artifacts. They're your documentation — plan, review, verification report.
  • Force re-runs. If a phase produced poor results, use --force to redo it.

Project Status

Crossagent is free, open source, and local-first. It is usable today but should be treated as operator tooling for technically capable users who can install the required CLIs and review generated output.

Architecture

Crossagent is a single Go binary with an embedded HTTP/WebSocket server and vanilla JS frontend. See docs/architecture.md for the full architecture document.

Layer Role Location
Core Go binary — state, agents, prompts, judging cmd/, internal/
Integration --json output for machine consumption CLI flags
Web UI Embedded Go HTTP/WebSocket server + vanilla JS frontend internal/web/

Two external Go dependencies: github.com/creack/pty (Unix PTY allocation) and github.com/gorilla/websocket (WebSocket server for terminal streaming).

Source layout
crossagent/
├── cmd/crossagent/main.go       # CLI entry point (includes serve command)
├── internal/
│   ├── state/                   # Config, workflow, project, memory
│   ├── agent/                   # Agent registry, phase assignments, launcher
│   ├── cli/                     # JSON types, ordered serialization
│   ├── prompt/                  # Template-based prompt generation & memory context
│   │   └── templates/           # Embedded Go templates
│   ├── judge/                   # Verdict parsing for review & verify
│   └── web/                     # Embedded HTTP/WebSocket server + frontend assets
│       ├── server.go            # HTTP server setup, routes, static file serving
│       ├── api.go               # REST API handlers (23 endpoints)
│       ├── terminal.go          # WebSocket + PTY handler, chat history capture
│       ├── session.go           # SessionManager — PTY session lifecycle & spawn dedup
│       ├── embed.go             # go:embed directive for frontend assets
│       └── public/              # Vanilla JS frontend (HTML, CSS, JS, vendored libs)
│           ├── js/              # ES modules (state.js, api.js, util.js, derive.js, …)
│           │   └── regions/     # Per-region components (pipeline-board, terminal-drawer, …)
│           ├── pipeline.css     # Pipeline-timeline layout styles
│           └── terminal-drawer.css
├── web/                         # Legacy Node.js server (retained for reference)
├── test/                        # Integration tests
├── docs/                        # Architecture document
└── Makefile

State is stored in ~/.crossagent/ — workflows, projects, agents, and memory tiers are all plain files.

Troubleshooting

Agent CLI not found — Crossagent requires claude and codex CLI tools to be installed and authenticated. Install Claude Code and Codex CLI, then run each once to authenticate.

Web UI not loading — Check if port 3456 is already in use: lsof -i :3456. Use CROSSAGENT_PORT=8080 crossagent serve to specify an alternate port. If the binary was built without the embedded frontend, rebuild with make build.

Permission errors on ~/.crossagent/ — Crossagent now automatically canonicalizes all symlinks (resolving /Users vs /private/var/users on macOS) and explicitly authorizes the ~/.crossagent home directory to avoid sandbox write failures. If issues persist, ensure the directory is owned by your user: ls -la ~/.crossagent. Fix with chown -R $(whoami) ~/.crossagent if needed.

PTY session failures — PTY allocation requires a Unix-like OS (macOS or Linux). Windows is not natively supported; use WSL. If PTY errors persist, ensure your terminal emulator supports pseudo-terminals.

Development

make build    # Compile
make test     # Unit + integration tests
make clean    # Remove build artifacts
make check    # Preflight checks + auto-install + build
make start    # Preflight checks + auto-install + build + launch Web UI

Uninstall

make uninstall          # Removes CLI binary
rm -rf ~/.crossagent    # Removes all workflow data

License

AGPL-3.0-or-later — free for commercial use. If you modify Crossagent and serve it to users (including over a network), you must share the source under the same license.

Contributing

See CONTRIBUTING.md and CODE_OF_CONDUCT.md. Open an issue before large changes.

Contributors

See CONTRIBUTORS.md.

Security

Report vulnerabilities via SECURITY.md. Do not open public issues for undisclosed vulnerabilities.

About

Cross-model AI agent orchestrator with a local web UI, pairing Claude Code and Codex CLI across plan, review, implement, and verify phases.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors