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 haowjy/meridian-base
mars add haowjy/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/haowjy/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 @haowjy/mars-agents
From source cargo install --path .

Prebuilt binaries: https://github.com/haowjy/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/haowjy/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.9.tar.gz (212.9 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.9-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.9-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.9-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

mars_agents-0.0.9-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.9.tar.gz.

File metadata

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

File hashes

Hashes for mars_agents-0.0.9.tar.gz
Algorithm Hash digest
SHA256 6d6cc4f3de1df374894db393a54a3ba0ff132ba7e3e68259bf492da4da4549db
MD5 e0ba1deb2b34483cb0535ec3f02a259f
BLAKE2b-256 ee35a9a07e0c6e8ae53052989915e1c74db25888d1d9b656b41836758fd16baf

See more details on using hashes here.

Provenance

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

Publisher: release.yml on haowjy/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.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08591f8a0a594bfc48a5f554246d8ef1be14db3d28377d80bb20644166ac5f22
MD5 cdbf4a81a4e78bb960cee5ff42f11276
BLAKE2b-256 f8fe0b994ee42cf3a872b4bd676eb3979aa8a03c90cece79270f50c54e91dc8c

See more details on using hashes here.

Provenance

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

Publisher: release.yml on haowjy/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.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 87d96cc587c75f8c54e0e0253699bcdcc55c6c875c6a3e3dee7a1ba0bb735bc0
MD5 66f2b99e627f6b5ee92c2b75c1cd694f
BLAKE2b-256 5d069ac4d8b752c098f10ee6f7ce7729eb9f79ed1dc5a9a74b5309ff8abce3cd

See more details on using hashes here.

Provenance

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

Publisher: release.yml on haowjy/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.9-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0dfec51a404f7d96f3ec7d229004a500d24914f2dfecb68db80ab05ceb2e2195
MD5 46380616686e4ba18ccfa5863fa46e08
BLAKE2b-256 d3455859260048284e44a58e66dde88bce8022acc2f79b801b8f0f9a7e78167a

See more details on using hashes here.

Provenance

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

Publisher: release.yml on haowjy/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.9-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mars_agents-0.0.9-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0c4d21bd34c83dfe63a6b887648d816f3d526a9360df116bb9d9171dc4211c89
MD5 3803b7f456b02db21592e1acacb558d9
BLAKE2b-256 11a59b4e65774cda5bd4703b584c4075081f7372224cc111c62eef262088870b

See more details on using hashes here.

Provenance

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

Publisher: release.yml on haowjy/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