Minimal coding agent
Project description
Dot
Dot is a minimal coding agent that just works.
It has a tiny harness: about 215 tokens for the system prompt and around 600 tokens for tool definitions – so under 1k tokens before conversation context.
At the time of writing this README (22 Feb 2026), this repo has 108 files and is easy to understand in a weekend. Here’s a rough file-count comparison against a couple of popular OSS coding agents:
Others are of course more mature, support more models, include broader test coverage, and cover more surfaces. But if you want a truly minimal coding agent with batteries included – something you can understand, fork, and extend quickly – Dot might be interesting.
$ fd . | cut -d/ -f1 | sort | uniq -c | sort -rn
4107 opencode
740 pi-mono
108 dot
Setup
Warning
[!WARNING] Platform support: macOS and Linux are supported; Windows is not tested yet.
Prerequisites
Python 3.12+ and uv.
Install (recommended)
uv tool install dot-coding-agent
This installs dot globally as a CLI tool.
Install from source (advanced)
git clone <repository-url>
cd dot
uv tool install .
Run
dot
CLI options:
usage: dot [-h] [--model MODEL]
[--provider {github-copilot,openai,openai-codex,openai-responses,zhipu}]
[--api-key API_KEY] [--base-url BASE_URL] [--continue]
[--resume RESUME_SESSION]
Dot TUI
options:
-h, --help show this help message and exit
--model, -m MODEL Model to use
--provider, -p {github-copilot,openai,openai-codex,openai-responses,zhipu}
Provider to use
--api-key, -k API_KEY
API key
--base-url, -u BASE_URL
Base URL for API
--continue, -c Resume the most recent session
--resume, -r RESUME_SESSION
Resume a specific session by ID (full or unique
prefix)
Tool binaries
- fd – required for fast file discovery; Dot auto-downloads it only if it's missing.
- ripgrep (rg) – required for fast content search; Dot auto-downloads it only if it's missing.
- eza (optional) – supports
.gitignore-aware listings and usually emits fewer tokens thanls.
OAuth and API keys
- GitHub Copilot OAuth: run
/loginand choose GitHub Copilot. - OpenAI OAuth (Codex): run
/loginand choose OpenAI. Dot supports callback flow plus manual paste fallback. - OpenAI-compatible providers (for example ZhiPu): set an API key via environment variable (
OPENAI_API_KEYorZAI_API_KEY).
Features
Tools
| Tool | Purpose |
|---|---|
read |
Read file contents (pagination for large files, image support) |
edit |
Surgical find-and-replace edits |
write |
Create or overwrite files |
bash |
Execute shell commands |
grep |
Search file contents with regex |
find |
Find files by glob pattern |
Slash commands
Type / at the start of input to see available commands.
| Command | Description |
|---|---|
/new |
Start a new conversation and reload project context/skills |
/resume |
Browse and restore a saved session |
/model |
Switch model via interactive picker |
/session |
Show session metadata and token stats |
/compact |
Compact the current conversation immediately |
/export |
Export current session to HTML |
/copy |
Copy last assistant response to clipboard |
/login |
Authenticate with a provider |
/logout |
Log out from a provider |
/clear |
Clear current conversation |
/help |
Show commands and keybindings |
/quit (/exit, /q) |
Quit Dot |
@ file and folder search
Type @ + query to fuzzy-search files/folders in the current project and insert paths into your prompt.
Tab path autocomplete
Press Tab in the input box to complete paths (~, ./, ../, absolute paths, quoted paths, etc.).
Query queueing
If the agent is currently running, you can still submit more prompts. Dot queues them and runs them in order once the current task finishes (up to 5 queued prompts).
Sessions
Sessions are append-only JSONL files under ~/.dot/sessions/.
/resumeto reopen past sessions/sessionfor message/token stats/exportfor standalone HTML transcripts--continue/-cto continue the most recent session from CLI
AGENTS.md
Dot loads project guidelines from AGENTS.md (or CLAUDE.md) files into the system prompt:
- Global:
~/.dot/AGENTS.md - Ancestor directories from git root (or home) down to current working directory
Skills
Skills are reusable instruction packs loaded from:
- Project:
.dot/skills/ - Global:
~/.dot/skills/
Each skill has a SKILL.md file with front matter:
---
name: my-skill
description: Brief description of what this skill does
---
# My Skill
Detailed instructions for the agent...
For skills with scripts, see Agent Skills Documentation.
Architecture
LLM Provider
│
│ StreamPart (TextPart, ThinkPart, ToolCallStart, ToolCallDelta, ...)
▼
Single Turn (turn.py)
│
│ StreamEvent (ThinkingStart/Delta/End, TextStart/Delta/End, ToolStart/End, ToolResult, ...)
▼
Agentic Loop (loop.py)
│
│ Event (AgentStart, TurnStart, TurnEnd, AgentEnd + all StreamEvents)
▼
UI (app.py)
Supported Models
| Model | Provider | Thinking | Vision |
|---|---|---|---|
glm-4.7 |
ZhiPu | Yes | No |
glm-5 |
ZhiPu | Yes | No |
claude-sonnet-4.5 |
GitHub Copilot | Yes | Yes |
claude-opus-4.5 |
GitHub Copilot | Yes | Yes |
claude-sonnet-4.6 |
GitHub Copilot | Yes | Yes |
claude-opus-4.6 |
GitHub Copilot | Yes | Yes |
gpt-5.3-codex |
GitHub Copilot | Yes | Yes |
gpt-5.3-codex |
OpenAI Codex | Yes | Yes |
Configuration
Config lives at ~/.dot/config.toml (auto-created on first run).
Most important knobs:
llm.default_providerllm.default_modelllm.default_thinking_levelllm.system_prompt(you can fully override Dot’s system prompt here)compaction.on_overflow,compaction.buffer_tokens,compaction.default_context_window
You can also theme the UI via [ui.colors] values.
Example:
[llm]
default_provider = "openai-codex"
default_model = "gpt-5.3-codex"
default_thinking_level = "high"
system_prompt = """Your custom system prompt here"""
[compaction]
on_overflow = "continue"
buffer_tokens = 20000
Development setup
For hacking on Dot locally:
uv sync
uv run dot
uv run ruff format .
uv run pytest
Acknowledgements
- Dot takes significant inspiration from
pi-monocoding-agent, especially in terms of the overall philosophy and UI design.- Why not just use pi? Pi is no longer a small project, and I want to be in complete control of my coding agent.
- I mostly agree with Mario (author of pi), but I have different beliefs on some matters - for example, subagents (especially useful for context gathering in larger repos when paired with semantic search tools).
- Over time, I also want to give more preference to local LLMs I can run.
glm-4.7-flashandqwen-3-coder-nextlook promising, so I may make decisions that do not necessarily optimize for SOTA paid models.
- Dot also borrows ideas from Amp, Claude Code, and other coding agents.
LICENCE
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 dot_coding_agent-0.1.0.tar.gz.
File metadata
- Download URL: dot_coding_agent-0.1.0.tar.gz
- Upload date:
- Size: 184.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a54cc1a0b26c3face200b9a25479692c5fefd2af72fce75d21bc218ef22d79a8
|
|
| MD5 |
3827859c046cf7a927a167bd78c5c33f
|
|
| BLAKE2b-256 |
7d8ef207357d00425ea19c33b39df52a1c56bd18f55242bf1e7b83e008c82737
|
File details
Details for the file dot_coding_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dot_coding_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 116.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e039520965d3da21925643fdd7a220d9455589cb841e541eb83d8d10c9831666
|
|
| MD5 |
80c991831834143058f3b05b763528ac
|
|
| BLAKE2b-256 |
7a70cab6f89dd26054593566f795e88237ab19000d869007e84e64f23478c0c9
|