meridian-cli
Let coding harnesses call each other. meridian-cli lets agents running in Claude Code, Codex CLI, and OpenCode spawn named specialist agents in the other harnesses, each with the model, cost, and tool environment you configured.
It is for people who already use more than one AI coding CLI and want one team of agents instead of separate chat sessions.
Early development. meridian-cli is not stable. Expect breaking changes in any release. If you need a stable workflow, this project is not ready for you yet.
Why
Good agentic coding is an allocation problem. Some tasks need the strongest model you have; some need cheap, parallel throughput; some need a specific harness feature such as sandboxing, tool behavior, context handling, or integrations.
Without meridian-cli, those choices are trapped inside separate CLIs. Switching harnesses means manually copying context between sessions and hoping the next agent understands what happened.
meridian-cli turns that handoff into a command. A caller can delegate to a named specialist, pass only the context that agent needs, and pick up the result from disk. Use the expensive model where judgment matters, use cheaper agents where throughput matters, and keep every agent inside the harness that fits the job.
One Harness Can Call Another
Demo placeholder: add a short terminal recording or screenshot here showing one coding harness spawning an agent in another harness, then collecting the result with
meridian spawn waitormeridian spawn show.
Install
uv tool install meridian-cli
The package is meridian-cli; the command it installs is meridian.
Other methods
pipx install meridian-cli
pip install meridian-cli
From source:
git clone https://github.com/haowjy/meridian-cli.git
cd meridian-cli
uv tool install --force . --no-cache --reinstall
You need at least one harness installed: Claude Code, Codex CLI, or OpenCode.
Set Up a Project
meridian init by itself only bootstraps meridian-cli project config:
meridian init
To initialize Mars package content in the same step, use setup flags:
meridian init --add haowjy/meridian-dev-workflow --link .claude
For first-run onboarding, bootstrap can do setup + launch in one command:
meridian bootstrap --add haowjy/meridian-dev-workflow --link .claude
--add / --link setup flags cannot be combined with --dry-run.
Usage
Launch an interactive session:
meridian
Or spawn agents directly:
# Code on Codex, review on Claude
meridian spawn -a coder -p "Add rate limiting to the API endpoints"
meridian spawn -a reviewer --from p1 -p "Review the rate limiting implementation"
# Check on work
meridian spawn list
meridian spawn show p1
Agents route to their configured model and harness automatically. Each spawn gets a fresh context window with only the context it needs.
Architecture
graph TB
User([You]) --> Primary["meridian<br/>(primary session)"]
subgraph Packages
Sources["git sources"] -->|"mars add/sync"| Store[".mars/"]
Store -->|"materialize targets"| Tool[".claude/ · .cursor/ · .codex/ · .opencode/ · .pi/"]
end
subgraph Runtime
Primary -->|"meridian spawn"| Router{"Model router"}
Router --> Claude["Claude Code"]
Router --> Codex["Codex CLI"]
Router --> OpenCode["OpenCode"]
end
subgraph State[".meridian/"]
Spawns["spawns + reports"]
Sessions["sessions"]
Work["work items"]
end
Agents --> Primary
Primary --> State
Claude & Codex & OpenCode -->|"meridian CLI"| State
Agent Packages
meridian-dev-workflow — A dev team: architects, coders, reviewers, testers, researchers, documenters, and the orchestrators that coordinate them.
meridian-base — Core coordination primitives. Included as a dependency of meridian-dev-workflow.
Docs
- Getting Started — prerequisites, harness setup, tool integration
- Commands — full CLI reference
- Configuration — config keys, state layout, environment variables
- History — indexed discovery, ZIP retention, transfer and restore
- MCP Tools — tool surface and payload examples
- Troubleshooting — common issues and diagnostics
- INSTALL.md — agent-friendly install guide
Development
uv sync --extra dev
uv run ruff check .
uv run pytest-llm
uv run --extra dev python -m pyright
See DEVELOPMENT.md for full dev setup.
Contributing
This project is not accepting external contributions at this time. The maintainer is keeping it closed to outside contributions until the codebase is stable enough to support them well. Bug reports and feedback are welcome as GitHub issues.
License
Release files for meridian-cli 0.6.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| meridian_cli-0.6.4.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| meridian_cli-0.6.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.5 MB
Release files / meridian_cli-0.6.4.tar.gz
| Download URL | meridian_cli-0.6.4.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df01b61e8e6b5a7055d472eb39def42624ec9f119e739d344d1f102471ed840a
|
|
BLAKE2b-256 checksum How to use checksums |
3a24a866c74c518b504052786130d3af48b75463c31de420ced403be23c02db0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / meridian_cli-0.6.4-py3-none-any.whl
| Download URL | meridian_cli-0.6.4-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5644508e1c1191c0520f92540c4f0a7779250b1c6edd996afea105b5291ef293
|
|
BLAKE2b-256 checksum How to use checksums |
b186c265b77fc628d73684f062303fbc78a756bf711ebcb839f805cb86e1fca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log