AI Tooling Package Manager — Manage skills, commands, and MCP connectors for AI agents.
# Build
cargo build --release
cp target/release/mai ~/.local/bin/
# Switch AI tool
mai use qwen
# Install packs (local by default)
mai install aif
mai install mcp/postgres
# Install globally (user-wide)
mai install -g aif
# List packs
mai list| Command | Description |
|---|---|
mai use <tool> |
Switch active AI tool |
mai install <pack> |
Install pack (skill/command/mcp) |
mai install -g <pack> |
Install pack globally (user-wide) |
mai list |
List installed packs |
mai list --global |
List only global packs |
mai list --local |
List only local packs |
mai init |
Initialize a new mai project |
mai sync |
Sync project packs with registry |
mai check |
Verify lock file integrity |
mai remove <pack> |
Remove pack |
mai remove -g <pack> |
Remove global pack |
mai update <pack> |
Update pack |
mai update -g <pack> |
Update global pack |
mai completions |
Shell completions |
Pack format: [type/]name[@version]
Example: skill/aif@1.0.0, mcp/postgres, latest
mai supports two installation scopes, similar to how cargo handles dependencies:
Local installations are project-specific. Packs are stored in the .mai/ directory within your project root.
# Install locally (default)
mai install aif
# Creates:
# .mai/
# ├── config/
# │ └── config.toml
# ├── packs/
# │ └── qwen/
# │ └── aif/
# │ └── 1.0.0/
# └── cache/Local installations are ideal for:
- Project-specific AI tools and skills
- Team-shared configurations (commit
.mai/to version control) - Isolating dependencies per project
Global installations are user-wide. Packs are stored in XDG directories (or fallback to ~/.mai/).
# Install globally
mai install -g aif
# Creates (on Linux with XDG):
# ~/.config/mai/config.toml
# ~/.local/share/mai/packs/
# ~/.cache/mai/
# Or fallback (if XDG not available):
# ~/.mai/
# ├── config/
# ├── packs/
# └── cache/Global installations are ideal for:
- Commonly used skills across all projects
- Personal AI tooling preferences
- System-wide MCP connectors
When resolving packs, mai checks in this order:
- Local (
.mai/packs/) — takes priority - Global (
~/.local/share/mai/packs/or XDG equivalent)
This allows you to override global packs with project-specific versions.
A pack (package) is a collection of AI tools and utilities. A pack can contain:
- Skills — AI agent capabilities and behaviors
- Commands — CLI tools for AI assistants
- MCPs — Model Context Protocol connectors
Packs are tool-specific, meaning they must be installed separately for each AI tool (Qwen, Claude, Cursor, etc.). Use mai use <tool> to switch between tools and configure them independently.
Global (XDG):
~/.config/mai/ # Config (config.toml)
~/.local/share/mai/ # Pack storage
~/.cache/mai/ # Cache
Fallback (if XDG not available):
~/.mai/ # All data in one location
Local (per project):
.mai/ # Project root
├── config/
│ └── config.toml
├── packs/
│ └── <tool>/
│ └── <pack>/
│ └── <version>/
└── cache/
mai.toml — Project manifest:
[project]
name = "my-ai-project"
[[dependencies]]
tool = "qwen"
name = "aif"
type = "skill"
version = "^1.0.0"
[[dependencies]]
tool = "qwen"
name = "postgres"
type = "mcp"
version = "latest"mai.lock — Pinned versions (auto-generated).
cargo build
cargo test
cargo clippy -- -D warningsLogging: LOG_LEVEL=debug cargo run -- list
| Guide | Description |
|---|---|
| Getting Started | Quick start tutorial |
| CLI Reference | Complete command docs |
| Project Config | mai.toml and mai.lock |
| Versioning | Semver and version ranges |
MIT