Security

Kiori holds very little, on purpose: no brains, no chats, and one key of yours that it guards closely. This page says exactly what Kiori keeps, how your keys are protected, and what you can do on your side.

What Kiori keeps

KeptWhat exactly
Your projectIts name, a contact email, and your model settings: the provider, the model, and your brain API key, sealed (see below).
Your Kiori keysA SHA-256 hash of each key, its first ten characters, its label, when it was made and when it was last used (to the minute). Never the key itself.
Sign-in linksA hash of each link's one-time token, until it's used or runs out (7 days).
Your access requestYour email, and the name, company and use case you wrote, with the address it came from.
UsageCounts: calls per endpoint per day, and for each model call Kiori made on your key, what it was for, the model, the tokens and the cost.
Failed callsFor a call that failed on our side: when, which endpoint, the status and its code, and your provider's status. Kept 30 days.

Never kept: brains, chats, messages, prompts, or anything a model wrote. A brain and its messages are in our server's memory while a call runs, parts of them go to your model provider in Kiori's prompts, and then they're gone from our side.

Your brain API key

Kiori does its thinking on your model provider key, so that key gets the most care:

On your side, the best protection is simple: give Kiori a key of its own, with a spending limit at your provider (OpenRouter lets you set a credit limit on each key; OpenAI, a budget for each project). Then even a mistake can only spend so much, and you can replace that one key without touching anything else.

Your Kiori keys

A sign-in link holds no key: it holds a one-time token, good for 7 days and kept by Kiori only as a hash. When the link opens, the console trades the token for a Kiori key of that browser's own, and the token is gone; a link that leaks from a mailbox later opens nothing. Signing out of the console revokes that browser's key.

The console

The console keeps your Kiori keys in your browser's local storage and talks to the API directly. Its page lets only its own script run (a Content-Security-Policy made from the page itself), sends no referrer, and can't be framed by another site.

On the wire

What your model provider sees

Kiori's model work goes to the provider of your brain API key, under your account with them: the text of each model call (parts of the brain and of the chat, in Kiori's prompts) and the texts it makes meaning fingerprints of. Their terms and data settings apply, so check them for training and retention.

Reporting a problem

Found something that looks like a vulnerability? Write to aras@kiori.io with "security" in the subject. Please give us a chance to fix it before telling others, and don't touch anyone else's project while looking. We'll answer quickly, and thank you by name if you like.

© 2026 kiori · brains for characters