Skip to main content

Agent package manager for .agents/ directories

Project description

mars

Mars is a package manager for agent directories. It installs agent profiles and skills from git and local sources into a .mars/ canonical store, records ownership in mars.lock, and copies managed content into configured target directories (.agents/, .claude/, .cursor/, etc.).

Quick Start

# Initialize with a target directory
mars init --link .claude

# Add sources
mars add meridian-flow/meridian-base
mars add meridian-flow/meridian-dev-workflow

# See what's installed
mars list

# Explain why an item is present
mars why reviewer

Why Mars

  • Install agents and skills from multiple sources into one managed tree
  • Resolve versions and transitive source dependencies before installation
  • Keep syncs safe: resolve full desired state, then apply atomically
  • Track ownership and checksums in mars.lock so managed and unmanaged files coexist
  • Copy managed content to multiple target directories (.agents/, .claude/, etc.)
  • Support day-to-day maintenance: upgrades, outdated checks, local overrides, rename rules, conflict resolution, repair flows
  • Package-distributed model aliases — no hardcoded builtins in the binary

Where Mars Fits

Mars is not an agent runtime. It sits underneath tools like Claude Code, Cursor, and Codex and manages the agent assets they read.

Alternative What Mars adds
Native .claude/agents Multi-source installs, versioning, lockfile-backed ownership, safer syncs, recovery
Skill installers Both agents and skills, explicit desired state in config, conflict handling, repair
Git submodules / vendored folders Real resolution, diff, plan, and apply pipeline

Install

Method Command
Cargo (crate) cargo install mars-agents
Cargo (latest main) cargo install --git https://github.com/meridian-flow/mars-agents
Python (pipx) pipx install mars-agents
Python (uv tool) uv tool install mars-agents
Python (pip) pip install mars-agents
npm npm install -g @meridian-flow/mars-agents
From source cargo install --path .

Prebuilt binaries: https://github.com/meridian-flow/mars-agents/releases

Platforms: macOS arm64/x64, Linux arm64/x64 (glibc). Others: build from source.

Source Inputs

Form Example
GitHub shorthand owner/repo or owner/repo@^1.0
HTTPS URL https://github.com/owner/repo
SSH URL git@github.com:owner/repo.git
Local path ../my-agents or /absolute/path

Commands

Area Commands
Source management add, remove, upgrade, outdated, override
Resolution Semver constraints, transitive deps, lockfile-backed replay
Install & reconcile sync, rename, resolve
Inspection list, why
Targets init [--link], managed target configuration via settings.targets
Model aliases models list, models refresh, models resolve
Validation & recovery check, doctor, repair
Cache cache info, cache clean

Global flags: --root <PATH>, --json.

How It Works

mars.toml + mars.lock (committed)
        ↓ mars sync
    .mars/ (canonical store, gitignored)
        ↓ copy to each target
    .agents/, .claude/, .cursor/ (committed, may contain non-mars content)

Every mutating command runs a typed pipeline:

