Skip to main content

zettcode-monitor

A ZettCode plugin. It adds /monitor.

  • /monitor opens a panel in the style of /statusline: a Recording switch, an Images switch and an Export row. ↑ ↓ moves, ← → space flips a switch (it applies at once and is remembered), enter or e exports, esc closes. The command takes no arguments and has no subcommands.
  • Every session starts with recording off.
  • Export writes an HTML report to zettcode-monitor-<id8>.html in the workspace.
  • Images are off by default: a record keeps only an [image] marker. Turn Images on and the data of images is stored and shown in the report (it makes the records much larger, since every turn repeats the whole request).

Each model call stores the full request (system prompt, messages, tools, parameters) and the full response (text, tool calls, usage), plus its duration and any error. Every turn stores the whole request again, so messages repeat between calls. Nothing is redacted.

Data lives in ~/.zettcode/monitor/<session-id>/. state.json holds the switches and calls.jsonl holds the calls. The switches are read back when a session is resumed. ZETTCODE_MONITOR_DIR changes the root.

Install

pip install zettcode-monitor

Install it into the same environment as ZettCode, then restart. With a uv tool install:

uv tool install --force --with zettcode-monitor zettcode

From a checkout of this repository:

uv tool install --force --with ./plugins/zettcode-monitor zettcode

Releasing

The version is __version__ in src/zettcode_monitor/__init__.py. Set it, commit, then tag and push:

git tag monitor-v0.1.0
git push origin monitor-v0.1.0

.github/workflows/release-monitor.yml checks the tag against the version, runs the tests, builds, and publishes with the same PYPI_API_TOKEN secret as zettcode. The monitor-v* tag is separate from zettcode's v* tag. The first publish needs the zettcode-monitor project name to be free on PyPI.

Test

Run this from plugins/zettcode-monitor:

PYTHONPATH=src <zettcode-venv>/bin/python -m pytest tests

This package is not a member of the root uv workspace, so make check does not cover it.

Metadata

Release files for zettcode-monitor 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-monitor 0.1.0
File Size Uploaded Provenance Actions
zettcode_monitor-0.1.0.tar.gz 23.8 kB Without provenance Details for zettcode_monitor-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 46.5 kB

Release files / zettcode_monitor-0.1.0.tar.gz

Download URL zettcode_monitor-0.1.0.tar.gz
Size 23.8 kB
Tags Source
SHA-256 checksum
How to use checksums
acc8c483846ac6e7be29d67452ac06d0219667c657e1b05754fbe62e79cb265f
BLAKE2b-256 checksum
How to use checksums
ea13e338c7b51929337f870699a63b46a3475ce4b905b32a03c73fb2f0908c50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / zettcode_monitor-0.1.0-py3-none-any.whl

Download URL zettcode_monitor-0.1.0-py3-none-any.whl
Size 22.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab41a61b0e3bf1afaa44e7980b31e029e50879860cee2f86e480baf394ac1f9a
BLAKE2b-256 checksum
How to use checksums
1ca129d0e25f1198760a07f0cdbb50e8032c2ba805199d5be37f814523a207f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for zettcode-monitor 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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