Skip to content
OPEN SOURCE / MIT LICENSEDONE OWNER. YOUR INFRASTRUCTURE.VIEW SOURCE

[ A RECORD OF YOUR AGENT'S WORK ]

See what your agents actually did.

Capture Python runs and Claude Code sessions. Inspect prompts, tool calls and results, replay recorded traces, and verify audit history in one local workspace.

MIT licensed. One owner. Your infrastructure.

FACT0 / EXECUTION.RECSYNTHETIC EXAMPLE

01 / INPUTS

your agent
Fact0 SDK
tool results
local API

Your code.
Your chosen capture.

02 / CAPTURE

f0

SDK events +
supported hooks

03 / EXECUTION

CUSTOM / TOOL

Calculate a total01
add(19, 23)02
Handled failure03

04 / RECORD

8EXAMPLE EVENTS
STORED VALUE42
PDF + ZIP GUIDE

Synthetic examples. No agent is running on this page. Your dashboard shows your captured data.

Run it where
your data lives.

Start the API, dashboard and PostgreSQL with Docker Compose. Create the owner locally, make an API key, and point your agent at your installation.

  • Owner password login
  • Authenticated ingestion and inspection
  • Data and signing keys stay with your instance
FULL INSTALLATION GUIDE
01-start-fact0.sh
git clone https://github.com/fact0-ai/fact0.git
cd fact0
python3 scripts/init-env.py
docker compose up --build -d --wait
docker compose exec web node scripts/owner.mjs create

Linux or macOS · Docker Compose v2 · Python 3 · OpenSSL 1.1.1+

Two ways in.
One history.

Python agents

Instrument the agent you already run.

Use the Python SDK to record execution spans, tool results, supported model content and audit events. Start with the included example; it needs no model account.

OPEN THE GUIDE
python-example.sh
python3 -m venv .venv
. .venv/bin/activate
pip install -e ./sdk/python
export FACT0_BASE_URL=http://localhost:8000
# Set FACT0_API_KEY to your local key.
python examples/local-python.py

The example includes a nested execution, a successful tool and a handled failure.

Claude Code

Keep a record of your coding sessions.

Prepare the collector, connect the plugin and inspect supported prompts, assistant text, tool calls and errors. Claude keeps using your existing model configuration.

OPEN THE GUIDE
claude-setup.sh
export FACT0_BASE_URL=http://localhost:8000
# Set FACT0_API_KEY to your local key.
claude-code-plugin/bin/fact0-cc prepare
claude --plugin-dir ./claude-code-plugin

Raw capture is the default. Missing or unsupported content is marked partial or unavailable.

Less guessing.
More of the record.

A graph for the path. A timeline for the order. The captured content beside the step that produced it.

VIEW_01

Follow the execution.

Move between the graph, timing waterfall and recorded spans to understand the order of a run.

READ MORE
VIEW_02

Read the captured values.

Expand supported prompts, assistant text, tool input/output and errors. Copy or download the full stored value.

READ MORE
VIEW_03

Walk through the record.

Replay saved execution events at your own pace. Replay reconstructs history; it does not rerun the agent.

READ MORE

Verify the record.
Know what it means.

Audit verification and signed exports make stored history inspectable. They do not turn missing capture into complete evidence.

CHECKWHAT YOU CAN ESTABLISH
Audit chainThe checked records are consistent with their hashes and preceding links.
Signed files in the evidence ZIPThe PDF and verification JSON match a separately trusted instance public key. The ZIP archive itself is not signed.
Capture statusSupported omissions are shown as partial or unavailable, with a reason.
Outside that guaranteeComplete capture, truthful source data, regulatory compliance or protection from an administrator replacing the whole history.
VERIFICATION + EXPORT GUIDE

Good questions.
Plain answers.

Experimental software, explicit limits. Read the source, inspect what is captured, and decide what belongs in your installation.

SECURITY + DATA HANDLING

Getting started

What do I need to run Fact0?

Docker with Compose v2, Python 3 and OpenSSL 1.1.1 or newer on Linux or macOS. The core runs a Go API, Next.js dashboard and PostgreSQL. Setup creates one owner and one workspace; no Fact0 cloud account is required.

Can I try it without a model account?

Yes. The included Python example records a synthetic execution with a tool call and handled failure. Claude Code capture uses your existing Claude installation and model configuration.

Capture and control

Where does captured data go?

To the PostgreSQL database in your installation. The Claude collector also keeps a private local retry spool. Raw capture can contain prompts, source code, personal data and secrets, so the operator controls access, backups and retention.

Does it capture every agent action?

No. Python capture depends on your instrumentation. Claude capture depends on supported hooks and transcript formats. Missing, malformed or unavailable content is reported explicitly. Metadata and hash modes reduce content sent to the API; the private retry spool can still contain raw hook data. These modes are not secret-redaction guarantees.

Scope and trust

What does audit verification prove?

A passing check establishes consistency of the stored records checked. Export verification checks signed file bytes against a separately trusted public key. Neither proves complete capture, truthful source data or protection from an administrator replacing the whole history.

Is this a hosted service or an enforcement tool?

This is experimental, MIT-licensed self-hosted software with best-effort maintenance. It does not provide hosted billing, team invitations, policy enforcement, a compliance certification or an SLA. The current supported release is for one owner and one workspace.