Minimal coding agent
Project description
Kon
Kon is a minimal coding agent with 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 (25 Feb 2026), this repo has 112 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 – Kon might be interesting.
$ fd . | cut -d/ -f1 | sort | uniq -c | sort -rn
4107 opencode
740 pi-mono
108 kon
Kon is inspired from Bleach, a artificial soul
Setup
Prerequisites
Python 3.12+ and uv.
Install (recommended)
uv tool install kon-coding-agent
This installs kon globally as a CLI tool.
Install from source (advanced)
git clone https://github.com/kuutsav/kon
cd kon
uv tool install .
[!WARNING] Platform support: macOS and Linux are supported; Windows is not tested yet.
Run
kon
CLI options:
usage: kon [-h] [--model MODEL]
[--provider {github-copilot,openai,openai-codex,openai-responses,zhipu}]
[--api-key API_KEY] [--base-url BASE_URL] [--continue]
[--resume RESUME_SESSION]
Kon 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; Kon auto-downloads it only if it's missing.
- ripgrep (rg) – required for fast content search; Kon 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. Kon 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 Kon |
@ 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. Kon 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 ~/.kon/sessions/.
/resumeto reopen past sessions/sessionfor message/token stats/exportfor standalone HTML transcripts--continue/-cto continue the most recent session from CLI
AGENTS.md
Kon loads project guidelines from AGENTS.md (or CLAUDE.md) files into the system prompt:
- Global:
~/.kon/AGENTS.md - Ancestor directories from git root (or home) down to current working directory
Skills
Skills are reusable instruction packs loaded from:
- Project:
.kon/skills/ - Global:
~/.kon/skills/
Each skill has a SKILL.md file with front matter:
---
name: my-skill
description: Brief description of what this skill does
register_cmd: true
cmd_info: Quick action shown in slash menu
---
# My Skill
Detailed instructions for the agent...
Front matter fields:
name(optional) – Skill identifier. If omitted, Kon uses the directory name.description(required) – Used for skill discovery and shown in the prompt context.register_cmd(optional, defaultfalse) – Iftrue, the skill is available as a slash command (/my-skill) in the input menu.cmd_info(optional) – Short menu hint shown for slash-command skills.
Validation rules:
namemust be lowercasea-z,0-9, and-namemust not start/end with-or include--namemax length: 64 charsdescriptionmax length: 1024 charscmd_infomax length: 32 chars
For skills with scripts, see Agent Skills Documentation.
Not supported
Some features you might expect in other coding agents are not part of Kon's design philosophy:
- MCP servers – Use skills instead; they're simpler and give you full control
- Sandbox environments – Kon runs directly on your machine for simplicity; use Docker or VMs if you need isolation
- Checkpoint restores – Not currently supported; may be added in the future
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
Kon works well with local models exposed through an OpenAI-compatible /v1 API.
Example using llama-server
To run a local model using llama-server:
./llama-server -m <models-dir>/GLM-4.7-Flash-GGUF/GLM-4.7-Flash-Q4_K_M.gguf \
-n 8192 \
-c 64000
# Then use Kon with:
kon --model zai-org/glm-4.7-flash \
--provider openai \
--base-url http://localhost:8080/v1 \
--api-key ""
GLM-4.7-Flash-Q4 ran at 80-90 tps on my i7-14700F × 28, 64GB RAM, 24GB VRAM (RTX 3090)
All Supported Providers
| Model (local=*) | Provider | Thinking | Vision |
|---|---|---|---|
*zai-org/glm-4.7-flash |
OpenAI Completions | Yes | No |
*qwen/qwen3-coder-next |
OpenAI Completions | Yes | No |
glm-4.7 |
ZhiPu (OpenAI Completions) | Yes | No |
glm-5 |
ZhiPu (OpenAI Completions) | 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.4 |
GitHub Copilot | Yes | Yes |
gpt-5.3-codex |
OpenAI Codex Responses | Yes | Yes |
gpt-5.4 |
OpenAI Codex Responses | Yes | Yes |
Configuration
Config lives at ~/.kon/config.toml (auto-created on first run).
Most important knobs:
llm.default_providerllm.default_modelllm.default_thinking_levelllm.system_prompt(you can fully override Kon’s system prompt here)llm.tool_call_idle_timeout_seconds(fallback timeout for stalled tool-call streaming)compaction.on_overflow,compaction.buffer_tokensagent.max_turns,agent.default_context_window
You can also theme the UI via [ui.colors] values.
Example:
[llm]
default_provider = "openai-codex"
default_model = "gpt-5.4"
default_thinking_level = "high"
tool_call_idle_timeout_seconds = 60
system_prompt = """Your custom system prompt here"""
[compaction]
on_overflow = "continue"
buffer_tokens = 20000
Development setup
For hacking on Kon locally:
uv sync
uv run kon
uv run ruff format .
uv run pytest
Acknowledgements
- Kon 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.
- Kon also borrows ideas from Amp, Claude Code, and other coding agents.
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 kon_coding_agent-0.2.6.tar.gz.
File metadata
- Download URL: kon_coding_agent-0.2.6.tar.gz
- Upload date:
- Size: 212.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30bfeb5e09ff3b11ae316edd4892bf9b478261e93b2182ecbf43865da97c8eb6
|
|
| MD5 |
a3a0fcd07068c0c25ef663d05ce5c19f
|
|
| BLAKE2b-256 |
b91447a6424b0c0267ae2e74adb6035934d55fd0ddc62467da6caaa31e69380f
|
File details
Details for the file kon_coding_agent-0.2.6-py3-none-any.whl.
File metadata
- Download URL: kon_coding_agent-0.2.6-py3-none-any.whl
- Upload date:
- Size: 126.0 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 |
3ce8628eff1b4437bd7a9ad6092c824a67fb7f600dbe9d020ebe0291cd7703f4
|
|
| MD5 |
ad4efd30992e76ec77c6830bfe4fd9f6
|
|
| BLAKE2b-256 |
bc5e090e0604410d86391a7d0331420adf98bc240a0a34f7ba4cd92570a2a2be
|