load_config → resolve_graph → build_target → create_plan → apply_plan → sync_targets → finalize
  1. Resolve — fetch sources, discover transitive deps, merge model aliases from dependency tree
  2. Build target — discover items, apply filters, detect collisions
  3. Plan — diff desired state against lock + disk
  4. Apply — write resolved content to .mars/ (atomic writes via tmp+rename)
  5. Sync targets — copy from .mars/ to each configured target directory (never deletes files mars didn't create)
  6. Finalize — write lock, persist dependency model aliases, build report

Managed Layout

project/
  mars.toml          # Dependency config (committed)
  mars.lock          # Ownership registry (committed)
  mars.local.toml    # Dev overrides (gitignored)
  .mars/             # Canonical store (gitignored)
    agents/          # Resolved agent profiles
    skills/          # Resolved skills
    models-cache.json      # Cached model catalog
    models-merged.json     # Dependency-sourced model aliases
  .agents/           # Target directory (committed, may have non-mars content)
    agents/
    skills/
  .claude/           # Another target (committed)
    agents/
    skills/

Model Aliases

Model aliases are package-distributed — no builtins in the mars binary. Packages define aliases in their mars.toml under [models]:

# Pinned — explicit model ID
[models.opus]
harness = "claude"
model = "claude-opus-4-6"

# Auto-resolve — pattern matching against cached model catalog
[models.sonnet]
harness = "claude"
provider = "Anthropic"
match = ["sonnet"]
exclude = ["thinking"]

Merge precedence: consumer config > dependencies (declaration order, first wins).

mars models refresh          # Fetch model catalog from API
mars models list             # Show all aliases (deps + consumer config)
mars models list --include "opus*,sonnet*"   # Show only matching aliases
mars models list --exclude "experimental-*"   # Hide matching aliases
mars models resolve opus     # Resolve an alias to a concrete model ID

--include and --exclude are mutually exclusive. Both override [settings.model_visibility] for that command run.

mars.toml Example

[dependencies.base]
url = "https://github.com/meridian-flow/meridian-base"
version = "^1.0"

[dependencies.dev]
path = "../my-dev-agents"

[dependencies.ops]
url = "https://github.com/acme/ops-agents"
only_skills = true

[models.opus]
harness = "claude"
provider = "Anthropic"
match = ["opus"]

[settings]
targets = [".agents", ".claude"]

After editing mars.toml, run mars sync to apply changes.

Documentation

Detailed documentation is in docs/:

  • Overview — Core concepts and quick start
  • Configurationmars.toml reference: all fields, filter modes, settings
  • CLI Reference — Every subcommand with flags, examples, and behavior
  • Sync Pipeline — How sync works: resolve → target → diff → apply → sync targets → finalize
  • Conflicts — Collision handling, merge, conflict resolution
  • Lock File — Lock file format and semantics
  • Local Development — Overrides, local paths, submodules
  • Troubleshootingmars doctor, mars repair, common problems

Design Constraints

  • Resolve first, then act. If resolution fails, nothing is mutated.
  • Config, lock, and installed files use atomic writes (tmp+rename).
  • mars.lock is the authority for what Mars manages.
  • Target directories are shared — mars never deletes files it didn't create.
  • User intent comes from explicit flags and arguments, not heuristics.
  • No builtin model aliases — all aliases come from packages or consumer config.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mars_agents-0.0.13.tar.gz (214.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mars_agents-0.0.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

mars_agents-0.0.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

mars_agents-0.0.13-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

mars_agents-0.0.13-py3-none-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file mars_agents-0.0.13.tar.gz.

File metadata

  • Download URL: mars_agents-0.0.13.tar.gz
  • Upload date:
  • Size: 214.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mars_agents-0.0.13.tar.gz
Algorithm Hash digest
SHA256 f42b09a1b8941043970d735b210f00d72ad9f0c28b8a20e5b79750aaba107bd2
MD5 9c62bce56fd5bf25b1915193331cf05c
BLAKE2b-256 4210e3f53f2695908a3180dcbcec26db92cd9ec9e4abb732c413f59b30a5aca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for mars_agents-0.0.13.tar.gz:

Publisher: release.yml on meridian-flow/mars-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mars_agents-0.0.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5d19ac0f9d86e0d6bf46b41ab2a49444e658778e41c9e74e50dcd763a53e4d3
MD5 c87714b67c26a104fcf7dcb48c735229
BLAKE2b-256 7e4703968162624dce562a86ebd219f25acfb85cff2483af3dd8d39fdaba5bf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for mars_agents-0.0.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on meridian-flow/mars-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mars_agents-0.0.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 43d3700e25d17f7ff4ca13fe3af650677d3409522d2fca31ac71da9180a2ef85
MD5 fc8e6b45dc9bed4d226f86248236d81e
BLAKE2b-256 914c197ae82657ad3c156763795d5130a7ab7947d56554da2cc1d9e6660e7ad7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mars_agents-0.0.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on meridian-flow/mars-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mars_agents-0.0.13-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.13-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd2adae268776e37b290ec7e6838351d58f8ca50fb339fecdd7692c9cbfe1b64
MD5 c29c0a35596de0ffddfb4be04535575a
BLAKE2b-256 4bf453e12450401371bea5b87b185c8aed10f0682d8dddcddbd70e5bb8c1ee00

See more details on using hashes here.

Provenance

The following attestation bundles were made for mars_agents-0.0.13-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on meridian-flow/mars-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mars_agents-0.0.13-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.13-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 172ecc54eb813af3e3cbb26806d0fbc5f30a4dc88e95842ce14f094ede6a43f1
MD5 ecdd69ce5ac3de39c6a6ebe6d5ce215e
BLAKE2b-256 d83403899e9447f29f061263c9c4f50936db81a40c0826b30de952dabcc649fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for mars_agents-0.0.13-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on meridian-flow/mars-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page