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

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.6
File Size Uploaded
zettcode-0.1.6.tar.gz 383.1 kB Details

Built distribution (wheel)

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

Total release size: 862.2 kB

Release files / zettcode-0.1.6.tar.gz

Download URL zettcode-0.1.6.tar.gz
Size 383.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5e30f73554f937f84a690e8bd8d66282730f50947cea93f3f63b1c01d088e916
BLAKE2b-256 checksum
How to use checksums
001b0096bec65c3c86e3a30ac2bf5faa3a93859d4b094874ef78d5e464acdf40
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.6-py3-none-any.whl

Download URL zettcode-0.1.6-py3-none-any.whl
Size 479.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7e2a52774ef80f822a6695e36f668a43e55a8bbc72374c7013940e600ebfdc03
BLAKE2b-256 checksum
How to use checksums
3e0750b2d3c3bd53576f29c262ab13b213c27d56424f070c2804f6a04e02ebf4
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

This release

0.1.6 This release

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