What we hold, and how it is kept apart.

Threadless AI holds your agents' conversations. This page says plainly what is stored, where, who processes it, and what you can do about it.

What is stored

For each memory:

  • Every message you send through decorate, as you sent it, including your instructions and tool outputs; every reply you send through report.
  • The episodes the conversation is cut into, and their states.
  • Facts written by your model with the note tool, or by the system.
  • Traces: when each fact was judged relevant to each episode.
  • Embeddings of facts and of passages from sealed episodes, for search; and recall prepared for the next message.
  • Your metadata pairs, the turn count, timestamps and stored size.

For your account: your email address, organisation and projects, usage counts per day, and a hash of each API key. We do not see or store your OpenAI key.

Isolation by memory id

The memory id is the only scope there is. Every record is keyed by its memory, every read and write names it, and every index leads with it. A request without a memory id is refused; it is never widened to more than one memory. Recall searches within one memory and never across your other memories, let alone anyone else's.

A memory belongs to the project of the key that created it, and a key reaches only its own project's memories: any other id answers 404 not_found, the same as an id that does not exist. The console and the admin API can see a memory's size and activity. They can never read its content.

Keys stored only as hashes

API keys are random, with a readable prefix (tl_live_, tl_test_, tla_). A key is shown once, when it is created; we store only a SHA-256 hash of it and compare hashes on every request. Keys are scoped to one project, live and test keys are separate, and a revoked key stops working on its next request. Sign-in codes are stored as keyed hashes and burn after one try.

Deletion that verifies

DELETE /memories/{memory_id} marks the memory as deleting, so no background work starts on it, then removes its messages, facts, traces, passages, prepared recall and queued jobs. It then counts what is left for that memory in each of them. Only when every count is zero is the memory record itself removed and 204 returned. If anything remains, the call fails rather than reporting a deletion that did not happen.

Deletion is permanent and cannot be undone. It does not reach into database backups; copies there expire with the backup schedule.

Export

GET /memories/{memory_id}/export returns everything a memory holds as JSON: every message with its turn and time, every episode with its state and turns, and every fact with its entities, who wrote it and when. It is yours to keep or to move.

Where data is processed

Your conversation content is processed on our servers. That is the point of the service: to forget well, we have to read what is being forgotten.

  • Your model call never passes through us. The SDK returns the request; your process sends it straight to OpenAI with your own key, and you report the reply afterwards. We see the request you decorate and the reply you report.
  • The runtime (decorate, report and background work) runs on our own servers in the United States (US East), with each memory's knowledge graph in its own group of our graph database. Embeddings are computed by a third-party embedding API, which receives the text being embedded.
  • Judgments (where episodes begin and end, which facts are relevant, which facts to keep, and which entities and facts in the graph are the same) are made by third-party model APIs that we call. Each receives the parts of the conversation and the facts its judgment needs.
  • Storage is MongoDB Atlas, in the United States, encrypted at rest.
  • This website and the console are hosted on Vercel. They never handle memory content.

Connections to the API are encrypted with TLS. The full list of data processors, with names and locations, will be published here before general availability.

Reporting a vulnerability

Email support@threadlessai.com. We will acknowledge it and keep you informed while we fix it.

See also the draft privacy policy and terms.