Security & data residency

Where the memory lives, and how to erase it

EU-hosted, TLS in transit, scoped per end user, and erasable with one call. Here’s exactly what touches your agents’ data.

Stored in the EU

Your agents’ memory is stored on our own servers in the EU and is not replicated to the US, on every tier. The model that reads a memory at write time follows the project’s region: Europe keeps it in the EU (Scaleway, Paris); Global, the default, sends the text to Google’s Gemini API.

Encryption and access

TLS for everything in transit. The database runs on our server in Helsinki and is not reachable from the public internet: only the Korely backend talks to it. API keys are never stored in plaintext, we keep only a SHA-256 hash, show the key once at creation, and verify in constant time. A leaked key can be revoked instantly.

One-call erasure

Delete every memory and fact for one end user in a project with a single call: DELETE /v1/users/{end_user}/memories. The rows are physically deleted, superseded facts included, not flagged. Encrypted nightly backups keep a copy for up to 35 days, after which it expires. An audit record keeps the counts, never the content, so you can prove the erasure happened. Your deletion endpoint wires straight to ours.

Your data is yours

We do not train any model on your stored memories or facts. The language model of your project’s region (Gemini, or gpt-oss-120b on Scaleway in the Europe region) reads your text for extraction and contradiction checks: inference, not training. Embeddings are computed on our own server. You can delete your account and its data at any time.

Scoped isolation

Every memory is scoped by your account and the key’s project, and by the end user, agent and run you write it under when you set them. Cross-tenant reads are impossible by construction, the scope is enforced server-side on every query, not by prompt discipline. One customer’s memories can never surface in another’s results.

Keys scoped to a project

A key without the admin scope reads and writes only the memories and facts of its own project, so a staging key never touches production data. A key carries memories:read, memories:write or both, and a separate administration key can also carry admin, which manages projects, keys and webhooks through /admin, can read and change the memories and facts of every project of the account, and is never given by default: create a read-only key for an agent that only reads, and a write from it answers 403. The kor_live_ prefix makes keys recognizable to secret scanners. Revoke is instant, and the masked key and its last-used time are visible in the dashboard.

Sub-processors

The third parties that process Agents memory data, and exactly what each one sees.

Sub-processor Purpose Location Data
Hetzner Online Hosting, database & embeddings European Union (Helsinki, Finland) All memories, facts, embeddings, and account data at rest. The embedding model (EmbeddingGemma) runs on the same server: memories, facts and search queries become vectors there.
Google (Gemini API) Fact extraction and contradiction checks on writes, Global region (the default) United States and other countries where Google has facilities (EU Standard Contractual Clauses) The text of a memory at write time, with the end user’s identifier and up to ten earlier memories of the same end user (300 characters each), to extract typed facts; the earlier facts a new one is compared with, for the contradiction check; and a new relation phrase, the first time it appears in that end user’s facts; and the subject, relation and object of a fact you write with POST /v1/facts or correct with PATCH /v1/facts/{id}, for the same vocabulary and contradiction checks. Searches and context queries do not reach Google. Not used to train Google’s models. Google keeps prompts and responses for 55 days to detect abuse and does not use them to improve its products.
Scaleway (Generative APIs) Fact extraction and contradiction checks on writes, Europe region European Union (Paris, France) In projects of the Europe region, the same data Google receives in the Global region, read by gpt-oss-120b instead. Prompts and outputs are not stored, except a request that causes an abnormal error or that Scaleway detects as malicious (kept temporarily to investigate it, up to two weeks for an error). Not used to train any model.
Cloudflare DNS, website hosting and encrypted backups Global edge; backups in an R2 bucket under the EU jurisdiction DNS of korely.ai and hosting of the website. The nightly database backups, encrypted on our server before upload with a key Cloudflare does not have. The API and the dashboard are served from our server in Helsinki, which terminates TLS itself.
Firebase Authentication (Google) Developer sign-in United States (EU Standard Contractual Clauses) Developer account email and auth tokens. Not your end users.

Need a data processing agreement or sub-processor list for procurement?

Email us with your company and use case. We’ll send the data processing agreement and answer security-review questions directly.

security@korely.ai

See also the changelog and the API reference.