m-code
A coding agent that runs in your terminal. It reads your project, changes files, runs commands — and asks before it does anything it cannot undo.
curl -fsSL https://m.code.theafricablockchaincenter.com/install.sh | sh
macOS and Linux, Apple silicon and Intel. Windows through WSL 2. No Node, no Python, nothing else to install.
Bring your own model
m-code has no account and no subscription. You bring an API key for whichever provider you can actually reach and afford — or you point it at a model running on your own machine and use it with no network at all.
| Provider | Key |
|---|---|
anthropic | ANTHROPIC_API_KEY |
openai | OPENAI_API_KEY |
deepseek | DEEPSEEK_API_KEY |
groq | GROQ_API_KEY |
openrouter | OPENROUTER_API_KEY |
openweights | OPEN_WEIGHT_API_KEY |
azure | AZURE_OPENAI_API_KEY |
ollama, vllm | none — a model on your own machine |
Anything else speaking the OpenAI format works too:
m-code --provider openai --base-url https://your-endpoint/v1
Getting started
1. Install
curl -fsSL https://m.code.theafricablockchaincenter.com/install.sh | sh
2. Activate
m-code runs for people who have been authorised. Ask for a key, then:
m-code activate <key>
The key is checked on your machine, offline. Nothing is sent anywhere, nothing is reported about who you are or when you ran it, and it keeps working without a network.
3. Give it a model
mkdir -p ~/.config/m-cli
echo 'export DEEPSEEK_API_KEY=sk-...' >> ~/.config/m-cli/env
chmod 600 ~/.config/m-cli/env
Or run one locally and skip the key entirely:
ollama pull qwen2.5-coder && m-code --provider ollama
4. Start
cd ~/your-project
m-code
Then ask it something. what does this project do? is a good
first one — reading is never gated, so nothing will interrupt you.
What it does before it changes anything
Reading is free. Writing is not: every edit, every shell command, every network fetch stops and shows you exactly what will happen.
╭──────────────────────────────────────────────────────╮
│ Bash command │
│ │
│ rm -rf build │
│ ~/your-project │
│ │
│ Do you want to run this command? │
│ ❯ 1. Yes │
│ 2. Yes, and don't ask again for bash(rm *) │
│ 3. No, and tell m what to do differently (esc) │
│ 4. No, and never allow bash │
╰──────────────────────────────────────────────────────╯
Shell commands additionally run under the operating system's own sandbox, confined to writing inside your project. Files outside it cannot be touched at all, by any tool.
Cloning a repository is not consent. A project can ship settings that make m-code stricter — never settings that grant it permissions, run a command, or redirect your API key.
Where things live
~/.config/m-cli/env | your API keys, mode 600 |
~/.config/m-cli/config.json | your settings |
~/.config/m-cli/licence | your key |
~/.local/share/m-cli/sessions | conversation transcripts |
What leaves your machine: your prompts and the files the model asked to read, sent to the provider you chose. Also to an MCP server if you configure one, and to a URL if you approve the fetch tool. Nothing else — there is no telemetry, no analytics, and no update check. With a local model, nothing leaves at all.