Skip to main content

ZettCode

ZettCode is a focused terminal coding agent built on zett-agent. Its TUI owns raw terminal input, component layout, mouse interaction, and cell-level differential rendering directly; it does not use prompt-toolkit or another TUI framework.

The agent runtime is published separately as zett-agent; this repository owns only the terminal client.

Install

ZettCode needs Python 3.14 or newer and is published on PyPI as zettcode:

uv tool install zettcode
# or
pip install zettcode

Run

DeepSeek:

export DEEPSEEK_API_KEY=...
zettcode --provider deepseek --model deepseek-chat

OpenAI or an OpenAI-compatible endpoint:

export OPENAI_API_KEY=...
zettcode --provider openai --model gpt-5-mini
zettcode --provider openai --model my-model --base-url https://example.com/v1

Pass a workspace path as the final argument. It defaults to the current directory. Session data is stored in ~/.zettcode/sessions.sqlite3 by default.

From a source checkout, run the same commands through uv:

uv sync
uv run zettcode --provider deepseek --model deepseek-chat

Keys

  • Enter: send
  • Esc, then Enter: insert a newline
  • Ctrl-C: stop the active request, or clear the input
  • Ctrl-D: delete the next character; exit when the input is empty and the agent is idle
  • Ctrl-A / Ctrl-E, Home / End: move to the start or end of the current line
  • Ctrl-B / Ctrl-F, Left / Right: move by one character
  • Alt-B / Alt-F, Ctrl-Left / Ctrl-Right: move by one word
  • Ctrl-Home / Ctrl-End, Alt-< / Alt->: move to the start or end of the whole input
  • Ctrl-U / Ctrl-K: delete to the start or end of the current line
  • Ctrl-W / Alt-Backspace, Alt-D: delete the previous or next word
  • Ctrl-Y: paste the last text removed with a line or word deletion
  • Ctrl-Z / Ctrl-_: undo the latest input edit
  • Up / Down: move between input lines, then browse submitted input history
  • Ctrl-P / Ctrl-N: browse submitted input history directly
  • Ctrl-R: search backward through submitted input history
  • Ctrl-L: redraw the terminal
  • Ctrl-T: expand or collapse the latest thinking block
  • Page Up / Page Down: scroll history while keeping the composer focused
  • Click the transcript and use Up / Down, Home / End to browse it
  • Drag in the transcript to select text; dragging past an edge automatically scrolls
  • Double-click a transcript row to select the complete visible line
  • Shift-click extends the existing selection
  • Completed mouse selections are copied to the system clipboard automatically
  • Ctrl-C also copies a transcript selection and returns focus to the input
  • Tab / Shift-Tab: complete slash commands

Thinking is collapsed by default. Click a Thinking row to inspect it; moving the pointer outside that block collapses it again. Tool calls keep their output and completion status visible in the transcript. Active thinking and tool rows use a low-frequency moving highlight wave with an animated activity icon. Tool results show a five-row preview by default; click a completed tool row to expand it. Expanded output is still bounded so a large command result cannot take over the terminal or exhaust renderer memory.

Assistant text renders common terminal-friendly Markdown: bold and emphasis, headings, inline and fenced code, links, quotes, unordered bullet lists, and GFM-style tables. Tables preserve left, center, and right alignment, account for wide CJK characters, and fit or truncate columns to the current terminal width.

Use /help inside the application to see session commands.

Metadata

Release files for zettcode 0.1.0

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.0
File Size Uploaded
zettcode-0.1.0.tar.gz 27.2 kB Details

Built distribution (wheel)

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

Total release size: 59.3 kB

Release files / zettcode-0.1.0.tar.gz

Download URL zettcode-0.1.0.tar.gz
Size 27.2 kB
Tags Source
SHA-256 checksum
How to use checksums
69ff3c88721c87f98c543906694515bb0e8687e10f765e62bd41e99731d45627
BLAKE2b-256 checksum
How to use checksums
ffe00482f057af16cf58226e2384a82064ca80fe5c1a5121d823d88fdadf7780
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.0-py3-none-any.whl

Download URL zettcode-0.1.0-py3-none-any.whl
Size 32.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29c011c33ab79bed6163571bf2f264b8c362c37f3cf5f1e28082c05e83cc54ef
BLAKE2b-256 checksum
How to use checksums
0eed075526c2e6076f134a15112622cb6ec4562f5c48d486e29484c9d2a7ae4b
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.2

2 release files

This release

0.1.0 This release

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