Skip to main content

Memory debugging for AI agents: trace a wrong answer back to the exact memory that caused it, replay without it, and prove the fix.

Project description

Ferryte

Memory debugging for AI agents. Source-available (BSL 1.1 → Apache 2.0) · commercial Cloud + Enterprise tiers.

Marketing site · Live dashboard demo · LICENSING · COMMERCIAL

Your agent gave a wrong, stale, or leaked answer. Somewhere in its memory is the artifact that caused it. Ferryte finds that artifact, shows you the evidence, and proves the fix worked.

pip install ferryte
ferryte why "your plan includes 24/7 phone support" --tenant acme
#1  mem_a41f9c2e  ·  confidence 1.00  ·  STALE BELIEF
    shared span: "includes 24/7 phone support"
    superseded by mem_77b0d1 ("phone support was dropped in the March plan change")
    last retrieved 2h ago · written 41 days ago · source: sales-call-0311
    fix: ferryte delete mem_a41f9c2e --cascade

Why this exists

Agent memory is production state, but when it misbehaves there is no debugger for it. Logs show what the agent said; nothing shows which memory made it say that. Teams grep vector stores by hand, guess, delete, and hope.

Ferryte is the missing layer — think Sentry, but for agent memory:

  • Trace: one line (ferryte.instrument()) records every memory write, retrieval, and delete, building a lineage graph from each source to every derived artifact.
  • Attribute: ferryte why ranks the memories that caused a given answer — IDF-weighted content overlap, shared-span evidence, retrieval traces, and exact answer→memory edges when you opt in via ferryte.record_answer().
  • Diagnose: each suspect is labeled — stale belief (structurally provable via supersession edges), zombie memory (deleted but still retrieved), cross-tenant leak, phantom memory (source revoked), hub memory (poisoning-style retrieval fan-out).
  • Replay & verify: ferryte why --replay re-runs retrieval without the suspect and shows what would have entered the context instead. After the fix, the same command proves the bad memory is gone.

Quickstart

import ferryte

ferryte.instrument()          # one line; auto-patches detected memory clients
# ... your agent runs as usual ...

# optional, for exact attribution:
ferryte.record_answer(answer_text, query=user_query, artifact_ids=context_ids)

Then, when something goes wrong:

ferryte why "the bad answer text" --tenant acme --since 2h
ferryte why "the bad answer text" --tenant acme --query "original user query" --replay

CI gate

The same lineage engine powers a deletion-verification gate. Seed canaries, revoke through the backend's real delete API, and fail the build if a revoked marker re-enters retrieval:

ferryte init
ferryte test --scenario source-revocation
ferryte coverage        # what was verified + the honest blind-spot map

Scenarios: source-revocation, cross-tenant-isolation, stale-fact, memory-poisoning.

Supported backends

Mem0, generic vector stores (pgvector / Chroma / in-memory), AWS Bedrock AgentCore, Letta, Cloudflare Agents. Zep / Graphiti in progress.

Project layout

ferryte/
├── src/ferryte/            # Python core + CLI (pip install ferryte)
│   ├── instrument.py       # one-line auto-patching
│   ├── adapters/           # memory-backend adapters
│   ├── lineage/            # source → artifact graph, answer lineage, supersessions
│   ├── oracle/             # attribution engine, counterfactual replay, scenarios
│   ├── reports/            # coverage + blind-spot map
│   └── api/                # local HTTP server feeding the dashboard
├── dashboard/              # Next.js marketing site + dashboard
├── benchmark/              # public backend benchmark harness
└── tests/

Licensing

Ferryte is source-available under the Business Source License 1.1: read, run, modify, and self-host in production for free. Each version converts to Apache 2.0 four years after release. The one thing the license does not permit is reselling Ferryte itself as a competing hosted or embedded service. Same model as MariaDB, CockroachDB, and HashiCorp.

Details, contributor license, and trademark policy: LICENSING.md. Commercial tiers (Cloud, Enterprise): COMMERCIAL.md.

Status

Pre-launch. The source-available engine ships now; Cloud and Enterprise gate behind design partners. Looking for teams running AI agents with persistent memory in production who are fighting wrong answers they can't explain.

If that is you: open an issue, email hello@ferryte.dev, or reach out via the site.

Project details


Download files

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

Source Distribution

ferryte-0.2.3.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

ferryte-0.2.3-py3-none-any.whl (92.6 kB view details)

Uploaded Python 3

File details

Details for the file ferryte-0.2.3.tar.gz.

File metadata

  • Download URL: ferryte-0.2.3.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for ferryte-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f6b4a2f1db436ad4feb8d6877163a5313a5ad752e06cf3842642689bae87932a
MD5 52adbb3aa589663103783106316a8f0f
BLAKE2b-256 f27461d84f633c57e4788a8602c3c2f0740e7d97b5cf1603bd268bd810bbd991

See more details on using hashes here.

File details

Details for the file ferryte-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: ferryte-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 92.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for ferryte-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 af09690c025b13d9f128ffdf436a061539db93bc5f6f4c774490e2f82341325d
MD5 404cd1f10bdc287e01b25d61d8155d15
BLAKE2b-256 3c4a2609ef15c891271158bdbb7388f7685dc570dc22a457bd19f44da355a329

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