taisce.
What can remember — and prove it forgot?
Memory for your AI agents. Your agent tells Taisce what happened; later it asks a question and gets back facts, each with the exact words it came from and when it was true. When someone asks to be forgotten, you get a count of what is left, and it is zero.
The turn is stored and acknowledged at once. Nothing waits for a model.
Memory that shows its work.
Six things your agent gets that a pile of stored text can't give it. How it works →
Answers from the things a question names
Recall starts at the people and things your question names and follows the facts around them, instead of searching for similar sentences. It never calls a model, so a slow model delays new memories, not answers.
anchors → factsEvery fact shows its words
Each fact carries the exact quote it came from and where that quote sits in the stored message. A claim whose words are not there is refused before it is stored.
quote · byte_start · byte_endTwo clocks on every fact
When something was true, and when Taisce learned it. A new job supersedes the old one without erasing it, so you can ask what was true then, or what was known then.
as_of · as_known_atForgetting you can count
Erasing a person removes everything derived from what they said, then recounts what still matches them in the same transaction. The receipt says what was deleted and what is left.
deleted · residual · cleanMemory reaches the model as data
Every adapter hands memory over as one user message marked untrusted, never as a system instruction, and one conformance suite holds Python, .NET and Java to it.
taisce-memory/v1 untrustedJust PostgreSQL, on your infrastructure
No vector database, graph engine or queue to run: one database to operate, back up and erase from. All of it is Apache-2.0.
docker compose upProof you can run, not a promise.
Recalling entities, keeping time and answering without a model are what good agent memory does. These four are what Taisce adds, and each one is a field in a response or a test you can run yourself.
Evidence to the byte, or no fact
A fact is stored only with the quote that supports it and that quote's position in the message. You check an answer by reading the words, not by trusting the extraction.
See it →erasureA receipt that counts what is left
Erasure returns what it deleted and a recount of what still matches the person, taken in the same transaction. A clean receipt is a count of zero, not a status message.
See it →substrateEntities and time on one database
Entity-anchored, two-clock recall with no graph database or vector database beside PostgreSQL, and no licensed tier for either. One place data lives is one place an erasure has to reach.
See it →adaptersOne contract for every adapter
Python, .NET and Java adapters pass the same live conformance suite: memory enters as untrusted data, a failed recall never stops the turn, a failed save is never silent.
See it →Compared on 2026-09-13 with the agent-memory products whose documentation we could read. The survey, with every source and what it could not confirm, is issue #30.
One memory, start to finish.
Saving is instant; learning happens in the background. A freshness check tells your agent how far behind its memory is.
docker compose upStarts PostgreSQL and the service from published images, and prints your first tokens.Your agent sends what happened
A turn is saved straight away and you get its position back. Saving never waits for a model, so memory never slows your agent down.
POST /v1/observationsTaisce turns it into facts
In the background, a model reads each message and pulls out facts. Every fact keeps the exact words it came from, or it is thrown away.
stored → formedAsk, and get facts with their words
A question starts at the people and things it names and follows the facts around them. You get each fact with the quote behind it.
POST /v1/recallsForget someone, and see the proof
Erase a person and Taisce removes everything derived from what they said, then counts what is left. The count you get back is zero.
POST /v1/erasuresPlug it into what you already use.
Adapters add memory to your agent framework in a few lines. Before each answer they fetch what's known; after, they save the turn. Every adapter passes the same test suite.
taisce-agent-framework · taisce-langgraphRead the guide →.NETMicrosoft Agent FrameworkTaisce.AgentFrameworkRead the guide →JavaSpring AI · LangChain4jtaisce-spring-ai · taisce-langchain4jRead the guide →MCPClaude Code and other coding agentsPOST /mcpRead the guide →HTTPAny language, plain JSON over HTTP/v1/…Read the guide →CLIProjects, keys, health and the audit logtaisceRead the guide →From a first example to the last index.
Examples
Short recipes: remember a preference, answer with evidence, forget a person.
architectureHow it is built
Saving, learning, recalling and forgetting, step by step, and how it is secured.
postgresqlThe database layer
Tables, roles, concurrency, indexes and query plans.
referenceEvery line, generated
Every package, function, test, table and migration, straight from the code.
The people building Taisce.
Built by Ensera and shaped by everyone who sends a fix, a test, a page of documentation or a good question. Your name belongs here too: add it with your first pull request.
