TL;DR: install published versions with Cargo, run
magi-code, use/loginto connect provider, then launch from repository you want agent to work in.
Table of contents
- What it does
- Quick start
- Feature documentation
- Configuration essentials
- Security essentials
- Repository layout
- Project docs
- Evaluations
- License
What it does
| Capability | Included behavior | More detail |
|---|---|---|
| Repository-aware assistant | Runs from active working directory, discovers user/repo AGENTS.md, assembles prompt context, and streams provider responses. |
Instructions, prompts, skills, and primary agents |
| Multiple interfaces | Classic interactive shell, one-shot --print mode, opt-in Mission Control TUI, and experimental workspace-only --tui-experimental shell. |
Commands and interfaces, Mission Control TUI |
| Provider support | openai-codex, first-class Anthropic Messages API-key provider, direct claude-code Anthropic Messages integration using Claude Code OAuth with API-key fallback, plus configured OpenAI-compatible custom providers, with provider-authored reasoning summaries where supported and hidden chain-of-thought kept hidden. |
Provider authentication |
| Local configuration | Defaults to ~/.magi-code; supports MC_HOME for isolated profiles/tests, global non-secret settings.json, and cwd-local .magi-code/settings.json project overrides. |
Configuration |
| Bounded tools | File read/write/search, unified read for local files, internal schemes, and direct URLs, in-process grep, hashline hash_edit for tag-anchored multi-hunk edits, structural repo_map, guarded shell execution, local image inspection through configured vision models, browser control, web/code search, opt-in LSP diagnostics/references, skill loading, visible tool effects, TTSR streaming reminders, schema-validated subagent output, and safe subagent summaries. |
Tools and safety model, LSP diagnostics, Security notes |
| Sessions and context | JSONL sessions, structured replay, context budget checks with local BPE token counting, /compact checkpoints, /prune-sessions, and local cache data. |
Sessions, context, and cache |
| Extensibility | User/repo skills, prompt fragment overrides, primary-agent profiles, subagent identity profiles, tool-call hooks, and optional tool output compression. | Instructions, prompts, skills, and primary agents, Tool-call hooks, Tool output compression, Parallel subagents |
| Maintainer evals | Prompt-fixture dump, tool-choice evals, native skill benches, candidate skill gates, and SkillOpt artifact bridge live in isolated eval harness crate. | Eval harness and skill benches, Eval crate README |
| Maintainer duplicate detection | cargo-dupes and jscpd configs detect structural Rust clones and token-level duplicates across source/docs/config. |
Duplicate detection |
The crate builds one command-line binary: magi-code. If you prefer shorter command, define shell alias such as alias mc='magi-code'; this repository does not ship mc binary target.
File read defaults local files to hashline mode: [path#TAG] header plus LINE:TEXT anchors for hash_edit. Use selectors such as :raw, :50-100, or :raw:50-100 for plain text and line windows. read also accepts skill://<name>, skill://<name>/<relative-reference>, session://, issue://, pr://, and direct http/https targets through bounded internal readers. hash_edit uses latest current-session tag; after edit or stale-tag failure, use fresh response tag or re-read before more edits. Use hash_edit for existing-file edits and write for new files.
Quick start
Requirements: Rust 1.88.0+ with Cargo, provider network access, and credentials for openai-codex, anthropic, or configured custom provider. Content search runs in-process; external ripgrep is not required.
Install from crates.io:
For this release, install exact version with:
Install from this source checkout:
Generic command above installs latest published version. Use exact X.Y.Z only when intentionally selecting known published version.
Run from target repository:
Connect provider from interactive shell or environment:
/login
/login openai-codex
ANTHROPIC_API_KEY="<ANTHROPIC_API_KEY>"
# Claude Code direct HTTP path; reads Claude Code OAuth from Keychain or ~/.claude.
Launch Mission Control TUI:
Run one prompt for scripts/logs:
Add bounded local context to prompts:
Review current changes. #git-status
Map repository layout first. #tree
#git-status and #tree work in --print, classic shell, and Mission Control. Commands run from active cwd through guarded bash; failures become bounded context blocks instead of aborting prompt.
Update installed binary by reinstalling desired crates.io version:
Common slash commands: /help, /login, /logout, /setmodel, /models, /usage, /new, /changes, /rewind [--to <turn>] [--dry-run], /compact, /prune-sessions, /sessions, /skills, /tools, /subagents, /mcp, /system-prompt, /quit. Full flags, slash-command behavior, Mission Control modal keys, and prompt tags live in Commands and interfaces.
Repair broad legacy session permissions without shell commands:
Use --yes for automation. Command resolves MC_HOME, changes only validated legacy session objects, and fails closed on unsafe layouts.
Maintainer/debug prompt fixture dump:
--dump-prompt exits before authentication and prints provider-ready eval JSON. Eval harness and skill bench docs live in Eval harness and skill benches and evals/magi-code-evals/README.md.
User customization/auth files live under MC_HOME when set, otherwise ~/.magi-code; project-scoped settings can live at <cwd>/.magi-code/settings.json and override global settings for that cwd only. Full configuration and customization rules live in Configuration and Instructions, prompts, skills, and primary agents.
Provider-visible local prompt sources use bounded byte reads with per-file and startup aggregate limits; profile and skill symlinks are rejected. Details: Instructions, prompts, skills, and primary agents.
See Installation and updates for crates.io installs, manual versioned updates, source-checkout installs, and aliases.
Feature documentation
| Area | Dedicated docs |
|---|---|
| Install/update flow | Installation and updates |
| Commands and interfaces | Commands and interfaces |
| Configuration | Configuration |
| Provider login/logout | Provider authentication |
| Mission Control interface | Mission Control TUI |
| Sessions, context, cache | Sessions, context, and cache |
| Instructions, prompt templates, skills, primary agents | Instructions, prompts, skills, and primary agents |
| Built-in tools and boundaries | Tools and safety model |
| MCP stdio/HTTP tools | MCP stdio and HTTP tools |
| LSP live diagnostics | LSP diagnostics |
| Provider-visible tool summaries | Tool output compression |
| Tool-call hooks | Tool-call bash hooks |
| Subagent delegation | Parallel subagents |
| Common fixes | Troubleshooting |
| Credential and shell safety | Security notes |
| Maintainer eval harness | Eval harness and skill benches, Eval crate README |
| Maintainer duplicate detection | Duplicate detection |
Feature docs index: docs/features/
Configuration essentials
- Runtime state defaults to
~/.magi-code; setMC_HOMEto isolate runs, profiles, or tests. Diagnostics name resolvedMC_HOMEpaths. - Project overrides live only at exact cwd
<cwd>/.magi-code/settings.json; no parent-directory search. settings.jsonis non-secret;auth.jsonstores provider credentials and must stay private.--color <auto|always|never>controls ANSI color. Precedence: CLI flag >settings.no_color>NO_COLOR> auto TTY detection.NO_COLORdisables ANSI color only; Unicode marks and line editor remain TTY-gated.- Exit codes:
0success/help,1runtime/provider/tool/general failure,2usage/config/launch-validation failure. openai_responses.text_verbosityoptionally selectslow,medium, orhighfor OpenAI Responses requests. Shared value overrides legacyopenai_codex.text_verbosityfor Codex; legacy setting remains Codex fallback with defaultlow. Custom Responses providers send field only whenuse_responses_endpointandsupports_text_verbosityare both true; otherwisetextstays omitted. Hint affects visible detail, output size, latency, and cost, not reasoning effort, hidden chain-of-thought, tool calls, or hard output-token limits.selected_model.thinking_levelpersists universal values (default,low,medium,high,xhigh,max). Explicit provider catalog efforts win; built-in profiles protect known model families from generic catalog booleans; boolean reasoning metadata only enables generic effort levels for otherwise unknown models. Anthropichigh/maxmaps to Messages API thinking budgets;defaultomits thinking.anthropic_cache_ttlis optional insettings.json; accepted values are"5m"and"1h". It enables Anthropic prompt-cache request fields foranthropicand directclaude-codeproviders only. Claude Code sends no cache control when setting absent. Cache writes can increase cost; savings depend on provider cache eligibility, minimum cacheable length, and repeated prompt shape.- Precedence: CLI flags > environment variables > cwd project settings > global settings/auth > defaults.
- Configuration docs cover schema, paths, project/global merge behavior, subdirectory
AGENTS.mddiscovery, MCP servers, custom providers,view_image, hooks, tool settings, and environment variables: Configuration. - Custom providers support optional
reasoning_protocol:gpt-like(default) oranthropic-likerequest fields on existing OpenAI-compatible endpoints; it does not enable Anthropic Messages transport.gpt-likecontrols request dialect only. Exact non-empty catalogreasoning_effortsmetadata determines levels; otherwisesupports_reasoning: trueenablesdefault|low|medium|high, while missing or false metadata exposes onlydefault. Unsupported persisted levels clamp non-destructively todefault.
Optional LSP diagnostics are disabled by default. Enable them only when matching language servers are installed on PATH; LSP adds a fast edit feedback loop but does not replace cargo check, tests, or project-specific verification.
When enabled, successful write/hash_edit calls can append a redacted DIAGNOSTICS block capped at 20 diagnostics and about 2 KiB. Missing, slow, crashed, or indexing servers degrade silently for edit injection; edits still succeed or fail only by normal file-tool rules. The diagnostics tool reads cached file/workspace diagnostics, and references returns bounded path:line:column reference sites for safe paths. See LSP diagnostics.
Security essentials
- Provider credentials are assistant transport credentials only; Cargo installation uses Cargo's own authentication and is not performed by magi-code.
bash/shellhas guardrails but no OS-level isolation; sandbox hostile repositories separately.settings.jsonis non-secret. Use environment references for sensitive MCP HTTP headers; keep OAuth tokens under$MC_HOME/mcp-tokens/<server>.json.- Search tools require
EXA_API_KEYfrom process environment only.
See Security notes and Tools and safety model for full boundaries.
If normal startup reports broad session permissions, run magi-code sessions repair-permissions --dry-run, then use interactive mode or --yes. Command resolves MC_HOME, repairs only validated legacy objects, never follows links or recurses, and fails closed on unsafe layouts. See sessions, context, and cache and troubleshooting.
Repository layout
.
├── README.md # Project overview and feature-doc entrypoint
├── Cargo.toml # Rust 2024 crate; lib `magi_code`, bin `magi-code`
├── Cargo.lock # Locked dependency graph
├── config/ # Example non-secret settings
├── docs/ # Feature docs, PRDs, ADRs, RFCs, release notes
├── evals/ # Maintainer eval harness crates and cases
├── prompts/ # Bundled runtime prompt fragments
├── scripts/ # Maintainer audit/profiling/live-check helpers
├── src/ # CLI, provider, tool, session, skill, subagent, TUI code
└── tests/ # Integration regressions
Project docs
Public Rust API compatibility is guarded in CI with cargo semver-checks on pull requests against base branch. New public exports should be intentional and covered by tests/foundation.rs or equivalent external-use evidence.
- Feature documentation
- Eval harness and skill benches
- Eval crate README
- Release checklist and update policy
- PRDs
- ADRs
- RFCs
Evaluations
Maintainer evals cover prompt-fixture dumps, tool-choice cases, native skill benches, candidate skill gates, and SkillOpt bridge artifacts. See Eval harness and skill benches and Eval crate README.
Maintainer test commands
Use narrow convenience scopes while changing one ownership domain, then run full checks before merge:
--lib limits execution to unit tests in src; it excludes integration tests, binary tests, and doctests. Cargo filters use substring matching; trailing :: is a module-qualified convenience scope, not ownership-exact. Current cargo test --locked --lib <filter> -- --list counts are: agent:: 246, providers:: 295, tools:: 344, tui:: 777, mcp:: 109, config:: 168, sessions:: 141, and context:: 122. Known cross-domain matches include 3 cli::mcp tests in mcp::, 50 cli/tui tests in sessions::, and 32 agent prompt-context tests in context::; inspect --list output when exact ownership matters. Counts are test-list evidence, not coverage claims. CI runs root library, binary, foundation, cli_smoke, doctests, and eval tests as serial steps for failure isolation and scoped reruns; partitioning is not claimed to reduce aggregate wall time.
This project uses Apache License 2.0 with Commons Clause. It is source-available and not an OSI-approved open-source license or plain Apache-2.0. Apache permissions allow modification, derivative works, free redistribution, and free sublicensing when attribution, license, modification, and Commons Clause notices are retained; internal commercial use remains allowed. Commons Clause prohibits selling magi-code itself or offering a paid product or service whose value derives entirely or substantially from magi-code functionality. See LICENSE.