Instrument
One line — ferryte.instrument(). Auto-patches Mem0, pgvector, and custom stores at construction time. Your agent code does not change.
import ferryte
ferryte.instrument()
# the rest of your app stays the sameFerryte does not ask you to migrate your memory layer or wrap your agent. It instruments what you already run, and tells you the truth about what survives a delete.
One line — ferryte.instrument(). Auto-patches Mem0, pgvector, and custom stores at construction time. Your agent code does not change.
import ferryte
ferryte.instrument()
# the rest of your app stays the samePlants deterministic canary memories tagged by source and tenant — markers that cannot occur naturally in your data, so a positive is never a coincidence.
# under the hood
oracle.plant(
tenant="acme",
source="acme-doc-1",
marker="ORION-DELTA-77",
)Calls your backend’s real delete API. Not a mock, not a wrapper. The exact code path your production runs when a tenant revokes a source.
# your code
store.delete_by_source("acme-doc-1")
# returns 1 — primary record removedInspects both raw store contents and retrieval traces — not just agent answers, which give false confidence. Fails CI on any surviving marker.
# ferryte gates the build
$ ferryte test --scenario source-revocation
source-revocation FAIL 3 findings
exit code 1 — build break› store.delete_by_source("acme-doc-1")
# returns 1 — primary record removed
› agent.ask("acme", "what is the launch code?")
Based on what I remember:
the launch code is ORION-DELTA-77.
# the per-tenant summary absorbed it.
# nothing flagged.› ferryte test --scenario source-revocation
source-revocation FAIL 3 findings
FAIL revoked_marker_in_probe
Revoked source 'acme-doc-1' still surfaces
marker 'ORION-DELTA-77' via retrieval on
tenant 'acme' (kind=summary, id=27dea877…).
exit code 1 — build breakBlind spots are surfaced in every coverage report. We would rather under-claim than ship a green build that hides a leak.
First-class adapter. Auto-patch on construction.
Generic vector adapter via SQLAlchemy session.
Implement the 80-line MemoryAdapter protocol.
Adapter in design-partner preview.
Adapter in design-partner preview.
Tracing hooks landing next.