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, ← → and space set the marked switch, enter saves both switches and closes (on the Export row it writes the report first, saves them too, and closes), and esc closes without saving. 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

It runs on ZettCode 0.3 and later (zettcode>=0.3,<0.4): the plugin API it is built on — PluginContext, TuiPlugin and the three groups — is the one that line introduced, while the 0.2 line still spells it TerminalPlugin / TerminalContainer. The 0.1.1 release on PyPI is the one for that older API: it declares zettcode>=0.1.11,<0.3 and runs beside a 0.2.x release. 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

ZettCode 0.3.0 has to be on PyPI before this release can be installed: until that tag exists the range names a version pip cannot find, so the release workflow's install step fails as well.

Releasing

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

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

Tag this only from a commit that already sets zettcode's own version to 0.3.0: the workflow installs ./zettcode and this plugin from the same checkout, so a tag on the 0.2 line resolves against a zettcode the plugin's floor excludes and fails before it builds.

.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.2.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.2.0
File Size Uploaded Provenance Actions
zettcode_monitor-0.2.0.tar.gz 25.2 kB Without provenance Details for zettcode_monitor-0.2.0.tar.gz

Built distribution (wheel)

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

Total release size: 48.4 kB

Release files / zettcode_monitor-0.2.0.tar.gz

Download URL zettcode_monitor-0.2.0.tar.gz
Size 25.2 kB
Tags Source
SHA-256 checksum
How to use checksums
81cd25f557924ee0baa5ce05c67569ec363d701e1ac3c0dce0fadca6b95b4f87
BLAKE2b-256 checksum
How to use checksums
badf23f8ff17e5ee87f502fc2d27357bc08a0478f396c10ff84bc41c22c680e6
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.2.0-py3-none-any.whl

Download URL zettcode_monitor-0.2.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99f5b5b86da6dfe1f9853080de48daa30944aa9098615b30e663de7a834a1315
BLAKE2b-256 checksum
How to use checksums
e87736c95331a7f52195cbe861f02750e34ce1c05f4979b01771e3adeb8aad6b
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.2.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