Skip to content

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.

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.

Everything the control plane holds for your organization comes out in one call, without asking us for it:

Terminal window
curl https://<your-api-host>/api/v1/account/export --cookie "…session…" -o typillar-export.ndjson

Settings → 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:

Terminal window
tail -n1 typillar-export.ndjson | jq .counts

Two 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.

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.

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.

Connections to your accounts and to the console use standard encrypted HTTPS. The docs and console run on Cloudflare’s network with HSTS enabled.

  • 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.
  • Permissions & access — what access is granted, the full scope list, and how to revoke it.
  • Models — how the agent gets its model.