Wont
Wont watches how your AI agents actually work, finds the steps they repeat, and shows which of that work is reusable. A wont is a habitual way of doing something; that is what Wont looks for in agent behavior.
Status: early release (0.1.0). Today Wont observes and measures. It does not execute anything in place of your agent. Every number it shows is a measured fact about your own traffic; it makes no savings estimates.
What it does
- Observe. A small Python SDK records each agent run as a structured trace: which tools were called, in what dependency order, with what side-effect class. It stores the shape of values and keyed hashes, not the values themselves.
- Find repetition. Wont reconstructs the data flow between steps and groups runs that perform the same procedure.
- Show the lifecycle. Each repeated procedure is observed, a candidate, qualified, or deoptimized, derived from evidence you can inspect. Nothing is "active": Wont does not run procedures for you.
- Measure. Cost and latency appear only when your traces report them, and are marked unavailable otherwise.
Install
pip install wont
The package is small: it depends only on pydantic. The server and dashboard ship in the
source repository and the container image; pip install "wont[server]" adds the libraries
they need.
Use it
import os
from wont import Wont
wont = Wont(
api_key=os.environ["WONT_API_KEY"], # a project key from the dashboard (wnk_...)
base_url=os.environ["WONT_BASE_URL"],
)
with wont.execution(workflow_version="refund-status") as run:
result = support_agent.run(request) # your agent, unchanged
For tools you call yourself, observe_tool records a call without ever raising into your
agent. Instrumentation failures are swallowed by design; an observation problem must never
break a run. See the SDK guide.
Coding agents
If your agent is Claude Code, wont claude-code install prints a hook block that records
sessions locally first, with an explicit step before anything is sent. See
the recorder guide and the
pilot runbook.
Safety stance
Wont is conservative by construction: when it is unsure whether two steps are independent, it keeps them ordered; a false fallback is acceptable, silent incorrect execution is not. Project API keys are agent credentials and are never used in a browser. The dashboard signs people in with their own sessions. See data handling.
Run the server
From a source checkout (Python 3.12 or newer, Docker for PostgreSQL, Node for the dashboard build):
pip install -e ".[server]"
(cd apps/web && npm ci && VITE_WONT_DATA_SOURCE=api npm run build) # once; builds the dashboard
docker compose up -d postgres
wont serve --dev
wont serve --dev is for local use only: it listens on 127.0.0.1, uses the local development
database, applies pending migrations, serves the dashboard at http://127.0.0.1:8000, and prints
sign-in links in the console (there is no email in development). It refuses to run with
WONT_ENV=production. For a real deployment use the container image and the reference
deployment in deploy/; see the
operations runbook.
Documentation
- Getting started: sign in to your first data
- API keys: lifecycle, rotation, and what a key can do
- Data controls: what is stored, retention, export, deletion
- Quickstart
- Python SDK
- Claude Code recorder
- Naming and conventions
License
Apache License 2.0. See LICENSE.
To report a vulnerability, see SECURITY.md.
Metadata
Release files for wont 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wont-0.1.0.tar.gz | 297.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wont-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 682.5 kB
Release files / wont-0.1.0.tar.gz
| Download URL | wont-0.1.0.tar.gz |
|---|---|
| Size | 297.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb2c12a54a7249202ab278bc4c9c535a3c30f72f9f105537b1c9b6d78aa50c20
|
|
BLAKE2b-256 checksum How to use checksums |
8754630c9db8fc8be427575dc60d18ebf91d8ad51f77f9141c9912b2795e810e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / wont-0.1.0-py3-none-any.whl
| Download URL | wont-0.1.0-py3-none-any.whl |
|---|---|
| Size | 385.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a62d2dff005c2443c40ba828860a148d946c5b5066eb72320f5c69079430f38c
|
|
BLAKE2b-256 checksum How to use checksums |
beed3da3fbe81b1c5f1dd02bb9c63f8d054fca1e2f3bb9ae30170c35456b69a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log