Skip to main content

Verification for agent forgetting: prove your AI agent stops acting on revoked, stale, poisoned, or cross-tenant data.

Project description

Ferryte

Verification for agent forgetting. Source-available (BSL 1.1 → Apache 2.0) · commercial Cloud + Enterprise tiers.

Marketing site · Live dashboard demo · LICENSING · COMMERCIAL

"Deleting an event doesn't remove the structured information derived out of it from the long term memory." — AWS Bedrock AgentCore docs

When you delete a record, revoke a permission, or quarantine a source, your agent's derived memories (summaries, embeddings, extracted facts) often keep behaving as if the data is still there. The platform vendors document this. Almost nobody verifies it.

Ferryte is the forgetting oracle. It seeds canary memories, calls the real delete API, replays your agent, inspects both the store contents and the retrieval traces, and tells you exactly which derived artifacts still leak — including an honest map of what it cannot see.

It is built for one thing: catching the leak before your customer does.

Why this exists

Agent memory is production state, but teams don't test it like production state. Sentry observes errors that already happened. Ferryte detects counterfactual failures: information that should no longer be allowed to influence behavior, but still does.

The crux:

  • AWS Bedrock AgentCore: deleting a short-term event does not remove derived long-term memory records.
  • Zep: deleting an episode does not regenerate the shared node summaries that already absorbed it.
  • Mem0 / generic vector stores: deletes the row, but embeddings already in retrieval caches keep returning.

Ferryte is the layer that proves whether forgetting actually happened.

What it does (v1)

  1. Seed deterministic canary memories tagged by source_id and tenant_id.
  2. Revoke via the backend's own delete / permissions API.
  3. Replay agent probes AND directly inspect store contents + retrieval traces — not just final answers. (Final-answer-only verification gives false confidence.)
  4. Trace the lineage from each source to every derived artifact it influenced; compute blast radius on revocation.
  5. Report coverage + the blind-spot map (where we cannot prove forgetting — un-instrumented stores, laundered LLM-paraphrased derivations, external caches).
  6. Gate CI: fail the build when a revoked marker re-enters retrieval or prompt.

Scenarios shipped:

  • source-revocation — flagship: delete a source, prove no derivative still surfaces it.
  • cross-tenant-isolation — Tenant A's data never reaches Tenant B's agent.
  • stale-fact — agent refuses or flags facts past their valid window.
  • memory-poisoning — planted malicious write is detected and quarantined.

Install

pip install ferryte

Quickstart (under 10 minutes)

import ferryte
from mem0 import Memory

ferryte.instrument()              # one line; auto-patches detected memory clients
mem = Memory()                    # your existing code, unchanged
# ... your agent runs ...

Then in CI:

ferryte init                      # zero-config: discovers the agent + memory backend
ferryte test --scenario source-revocation
ferryte coverage                  # prints what was verified + the blind-spot map

A non-zero exit code on ferryte test means a revoked marker re-entered the agent's prompt. That's the build break.

Architecture

your agent  ─┐
             │  one-line auto-patch
             ▼
      ferryte.instrument()
             │
   ┌─────────┼──────────────┐
   │         │              │
   ▼         ▼              ▼
backends    lineage      retrieval
adapters    graph         traces
   │         │              │
   └─────────┴──────┬───────┘
                    ▼
            forgetting oracle
                    │
        ┌───────────┼────────────┐
        ▼           ▼            ▼
    coverage    CI gate       dashboard
    + blind-    (fail on      (Next.js)
    spot map    leak)

Backends in v1: Mem0 + a generic vector store (pgvector / Chroma / in-memory). Architected for fast-follow: Zep / Graphiti and AWS Bedrock AgentCore.

Explicitly deferred (fast-follow, NOT in v1)

  • Runtime retrieval enforcement filter (latency-sensitive; ship after design partners ask).
  • Zep + AgentCore adapters (architected for, built next).
  • Audit receipts / compliance attestation layer (expansion path).

Project layout

ferryte/
├── src/ferryte/            # Python core + CLI (pip install ferryte)
│   ├── instrument.py       # one-line auto-patching
│   ├── adapters/           # memory-backend adapters (Mem0, vector store, ...)
│   ├── lineage/            # source → derived-artifact graph + blast radius
│   ├── oracle/             # canary + scenario runner
│   ├── reports/            # coverage + blind-spot map
│   └── api/                # local HTTP server feeding the dashboard
├── dashboard/              # Next.js + Tailwind UI (Glyff design system, dark)
├── demo/                   # self-contained multi-tenant memory leak demo (the 30s X clip)
├── launch/                 # X thread copy, design-partner signup
└── tests/

Source-available

Ferryte is source-available under the Business Source License 1.1.

  • Core (BSL 1.1, free to read / run / self-host) — the library, CLI, four scenarios, lineage graph, Mem0 + vector adapters, local Next.js dashboard. Everything you need to verify forgetting in your own CI, in production, for free. Each version converts to Apache 2.0 three years after release.
  • Cloud (private beta) — hosted continuous verification, regression alerts, multi-environment, Slack/PagerDuty integrations. Design partners only through 2026.
  • Enterprise (annual contract) — self-hosted with SSO/RBAC/audit logs, premium adapters (AgentCore, Zep, GovCloud), signed compliance attestations (GDPR / CCPA), runtime retrieval enforcement (v2), support SLA.

The one thing BSL does not permit: reselling Ferryte as a hosted/embedded service that competes with Ferryte Cloud. Everything else — read, run, modify, self-host in production — is free. The exact boundary, contributor license, and trademark policy are in LICENSING.md. The commercial-tier scope and how to apply are in COMMERCIAL.md.

Same model as Sentry, CockroachDB, HashiCorp, and MariaDB.

Status

Pre-launch. The source-available engine ships now; Cloud and Enterprise gate behind design partners. Looking for B2B SaaS companies running multi-tenant AI agents in production with persistent memory.

If that is you: open an issue, email hello@ferryte.dev, or sign up via the marketing site.

License

v0.2.0 and later: Business Source License 1.1, converting to Apache 2.0 three years after each release — see LICENSE. v0.1.0 and earlier: MIT (a published release cannot be relicensed) — see LICENSE-MIT.txt. Commercial Cloud / Enterprise tiers are closed-source — see LICENSING.md for the precise boundary.

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.1.tar.gz (1.4 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.1-py3-none-any.whl (50.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ferryte-0.2.1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferryte-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a8afdfb6f46320fe5b38cea19c834d5ab7c18744183560e3d0179ac9570390ef
MD5 048e51c3d240adf09fbdfd90fe170be7
BLAKE2b-256 57fe4a9afe1e4036588024e8185c704513fa601eac35e67e9d42253ad0ac468f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferryte-0.2.1.tar.gz:

Publisher: release.yml on getferryte/ferryte

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ferryte-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 50.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferryte-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cb8f99b395bb44c6ee171afc233c3aac5c5e0c28cb5fc3f9bf37f927cde256e0
MD5 4d8a35576c41a411e1f34bdcc1af70d1
BLAKE2b-256 13908da11732491485e4e939a7a667b3d0cab616e0e959267213137538a9b703

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferryte-0.2.1-py3-none-any.whl:

Publisher: release.yml on getferryte/ferryte

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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