mycode
There are many coding agents, but this one is mine.
A minimal coding agent.
- Minimal:agent core code lines < 5k, total < 10k (backend).
- Multiple provider support and robust message replay.
- 4 built-in tools (
read,write,edit,bash), expanded via skills. - Mobile-friendly web UI.
- Native image and pdf input support.
Quick Start
Requires Python 3.12+. Install via uv:
uv tool install mycode-cli
Interactive terminal UI:
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).
Providers
| Provider | id | Env var |
|---|---|---|
| Anthropic | anthropic |
ANTHROPIC_API_KEY |
| OpenAI | openai |
OPENAI_API_KEY |
| Google Gemini | google |
GEMINI_API_KEY |
| Moonshot | moonshotai |
MOONSHOT_API_KEY |
| MiniMax | minimax |
MINIMAX_API_KEY |
| DeepSeek | deepseek |
DEEPSEEK_API_KEY |
| Z.AI | zai |
ZAI_API_KEY |
| OpenRouter | openrouter |
OPENROUTER_API_KEY |
| OpenAI-compatible | openai_chat |
— |
Run /model in tui to see the available models.
Configuration
A config file is optional — API keys from the environment are usually sufficient.
Create ~/.mycode/config.json (global) or .mycode/config.json under the current project to:
- set a default provider, model, and reasoning effort
- expose additional models on an existing provider (e.g. OpenRouter's catalog)
- register a custom endpoint, such as a private or regional deployment
{
"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
}
}
}
}
}
- To override a built-in provider, reuse its id as the key — no
typeneeded. Custom providers must declare atype— one of the built-in protocols. 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 bundled from models.dev —
{}is enough for most models. Provide explicit fields only for models not listed there.
Built-in Moonshot, MiniMax, and Z.AI providers default to international endpoints. Override
base_urlfor 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 /rewind /provider /model /effort /clear /q
Development
The web/ UI is a git submodule from legibet/mycode-web; --recurse-submodules fetches it.
git clone --recurse-submodules https://github.com/legibet/mycode.git && 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
Or start both together:
just dev
Other useful shortcuts: just check · just test · just fmt
Build distributable artifacts:
uv build --package mycode-sdk
uv build --package mycode-cli
mycode-sdk
Agent core of mycode as a lightweight Python SDK for building custom agents. Install via: uv add mycode-sdk
from mycode import Agent, read_tool
agent = Agent(
model="claude-sonnet-4-6",
api_key="...",
tools=[read_tool],
)
result = agent.run("Read pyproject.toml and tell me the project name.")
print(result.text)
See mycode/README.md for details.
License
MIT
Release files for mycode-cli 0.9.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mycode_cli-0.9.5.tar.gz | 3.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mycode_cli-0.9.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.3 MB
Release files / mycode_cli-0.9.5.tar.gz
| Download URL | mycode_cli-0.9.5.tar.gz |
|---|---|
| Size | 3.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
581b53c1e72a8c5fd2cd81a3d56b25096ff397119c0cd1f835b877ba37c2dd0a
|
|
BLAKE2b-256 checksum How to use checksums |
e47977d761d2e40034ab36bef360f854159016b7c56675e56ed2b7bf426107b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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}
|
Release files / mycode_cli-0.9.5-py3-none-any.whl
| Download URL | mycode_cli-0.9.5-py3-none-any.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9237ab676750756da3363a0df3a0fe58ce33bffcdc98d4b769496734377e719a
|
|
BLAKE2b-256 checksum How to use checksums |
11595c8139c5b2ae176bf4a86b2ecaf46c0bc5a8a59241ac3edf16f8310d00f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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}
|