Security
Only what is actually built.
Everything on this page is a control that is running in the product today. Where a control is on our plan but not yet in the product, this page leaves it out entirely rather than describing it in a way that reads as though it were there.
Where your data lives
On our hosted service at memry.dev — each company’s data is isolated by the engine, on our server, behind TLS.
Each company’s data is isolated by the engineBuilt
A company’s records, documents and trail are bound to that company’s account, and the engine enforces that boundary on every read and write — not the screens remembering to check. On the hosted service the data lives in one store on our server; run Memry yourself and it stays on your own machine. Either way the isolation is enforced where the data lives, not in the interface.
The app itself is never exposedBuilt
The interface listens on the loopback address and nothing else. What faces the internet is a TLS proxy in front of it. That is the same binding whether we run it or you do — reaching the application directly takes a configuration change somebody makes deliberately.
Run it yourself, if that is what you need
Some companies cannot put their contracts on somebody else’s server, and that is a reasonable position rather than an awkward one. Memry runs on your own infrastructure, and then the database file is on your machine and we hold no copy of it. It is not the standard offer and it is not self-serve — talk to us and we will tell you honestly whether it fits.
Getting it back out is not a favourBuilt
Whichever way it runs, the whole trail exports as JSON or CSV with no row cap, from inside the app, without asking us and without a support ticket. A hosted service you cannot leave is a hostage situation; this one you can walk out of with the record in your hand.
The hosted service is live and open to nobody yet: there is no published link, and creating an account requires an invite code. We said we would not open one quietly, and saying so here is us keeping that. An independent review of the write surface is a stated precondition for issuing those codes. A first pass has been carried out; it found no way for one company’s account to reach another’s, and it left parts of the surface unreviewed, which is why codes have not gone out.
What Memry keeps from a connected mailbox
A mailbox holds a person's private life as well as the company's business. The retention position is one sentence, and it is the same sentence wherever you meet it — here, at the moment you connect an account, and in any data-processing agreement.
bodies are stored only for messages facts were extracted from; the bodies of skipped messages are never stored.
In plain terms: if Memry read a message and took nothing from it, the message body is not kept. What is kept is what a fact was drawn from, so that the fact can be checked against its source — which is the whole point of the receipt.
Keeping companies apart
Separation is enforced in the engine underneath the interface, so it holds for anything built on top of it rather than for the screens somebody remembered to check.
Reads are clipped at your account rootBuilt
A query cannot reach outside the company it belongs to. The limit is applied by the engine that answers the query, not by the page that displays the answer.
Writes outside your account are refusedBuilt
An attempt to write anywhere but inside your own company is rejected by the engine with a specific refusal, not silently dropped.
Records addressed by id are covered tooBuilt
Guessing another company's record id gets you nothing, and the refusal does not double as a way of finding out whether that id exists.
Access to the reserved account root cannot be givenBuilt
There is a specific guard against handing out access to the root that every company sits under, because that is the one permission that would undo the rest.
Sessions and the browser
Sessions are revoked on the serverBuilt
Ending a session ends it at the server. It does not depend on a token quietly reaching its own expiry somewhere else.
The session cookie is HttpOnlyBuilt
Script running in the page cannot read it, and its SameSite setting keeps it off cross-site form posts — which is what stops another site acting as you.
A strict content-security policyBuilt
Scripts load only from Memry's own origin. There are no inline event handlers anywhere in the interface, which is what makes that policy worth having.
Rate limitingBuilt
Requests are rate limited, so a stolen credential or a scripted client cannot be used at machine speed.
Your model key
Your text reaches a model provider, and which one depends on whose key is paying. The questions you ask and the contents of documents you upload are sent to it so it can read and answer them, so it is worth being exact. There are three cases and they do not have the same answer.
Your account, your keyBuilt
An account key is an Anthropic key, and it is pinned to Anthropic. The endpoint is fixed in the code for a key that belongs to an account, so whatever provider this installation is otherwise pointed at does not apply to your turn: your text goes to Anthropic and to no other provider. The key is checked the moment you save it, so a key from anywhere else is refused beside the field rather than failing as an opaque error later.
Your account, no key yetBuilt
Nothing is sent anywhere at all. Until an account has a key, the two parts that use a model — the assistant, and reading a document for the facts in it — are unavailable to that account. There is no shared key it quietly falls back to, which is the failure this paragraph exists to rule out.
The demo
The throwaway workspace anyone can open without signing up runs on our key and our choice of model, because nobody opening it has one of their own. Today that provider is Z.ai — glm-5.3 for answering, glm-5.3-flash for reading documents. It is not Anthropic. So treat the demo as what it is: a public sandbox, and not the place for a real document.
Run Memry on your own infrastructure without accounts and the installation's key is yours to choose outright — the provider, the model and the spend — and your text goes to whichever provider that key belongs to and nowhere else.
A key is never rendered to a screen and never written to a log.Built Key hygiene is a property of the code paths that handle it, not a setting you have to remember to switch on.
Getting it back out
The audit trail is the record of what Memry read, what it proposed, what a person approved and what changed as a result.
It exports in full, as JSON or CSV, with no row capBuilt — from inside the app, without asking us, and without a support ticket.
Why this page is short.
There is more on our plan for data controls than appears above, and none of it is described here. A security page that mixes what is running with what is intended reads exactly like one that is entirely running, and the reader has no way to tell the two apart. So this page carries the first kind only, and it will get longer as the second kind ships.