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

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.7
File Size Uploaded
zettcode-0.1.7.tar.gz 441.0 kB Details

Built distribution (wheel)

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

Total release size: 991.6 kB

Release files / zettcode-0.1.7.tar.gz

Download URL zettcode-0.1.7.tar.gz
Size 441.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0cb24143711a243236472da7abd66105a2883421e5a3e317cbe29c85b7e6f418
BLAKE2b-256 checksum
How to use checksums
e295962ae8a38d03ea857b560fa40bc02399c2cd4d2998c898d957970591de26
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.7-py3-none-any.whl

Download URL zettcode-0.1.7-py3-none-any.whl
Size 550.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e33b3c5b2229b26b6c43d801fbd870c66429e5d1fc3ac2381176e20407551651
BLAKE2b-256 checksum
How to use checksums
f95e0a1bb5b7f89ee94cb5aed235f748a7c08a08f942bbeafa56aa4d08417225
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

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

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