Every claim on this page is either independently verifiable at source, or a statement of operational practice we stand behind contractually. If something here is wrong or out of date, email [email protected].
Residency
All customer data at rest — PostgreSQL, Redis, object storage, backups — lives on servers physically located in the United Kingdom. Contabo Portsmouth today, expanding to London and Manchester.
Not subject to the US CLOUD Act, FISA Section 702, National Security Letters, or Executive Order 12333. Subject to the UK Data Protection Act 2018, UK GDPR, and the Investigatory Powers Act 2016 (with judicial-oversight requirements).
One exception, documented in our DPA: non-UK probe locations (e.g. Frankfurt, when you opt in) receive the check target URL + request configuration to execute the check. The result comes back to the UK coordinator. No customer data is stored at probe locations.
Sub-processors
Every third party with access to customer data. Any change to this list is notified 30 days in advance per the DPA.
| Sub-processor | Purpose | Data category | Jurisdiction |
|---|---|---|---|
| Contabo GmbH | Application + database hosting (primary) | All operational data, encrypted at rest | United Kingdom · Portsmouth DC |
| Contabo GmbH | Secondary UK probe | Monitor URLs + check results (transient) | United Kingdom · London |
| Contabo GmbH | EU probe (opt-in) | Target URL + check config (no storage) | Germany · Frankfurt |
| Stripe Payments UK Ltd | Payment processing | Billing email, card token, invoice data | United Kingdom |
| Skyie Relay (internal) | Alert + subscriber email delivery | Recipient email, message body | United Kingdom (same operator) |
| Twilio UK Ltd | SMS alerting (opt-in per channel) | Recipient phone number, message | United Kingdom |
Never used: AWS, GCP, Azure, Cloudflare Workers, Fastly, Vercel, or any service under direct US jurisdiction for data storage.
Data categories
| Category | Examples | Lawful basis | Retention |
|---|---|---|---|
| Account data | Name, email, company, billing address | Contract (Art. 6(1)(b)) | Account life + 6 years (Companies Act) |
| Monitor configuration | URLs, hostnames, headers, credentials | Contract | Account life · credentials AES-256-GCM at rest |
| Check results | Response times, status codes, errors | Contract | 90 days raw · 2 years aggregated |
| Incident data | Titles, timelines, post-mortems | Contract | Account life |
| Status-page subscribers | Email addresses | Consent (double opt-in) | Until unsubscribed |
| Audit logs | User actions, IP addresses, timestamps | Legitimate interest · Art. 6(1)(f) | 2 years |
Data-subject rights
Self-serve account export to JSON from Settings → Account.
In-app editing on every field; audit-logged.
Account deletion cascades to all data. 30-day soft-delete window then hard-delete.
Account suspension freezes all processing.
Export monitors, incidents, check results as JSON or CSV.
Unsubscribe from all marketing with one click. Analytics opt-out.
Security
Monitor credentials (HTTP auth, SMTP/IMAP passwords, webhook secrets) encrypted with AES-256-GCM. Key lives in env, not in the database.
PostgreSQL RLS policies on every data table. `SET LOCAL app.current_account_id` on every request; enforced by the DB, not the app.
Probe agents auth to the coordinator with short-lived mTLS certs. Probes are stateless — zero customer data stored at probe locations.
Every state-changing API call logged with actor, IP, user-agent, and a JSON diff. Retained 2 years. Exportable to CSV.
Redis-backed rate limits per account + per API key. CSRF double-submit cookies on every state-changing route.
Renovate on every dependency. Dependabot security advisories patched within 72h for critical CVEs. SBOM generated per build.
Incident response
Our own monitoring (dogfood) catches the first signal. Product self-monitors — if Skyie Uptime is down, we know within one check interval.
On-call engineer acknowledges via PagerDuty within 15 minutes, 24/7. Status page updated within 30 minutes of confirmed incident.
Subscribers notified via email and webhook. Updates every 30 minutes during active incidents. No vague 'investigating' with nothing behind it.
If a data breach affects your account, we notify within 72 hours per UK GDPR Article 33. Before we notify, we triage scope + containment.
Blameless post-mortem within 5 working days of resolution. Published to /changelog with a security tag. Root cause + contributing factors + what's changed.
Open source
Skyie Uptime is built on open-source foundations. Check logic is inspired by Uptime Kuma by Louis Lam (MIT licence). Full attributions live in the repository's LICENSES/ directory.
Security contact
We don't have a bug bounty yet. We do have a 90-day coordinated disclosure window and we credit reporters on the changelog.
PGP key: available at /security.txt (RFC 9116).