Skip to main content

modelmri-record

Record what your agent actually did — LLM calls, tool calls, subagents, errors — and look at it on a timeline instead of scrolling logs.

pip install modelmri-record

Stdlib only. No torch, no numpy, no SDK pins. Instrumenting an agent shouldn't cost you a 2.5 GB install.

Use

from modelmri_record import trace, step

with trace("fix-failing-tests"):
    step("llm_call", name="plan", input=prompt, output=answer,
         duration_ms=1200, tokens_in=900, tokens_out=200)

    with step("subagent", name="test-runner"):
        step("tool_call", name="pytest", input="-q", output="3 failed")

Nesting is automatic — a step used as a context manager becomes the parent of everything recorded inside it, and its duration is measured for you.

Auto-instrument an SDK instead:

from modelmri_record import instrument_anthropic
instrument_anthropic()      # every Messages.create is now an llm_call step

Where traces go

POSTed to a running ModelMRI viewer on http://127.0.0.1:5900. If nothing is listening, they're written to ./modelmri-traces/*.json to import later — so you can record on a box that has no viewer and look at it somewhere else.

To view them: pip install modelmri && modelmri serve.

Credentials are redacted by default

Agent prompts routinely contain the key the agent was handed. A recorder that writes those to disk verbatim is a liability dressed as an observability feature, so redaction is on unless you switch it off:

with trace("run"):                      # default scrubber
with trace("run", redact=my_function)   # your own str -> str
with trace("run", redact=False)         # verbatim, deliberately

Covered: sk-…, hf_…, pypi-…, ghp_…/github_pat_…, xoxb-…, Google AIza…, AWS key ids, Bearer …, and whole PEM private-key blocks.

Patterns are deliberately narrow — known credential shapes, not "anything high-entropy". A redactor that eats hashes and UUIDs makes traces useless, and a useless trace gets the feature turned off, which protects nobody. Add your own shapes:

from modelmri_record.redact import make_redactor
red = make_redactor([r"ACME-[0-9]{6}"])

It will not take down your app

Recording is best-effort by contract. If the viewer is unreachable, the disk is read-only, or the payload won't serialise, it gives up quietly. A tracing library that can raise is one nobody leaves switched on.

Traces still open when the process exits are flushed by an atexit hook — a crash or a SIGTERM is exactly the run you most wanted to look at.

Licence

MIT. Part of ModelMRI.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modelmri_record-0.1.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modelmri_record-0.1.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file modelmri_record-0.1.1.tar.gz.

File metadata

  • Download URL: modelmri_record-0.1.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for modelmri_record-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5f47d7107ed2775f4d87d3feb8734f2b8eac52d9cf8430d811718fc6f7b619c3
MD5 9da760dc96144c7a91b075a6d5529ae3
BLAKE2b-256 638152788bc7edb0718fd398bd5419b94d4867e9a20c077ea4095e9f9075f42d

See more details on using hashes here.

File details

Details for the file modelmri_record-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: modelmri_record-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for modelmri_record-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 96961703fb623328beae9e99da61b036d0e929eeef7fbea533415378ebdc7213
MD5 51aa08037ce9ebc774dad10526508469
BLAKE2b-256 586754e8f5ba6a9d8c22c411afca508abade24bc40875bdc5d5e22540ba47413

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page