Security
How airepeat protects your keys, money and data
airepeat holds keys to accounts that cost money and run your sites. This page says exactly what it does with them, and what it doesn't do yet.
Keys and approvals
Key vault
Keys are encrypted, and never shown again
Keys you type into the dashboard are encrypted with AES-256-GCM and stored as a reference such as secret:7c9e…. No one can view a saved value in the dashboard, owners included.
- The master key stays on the server
- It lives only in the server's environment, never in the database, and can be rotated by version. In production the vault refuses to work without it.
- Used, not handed out
- A key is decrypted for the job that needs it, when it runs. The audit log records its name, never its value.
- Per workspace
- AI keys, alert email settings, analytics, webhook secrets and preview passwords belong to each workspace.
Keys · Hetzner token
You type it once
••••••••••••
Encrypted
AES-256-GCM
Referenced as
secret:7c9e…
- Never shown again, not even to owners.
- Decrypted only for the job that uses it.
- Audited by name, never by value.
Approvals
Spending and destructive actions wait for approval
Creating servers, buying domains, stopping a server, changing DNS and purging sites become requests bound to the exact resource, parameters and price.
- Checked twice
- The request is checked when it's made, and the resource is looked up and checked again when it runs.
- Nobody approves their own
- A second person approves, unless you are an owner. Monthly and daily spending limits apply on top.
- Slow deletes
- Sites are archived with a backup first. A purge waits 7 days and needs verified backups and its own approval.
Approval requested by Sam
- Action
- Create server
- Provider
- Hetzner · your project
- Type and place
- CX23 · fsn1
- Price
- €4.99 a month (provider price)
- Can be undone
- Yes: delete the server
- Expires
- In 24 hours
In practice
Defences built into the platform
Rules the code enforces, whoever is signed in.
Workspace isolation
- Every query is scoped to your workspace, and every page and action checks permissions on the server. The browser's view of your role only hides buttons.
- Each workspace brings its own keys. Server-level credentials work only in the operator's own workspace.
- Managed workspaces, when available, each get their own Coolify project and can only touch resources in it.
Live mode per workspace
- Simulation is the default. A workspace reaches real providers only when its owner turns live mode on and allows each provider, with the workspace's own keys.
- The worker takes turns between workspaces, so one busy workspace can't hold up the others.
Requests to addresses you choose
- Every live request resolves the host once, refuses private, loopback, link-local and cloud metadata addresses, and connects to exactly that public address. That closes DNS rebinding.
- Redirects aren't followed automatically. Your Ollama and SMTP hosts get the same check.
Accounts and sign-in
- Email confirmation before the first sign-in, and new workspaces approved by a platform administrator during the beta.
- Two-factor sign-in, which a workspace can require for everyone. Platform administrators must use it.
- Administrators can suspend a workspace; a suspended workspace can't act anywhere, including in background jobs.
Rate limits and content checks
- Database-backed rate limits on sign-up, sign-in, AI work, sites, domains, invitations, uploads, the API and abuse reports. IPv6 addresses are counted per /64.
- A local content check screens names, domains (including look-alike characters), descriptions and prompts. It runs locally, without a third-party classifier.
- The AI planner and tasks follow a content policy and can decline. Refusals are recorded.
Audit log
- Who did what, when, and with whose approval. The database refuses updates and deletions of audit entries.
- Keys are recorded by name and files by path, never by value or contents.
AI tasks
- Each task works on its own branch with path rules the platform enforces: nothing outside the repository, no symbolic links, no .env files, git internals, package manager config or workflow files.
- Spending is capped per task and per month. Work reaches the live site only through a reviewed release.
Your data
- Code lives in your GitHub, servers in your provider account, DNS in your Cloudflare.
- Logs are masked on the server: credentials in addresses, common key and token formats, authorization and cookie headers, and the local part of email addresses.
- You can export your account data, and delete your account.
Being straight with you
What we don't claim
- airepeat holds no third-party security certification or audit report, such as SOC 2 or ISO 27001.
- AI tasks run on the dashboard's own host with per-workspace limits. Running each task in its own sandbox container is planned.
- The legal pages are drafts until a lawyer has reviewed them.
Audit log
- 09:14:02samserver.createapproved by alex
- 09:12:47alexsecret.createHETZNER_TOKEN (name only)
- 09:03:19samrelease.approvebakery-site · 4f1c2a9
- 08:58:31workerbackup.verifybakery-site · files
- 08:41:10alexmember.inviterole developer
Responsible disclosure
Found a vulnerability? Tell us privately through the contact form with the topic set to security. Include the steps to reproduce it, and please give us a reasonable time to fix it before telling anyone else. Test only against your own account and data.
Contact securityReport abuse
Seen a site or service run with airepeat that breaks the acceptable use policy? Report it, and we will review it.
Report abuseKeys in a vault. Spending behind approvals.
Free during the beta. Bring your own keys and pay your providers directly.
New accounts are approved by hand during the beta.