Last reviewed 7 August 2026
What Promtact processes, where it is kept, how long, and who can reach it.
Self-hosted. You run the binary on your own infrastructure. All data stays there. Promtact receives nothing: no telemetry, no phone home, no licence check that transmits usage.
Hosted. Promtact operates the service on your behalf and is a processor: your data is processed to provide the service and on your documented instructions.
Promtact inspects agent tool calls, so it stores the timestamp, the tenant, the machine and account making the call, the source address, the tool name, and the call's arguments.
Events, alerts, response actions and audit records are deleted after the retention window, 30 days by default and configurable per deployment. Deletion is by age; there is no separate archive.
Tenant accounts, their users and API key hashes are kept until the tenant is deleted, as is the audit chain state — discarding it would break the tamper-evidence of everything remaining.
In transit: TLS terminates at Cloudflare and reaches the origin over an outbound-only tunnel. The service binds to loopback and is not directly reachable.
At rest: values that are verifiers — API keys, recovery codes — are stored only as hashes and cannot be recovered. Values that must be readable to work, currently only TOTP seeds, are sealed with envelope encryption: a per-record key wrapped by a key held outside the database.
| Provider | Purpose | What it reaches |
|---|---|---|
| Cloudflare | TLS, tunnel, alert receiver | Request metadata in transit; alert summaries |
| Hosting provider | Virtual machine and storage | Everything, at the infrastructure layer |
The hosted deployment runs on a single virtual machine in Europe, with the database on the same host. Integrations you configure yourself — a webhook, a ticket system, a SIEM — are your choice and your relationship, not sub-processors of Promtact.
For the hosted service you are the controller and Promtact assists as processor: locating records for an identified person, correcting them, or deleting them ahead of the retention window.
Because tool call arguments are free-form, a deletion request may require searching those fields rather than a keyed lookup. That is slower, and saying so is more useful than implying a clean index exists.
Data protection enquiries: privacy@promtact.com
Security reports: see Security.
The full version of this document, kept with the code and updated alongside it, is docs/data-protection.md.