Minimal coding agent with web UI
Project description
mycode
There are many coding agents, but this one is mine.
A minimal coding agent. Inspired by pi.
- Minimal core (under 5k lines of code).
- Unified message format and robust cross-provider replay.
- 4 built-in tools:
read,write,edit,bash, expanded via skills. - Inspectable runtime, append-only JSONL sessions.
- Native image and pdf input support.
- Mobile-friendly web UI.
Quick Start
Requires Python 3.12+. Install via uv:
uv tool install mycode-cli
Interactive terminal session:
mycode
Web UI (default at http://localhost:8000):
mycode web (--port <port> --hostname <hostname>)
Single message, non-interactive:
mycode run "explain how the session store works"
API keys are discovered automatically from environment variables (see Providers & Models).
Providers & Models
| Provider | id | Env var | Default models |
|---|---|---|---|
| Anthropic | anthropic |
ANTHROPIC_API_KEY |
claude-sonnet-4-6, claude-opus-4-6 |
| OpenAI | openai |
OPENAI_API_KEY |
gpt-5.4, gpt-5.4-mini |
| Google Gemini | google |
GEMINI_API_KEY |
gemini-3.1-pro-preview, gemini-3-flash-preview |
| Moonshot | moonshotai |
MOONSHOT_API_KEY |
kimi-k2.5 |
| MiniMax | minimax |
MINIMAX_API_KEY |
MiniMax-M2.7, MiniMax-M2.7-highspeed |
| DeepSeek | deepseek |
DEEPSEEK_API_KEY |
deepseek-chat, deepseek-reasoner |
| Z.AI | zai |
ZAI_API_KEY |
glm-5.1, glm-5-turbo |
| OpenRouter | openrouter |
OPENROUTER_API_KEY |
openrouter/auto |
| OpenAI-compatible | openai_chat |
— | (configured per provider) |
Configuration
No config file is required. It is only used for:
- Setting default provider, model, and other options
- Overriding built-in provider settings (e.g. changing the available model list)
- Adding custom providers with any built-in provider type.
- Customize model metadata for built-in and custom models.
Config is loaded from ~/.mycode/config.json (global) and <workspace>/.mycode/config.json (project-specific, takes precedence).
{
"default": {
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"reasoning_effort": "medium"
},
"providers": {
"openrouter": {
"models": {
"deepseek/deepseek-v3.2": {},
"xiaomi/mimo-v2-pro": {}
}
},
"zhipu-coding-plan": {
"type": "zai",
"base_url": "https://open.bigmodel.cn/api/coding/paas/v4",
"api_key": "${ZHIPU_API_KEY}"
},
"custom-provider": {
"type": "openai_chat",
"base_url": "https://custom-endpoint.com/v1",
"api_key": "${CUSTOM_API_KEY}",
"models": {
"custom-model": {
"context_window": 128000,
"max_output_tokens": 16384,
"supports_reasoning": true,
"supports_image_input": false
}
}
}
}
}
- Built-in provider ids can be overridden by key without specifying
type. Custom providers must settype. reasoning_effortcontrols extended thinking for supported models:auto(default) ·none·low·medium·high·xhigh.- API keys in config accept
${ENV_VAR}references. - Model metadata is sourced from models.dev and bundled — no manual config needed for built-in models.
Built-in Moonshot, MiniMax, and Z.AI defaults use international endpoints. Override
base_urlin config for China endpoints.
CLI Reference
mycode start interactive session (new)
mycode --continue resume the most recent session
mycode --session <id> resume a specific session
mycode run "..." send one message, non-interactive
mycode web start web server (default port 8000)
mycode web --dev API only, no static files
mycode session list list saved sessions
Interactive slash commands: /new /resume /provider /model /effort /clear /q
Development
git clone <repo> && cd mycode
uv sync --dev
uv run mycode
Web development (backend + Vite dev server):
uv run mycode web --dev
pnpm --dir web install && pnpm --dir web dev
Rebuild packaged web assets:
uv run --no-project python scripts/build_web.py
Build distributable artifacts:
uv build
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mycode_cli-0.2.0.tar.gz.
File metadata
- Download URL: mycode_cli-0.2.0.tar.gz
- Upload date:
- Size: 3.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be690dbded115565ffcde809f675d986df16eebdd57bee24cf455fd4b57b4362
|
|
| MD5 |
6b207502928252a4eb30aa5da935796c
|
|
| BLAKE2b-256 |
859e0c9fd44505c3912a0fb964d18631d543954db530a76fd8686edf061078b3
|
File details
Details for the file mycode_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mycode_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 3.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a78914340a02d5ce5b0f20e4e93257e43d0ddc5e37ad8195c179e0b69084d60b
|
|
| MD5 |
e6ad8ba2322ca4bdd83e129544f1a3a1
|
|
| BLAKE2b-256 |
599ad37f98b0b76d9e1b65a5d4ba0ef777631b406d9f4d997214ecdb6872970f
|