Skip to main content

ZettCode pixel robot with a warm heart

ZettCode

Your terminal. Your coding partner.

A focused coding agent that reads your project, shows its work, and keeps you in control.

English · 简体中文
Get started · Documentation · Commands

ZettCode showing a task, thinking, file reads, a code edit, passing tests, and a Markdown answer

Illustrative conversation, rendered with ZettCode’s actual terminal widgets.

Get running

You need Python 3.10+, a UTF-8 terminal, and an OpenAI-compatible API (or Anthropic's Messages API). Works on macOS, Linux, and Windows (use Windows Terminal).

1. Install

uv tool install zettcode
# or: pip install zettcode

2. Connect a model

Create ~/.zettcode/config.toml (and its parent directory) with one model:

[[models]]
model = "deepseek-v4-pro"             # the model id sent to DeepSeek
display_model = "DeepSeek Pro"        # the name shown in ZettCode
token = "sk-..."                      # replace with your DeepSeek API key
base_url = "https://api.deepseek.com"  # DeepSeek's OpenAI-compatible API root
context_window = 1000000               # verify against the endpoint's current limits
multimodal = false                    # this model accepts text, not images

Get a key from the DeepSeek platform, not from the chat website. Alternatively, omit token and set OPENAI_API_KEY to that key. Add more [[models]] entries to switch with /model; the first is selected at startup. See the configuration reference for complete examples, defaults, and troubleshooting.

3. Start a task

cd /path/to/project
zettcode
# or: zettcode --workspace /path/to/project

Describe a change and press Enter. Type / for commands, @ to reference a skill, and Ctrl-C to stop a request. Ctrl-D with an empty composer exits and prints the command to resume your session.

Built for the way you work

See every step Reasoning, answers, and tool calls stream as readable rows — not raw JSON.
Keep the decision Review shell commands before they run. When the agent needs your input, choose an option or type an answer.
Keep moving Type during a reply and choose: steer it now, or queue a follow-up you can edit, delete and reorder with Option+↑/↓. Use /btw for a side question that stays out of later context.
Come back later /resume restores a conversation; /export saves a readable HTML record.
Understand the context Monitor token usage and caching, inspect /context, and compact when needed.
Bring your tools Use project AGENTS.md instructions, skills, MCP servers, and Python plugins.

The palette follows your terminal’s background, or your own theme.toml. Select and copy text, scroll through answers, and paste images when your model supports them.

Find your next step

The user guide is available in English and 简体中文.

First time Everyday use Configuration & extensions
Getting started Keys & mouse Configuration
The interface Commands Models & context
Problems & questions Sessions Project instructions
Skills & MCP · Plugins

Development

uv sync                         # install dependencies
make check                      # Ruff, mypy, and tests
make hooks                      # enforce mypy before commits
make demo                       # browse terminal widgets
make docs                       # preview the user guide locally
uv run zettcode --workspace .    # run from the checkout

ZettCode provides the terminal application; the agent runtime is zett-agent. Contributor notes and invariants live in AGENTS.md and docs/internal/, separately from the user guide. See docs/internal/site-design.md for preview and asset-generation instructions.

License

MIT. See LICENSE.

Metadata

Release files for zettcode 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zettcode 0.1.5
File Size Uploaded
zettcode-0.1.5.tar.gz 346.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zettcode 0.1.5
File Interpreter ABI Platform
zettcode-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 784.6 kB

Release files / zettcode-0.1.5.tar.gz

Download URL zettcode-0.1.5.tar.gz
Size 346.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9fe57a1cb6b6da5222456ae8f8de3b7dc85e8ad15d3eb2c6847fe985ba4e6aa8
BLAKE2b-256 checksum
How to use checksums
04f16b51809807374b3a29329e9ef885074229edb9f0c1b45f43a260c5eeb0b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / zettcode-0.1.5-py3-none-any.whl

Download URL zettcode-0.1.5-py3-none-any.whl
Size 437.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3199d2134b42b5cd253498dd729a7af344e19f9c9ec328757e29415aeb561246
BLAKE2b-256 checksum
How to use checksums
535f868ee556f9aa3b74482ba1f6d37f570a9ab8831265d41e1eb37acaa2e951
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page