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
- 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meridian_cli-0.3.29.tar.gz.
File metadata
- Download URL: meridian_cli-0.3.29.tar.gz
- Upload date:
- Size: 898.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
241fa37a95407e11868db4702265c727a86d0678175cf7b41707027ef0923e86
|
|
| MD5 |
335931ac84a860958ce442e1d6010431
|
|
| BLAKE2b-256 |
1238a3261894b9f3a1e925d4903d98c070b2b024cc7352bdc6d25195accb3c18
|
Provenance
The following attestation bundles were made for meridian_cli-0.3.29.tar.gz:
Publisher:
release.yml on haowjy/meridian-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_cli-0.3.29.tar.gz -
Subject digest:
241fa37a95407e11868db4702265c727a86d0678175cf7b41707027ef0923e86 - Sigstore transparency entry: 2134244076
- Sigstore integration time:
-
Permalink:
haowjy/meridian-cli@3805f0a7fb3c52af4c19316c1e108c71fb552c10 -
Branch / Tag:
refs/tags/v0.3.29 - Owner: https://github.com/haowjy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3805f0a7fb3c52af4c19316c1e108c71fb552c10 -
Trigger Event:
push
-
Statement type:
File details
Details for the file meridian_cli-0.3.29-py3-none-any.whl.
File metadata
- Download URL: meridian_cli-0.3.29-py3-none-any.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dcaaf27a73e416ac72501c3241a618611edca92b92d07ebabb9da1d8ef2441a
|
|
| MD5 |
086687b6e600008d664b1c08f209fbce
|
|
| BLAKE2b-256 |
225d722461bdd1316b0283f7743d4f809e289bd59ef1ebc0f551bea18d4ce700
|
Provenance
The following attestation bundles were made for meridian_cli-0.3.29-py3-none-any.whl:
Publisher:
release.yml on haowjy/meridian-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_cli-0.3.29-py3-none-any.whl -
Subject digest:
3dcaaf27a73e416ac72501c3241a618611edca92b92d07ebabb9da1d8ef2441a - Sigstore transparency entry: 2134244117
- Sigstore integration time:
-
Permalink:
haowjy/meridian-cli@3805f0a7fb3c52af4c19316c1e108c71fb552c10 -
Branch / Tag:
refs/tags/v0.3.29 - Owner: https://github.com/haowjy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3805f0a7fb3c52af4c19316c1e108c71fb552c10 -
Trigger Event:
push
-
Statement type: