cortex streams the model, dispatches tools, persists an append-only session, and prunes its own context under pressure — then gets out of your way. No Electron. No browser tab. Just a transcript you can scroll, search and copy.
axon ships the loop. cortex ships the product on top — the config, the role text, and the terminal it talks through. Everything layers one direction.
--prompt writes the answer to stdout and everything else to stderr, so cortex pipes cleanly into scripts: cortex --prompt "…" > out.txtcortex plans, reads, edits and verifies — then stops. The loop is deliberately tight: a turn that ends with only a plan has produced nothing.
Three sources, each overriding the last. Your user config holds defaults, a project config overrides per-repo, and the environment overrides both — field by field.
base_url automatically.$-prefixed api_key reads straight from the environment.providers.json across every axon-family tool.# ~/.config/cortex/config.yaml name: reviewer provider: openrouter model: deepseek/deepseek-v3.2 pruner: model: meta-llama/llama-3.1-8b mcp_servers: github: command: docker args: ["run", "-i", "--rm", "ghcr.io/github/github-mcp-server"] env: ["GITHUB_TOKEN=…"]
Install in one command. Run in your repo. Watch it work.