Your data & secrets
Typillar is designed so that the sensitive things — your application data and your credentials — stay on your side or stay encrypted. This page explains where data lives, what does and doesn’t pass through us, and how secrets are handled.
Where your data lives
Section titled “Where your data lives”Your application data lives in your Cloudflare account — in the D1 databases, R2 buckets and Durable Objects your project uses. Typillar does not host a copy of your project’s data; the control plane coordinates builds, it isn’t a datastore for your app. See What you own.
Your code lives in your GitHub repository, once you’ve connected one. The full source and its history are in a repo you own and can read with ordinary Git tools.
What passes through Typillar, and what doesn’t
Section titled “What passes through Typillar, and what doesn’t”- Your app’s runtime traffic never touches Typillar. Visitors hit your Worker on your own account directly. There is no Typillar proxy in front of your app, and no request your users make is seen by us.
- The console’s admin panes do read through the control plane. When you open the Data or Files pane, or look at your traffic numbers, Typillar calls your Cloudflare account with your token and hands the result to your browser. That’s a read performed on your behalf, when you ask for it — not a sync. Your records and files are never retained; the one thing we briefly cache is your aggregate traffic counts, so a busy dashboard doesn’t re-query Cloudflare on every view.
- Typillar keeps no shadow copy of your application data — your records, your files, or your app’s database. What the control plane does hold is your project’s workspace: its tickets, the plan and build threads, and its history. Delete the project and that goes too; but your application’s data was never on our side to begin with, so there’s nothing of it to reclaim when you leave.
Taking your data out
Section titled “Taking your data out”Everything the control plane holds for your organization comes out in one call, without asking us for it:
curl https://<your-api-host>/api/v1/account/export --cookie "…session…" -o typillar-export.ndjsonSettings → Account has the same thing as a Download button. It is
newline-delimited JSON — one record per line, each tagged with a kind — so it
streams, and a file too large to open still pipes through jq or loads a line at
a time. The organization and its people, pending invitations, your projects and
every ticket in them, API keys and webhook endpoints, support threads, and the
whole activity log are all in it. See
the endpoint reference for the exact shape.
The last line is {"kind":"end","counts":{…}}. Check for it. Because the file
streams, the 200 is sent before the first record, so a read that fails part way
through has no way to become an error — the download just stops. The trailer is
what tells a short file apart from a small organization, and its counts are what
you check the file against:
tail -n1 typillar-export.ndjson | jq .countsTwo things are deliberately absent. No secret is in the file — not a key’s
hash, not a webhook signing secret, not the OAuth tokens for your connections;
an export is not a way to lift a credential out of the platform. And your code
is not in it, because it is already yours somewhere better: in the GitHub
repository you connected, in the runnable tree an eject produces, or from
GET /projects/:projectId/source. Your application’s data was never on our side
at all — it is in your own Cloudflare account, where you can read it directly.
Exporting is an owner-and-admin action, and it is recorded in your activity log like any other change.
How secrets are protected
Section titled “How secrets are protected”To act on your behalf, Typillar holds the OAuth tokens from your Cloudflare and GitHub connections. Inference runs on your own Cloudflare account, so there’s no separate model key to store.
- These tokens are encrypted at rest using AES‑GCM — never stored in plain text.
- A token is used only to act on your connected accounts on your instruction.
- Your Cloudflare token can only reach the resources Typillar itself created and recorded. See Permissions & access.
- You can rotate or revoke your Cloudflare and GitHub connections at any time, and revoking takes effect immediately.
Keys you paste stay in your own account
Section titled “Keys you paste stay in your own account”A key you paste for someone else’s service — your Stripe secret key, an OAuth client secret for sign-in, an API key for a connection — is not kept here at all, encrypted or otherwise. It goes straight into a Cloudflare Secrets Store in your own account, which hands it back to nobody: not to Typillar, not to your Cloudflare dashboard, only to a Worker whose binding names it. Typillar keeps the address, never the value.
That has a consequence worth knowing: once a key is in, this side genuinely cannot read it. Anything that needs to spend it — listing your Stripe catalog, registering the payment webhook, redeeming a sign-in code — happens on the private worker beside your app, not here. And deleting a project takes its keys out of your store with it.
In transit
Section titled “In transit”Connections to your accounts and to the console use standard encrypted HTTPS. The docs and console run on Cloudflare’s network with HSTS enabled.
What Typillar does not do
Section titled “What Typillar does not do”- It does not sit in the path of your app’s traffic, or keep a copy of your project’s data.
- It does not touch anything in your Cloudflare account that it did not create — an unrecorded resource is a foreign resource, and the guard fails closed.
- It does not run your model inference — see Zero inference on our servers.
- It does not keep your credentials in plain text.
Related
Section titled “Related”- Permissions & access — what access is granted, the full scope list, and how to revoke it.
- Models — how the agent gets its model.