Flight recorder for AI agents - append-only, tamper-evident tool execution logs
Project description
Lightbox
Flight recorder for AI agents. Append-only, tamper-evident tool execution logs.
What it is / isn't
- Records tool calls (send_email, read_file, api_call) - not LLM prompts/responses
- Append-only JSONL with SHA-256 hash chaining
- Offline verification - no network needed
- Local-first - sessions are portable directories you can zip and share
- Not a debugger, profiler, or execution controller - recording only
Quickstart
pip install lightbox-rec
SDK Usage
from lightbox import Session
session = Session()
session.emit("send_email", {"to": "user@example.com"}, {"success": True})
session.emit("read_file", {"path": "/data.txt"}, {"content": "Hello"})
LangChain Integration
from lightbox.integrations.langchain import wrap
agent = wrap(your_agent) # Automatically records tool calls
agent.invoke({"input": "Do the thing"})
CLI
lightbox list # Show all sessions
lightbox show <session> # Display events
lightbox replay <session> # Animated playback
lightbox verify <session> # Check integrity
Where logs live
~/.lightbox/sessions/<session_id>/
events.jsonl # Append-only event log
meta.json # Session metadata
Override with LIGHTBOX_DIR environment variable.
Exit codes (verify)
| Code | Status | Meaning |
|---|---|---|
| 0 | VALID | All checks pass |
| 1 | TAMPERED | Hash mismatch or chain break |
| 2 | TRUNCATED | Incomplete last line (crash mid-write) |
| 3 | PARSE_ERROR | Invalid JSON in event file |
| 4 | NOT_FOUND | Session doesn't exist |
Redaction
from lightbox import Session, RedactionConfig
config = RedactionConfig(
redact_keys=["api_key", "password"], # Always redact
max_inline_bytes=64 * 1024, # Hash content over 64KB
)
session = Session(redaction_config=config)
Documentation
- Event Format - Event schema and canonicalization rules
- Integrations - LangChain and framework usage
- Security - Threat model and verification
- Changelog - Version history
License
MIT - see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lightbox_rec-0.1.0.tar.gz
(39.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lightbox_rec-0.1.0.tar.gz.
File metadata
- Download URL: lightbox_rec-0.1.0.tar.gz
- Upload date:
- Size: 39.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31b3bbac771ea38a3fbb2a38158cb98430c3fd9bfcdabf530efb42a15c54ab3f
|
|
| MD5 |
06cb7c81f2f0d759ebbcff204bf2db6b
|
|
| BLAKE2b-256 |
422d336ed3611b71340aca81ef2afde43b1ac58a9a446c55d23596400da2c957
|
File details
Details for the file lightbox_rec-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lightbox_rec-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33b0d89bbc4befd080b4d81e5ec46acd4154079d18a70980d5917b61424c3fb7
|
|
| MD5 |
dde564d456414207c1818a9dfdaa5420
|
|
| BLAKE2b-256 |
22291f5b1994ede42c320edf74583a00e67135fcc11c7dc2d67100bf23babe06
|