Encrypted at rest
AES-256-GCM with its own random value per record, so a modified ciphertext fails to decrypt rather than quietly returning something else.
Integrations
A machine is destroyed within the hour, so a credential stored inside one is gone by lunchtime. Connected accounts live with your account instead, and are handed to every new machine at boot.
Connect GitHub, Cloudflare, Hetzner and Vercel and 15 others once. Every machine you ever start after that can reach them, and no endpoint here will hand the credential back to anyone.
Connect my GitHub so it can push there directly.
OAuth · scoped to your repos onlyconnected · reused by every machine after
What connects today
| Account | Method | Scope |
|---|---|---|
| GitHub | OAuth | Read and write your repos. |
| Cloudflare | API key | DNS and zones managed for you. |
| Hetzner | API key | Cheap always-on servers. |
| Vercel | API key | Deploy to your own Vercel account. |
| Sentry | API key | The exact access is shown before you connect. |
| GlitchTip | API key | The exact access is shown before you connect. |
| PostgreSQL | API key | Read a database your business already runs. |
| MySQL | API key | Read a MySQL database you already run. |
| S3-compatible storage | API key | Somewhere for uploads and files to live. |
| SMTP (any mail server) | API key | Send from a mailbox you already have. |
| Resend | API key | Contact forms that actually arrive. |
| Twilio | API key | Send SMS from your own number. |
| Mailchimp | API key | Sign-ups go to the audience you already send to. |
| Cal.com | API key | Show real availability on the site. |
| PayPal | API key | Take PayPal alongside cards. |
| Shopify | API key | Real stock and real prices on the site. |
| OpenAI | API key | For the app you are building, not for Amelia. |
| Anthropic | API key | For the app you are building, not for Amelia. |
| Airtable | OAuth | Read and write the bases you choose. |
Coming, and not connectable yet: Stripe, Railway, Google Search Console, Google Business Profile, Gmail, Supabase, Slack, Notion, QuickBooks, Xero, Square and HubSpot. The app draws a card for each of these and leaves it disabled rather than hiding it, so you can see what is on the way — but nothing here works today, and any page of ours that implies otherwise is wrong. Stripe is the one people ask for most; if you need to take card payments on a site now, write in and we will tell you where it stands.
Where it lives
Sealed at rest, and injected into a machine's environment at boot — never written to disk, never returned by an API. A machine lives an hour; a relationship with your GitHub account does not.
Sealed at rest, and injected into a machine's environment at boot — never written to disk, never returned by an API.
OAuth first, deliberately
Where a provider offers OAuth we take a scoped token you can revoke from that provider's own dashboard — without needing us to be reachable, honest, or still trading. For an API key, the only party who can revoke it is us. So keys are the fallback, not the default, and where one is unavoidable the page tells you how to scope it as narrowly as the provider allows.
How they are held
AES-256-GCM with its own random value per record, so a modified ciphertext fails to decrypt rather than quietly returning something else.
It lives in the environment. A dump of the database alone is not enough to use anything in it.
Connected or not, which account, when. No endpoint returns a secret — not to you, not to the app, not to a machine other than the one it was issued for.
When it needs one
If a job needs an account it cannot reach, the agent stops and says so, and the app turns that into a connect button. It is instructed never to invent credentials, never to ask you to paste a key into the chat, and never to carry on as though the account were already connected — three failure modes that are much worse than stopping.
Your accounts stay yours, revocable from their side, sealed on ours.
Questions
19 accounts today — GitHub and Airtable by OAuth and the rest by a scoped API key. The exact access each one grants is shown before you connect. Another 12, Stripe among them, appear in the app as cards that are not connectable yet.
Encrypted with AES-256-GCM against your account, with the encryption key held in the environment rather than the database. No endpoint ever returns one.
Yes, from here at any time — and for the OAuth ones, from the provider's own dashboard without involving us at all.