Skip to main content

Minimal coding agent

Project description

Dot

Python Version License

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 than ls.

OAuth and API keys

  • GitHub Copilot OAuth: run /login and choose GitHub Copilot.
  • OpenAI OAuth (Codex): run /login and 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_KEY or ZAI_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/.

  • /resume to reopen past sessions
  • /session for message/token stats
  • /export for standalone HTML transcripts
  • --continue / -c to continue the most recent session from CLI

AGENTS.md

Dot loads project guidelines from AGENTS.md (or CLAUDE.md) files into the system prompt:

  1. Global: ~/.dot/AGENTS.md
  2. 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_provider
  • llm.default_model
  • llm.default_thinking_level
  • llm.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-mono coding-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-flash and qwen-3-coder-next look 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dot_coding_agent-0.1.0.tar.gz (184.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dot_coding_agent-0.1.0-py3-none-any.whl (116.7 kB view details)

Uploaded Python 3

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

Hashes for dot_coding_agent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a54cc1a0b26c3face200b9a25479692c5fefd2af72fce75d21bc218ef22d79a8
MD5 3827859c046cf7a927a167bd78c5c33f
BLAKE2b-256 7d8ef207357d00425ea19c33b39df52a1c56bd18f55242bf1e7b83e008c82737

See more details on using hashes here.

File details

Details for the file dot_coding_agent-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dot_coding_agent-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e039520965d3da21925643fdd7a220d9455589cb841e541eb83d8d10c9831666
MD5 80c991831834143058f3b05b763528ac
BLAKE2b-256 7a70cab6f89dd26054593566f795e88237ab19000d869007e84e64f23478c0c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page