What Squiddy processes

This page describes the data Squiddy holds, why it holds it, how long it keeps it, who else can reach it and where it runs. It is a description of how the software behaves, checked against the source it describes — not legal advice and not a data processing agreement.

What is held

CategoryPersonal dataWhat it containsWhyHow long
Account identityYesFor each person with access: the subject identifier issued by the identity provider, an email address, a display name, their role, when they joined and when they were last seen.Authenticating a person and deciding what they may do. The email address is also how invitations and service notices reach them.For as long as the account has access to at least one organisation. When the last of a person's organisations is purged, their application record is removed with it.
OrganisationNoThe organisation's slug and display name, its plan, the timestamps of its creation and last change, and — where they apply — the reason and author of a suspension or of a deletion request, plus how far it got through first-run setup.Separating one customer's data from another's, deciding what a plan allows, and being able to say why an organisation is out of service.Until the organisation is purged. A deletion request takes it out of service immediately and the data stays recoverable for the window below.
ConfigurationNoProjects, environments, and each configuration with every one of its versions: the JSON body, whether a version is published, and who published or archived it and when.This is the product. It is the data the service exists to store and to serve to a customer's applications.Until the customer deletes it, or until the organisation is purged. Versions are kept so that a change can be rolled back.
API credentialsNoFor each API key: its name, its non-secret prefix, the project and environment it belongs to, and when it was created, last used and revoked. The key itself is never stored — only a hash of it, which cannot be turned back into a usable credential.Letting an application authenticate to the serving endpoint, and letting a customer see which of their keys is in use before revoking one.Until revoked or until the organisation is purged. A revoked key's record is kept so that a past request in the audit trail can still be attributed.
Audit trailYesOne record per administrative action: what was done, to which resource, by which person (their subject identifier and email address), whether they acted as platform staff, and what changed.Answering who changed what, which is both what a customer's own security review asks and how we investigate an incident.Records older than the audit window are removed by a maintenance pass; the window is stated below. The trail is otherwise append-only — the application cannot delete from it at all.

Retention windows

Both windows below are the values the code enforces, rendered from the constants that enforce them — this page cannot state a window the software does not apply.

An organisation whose deletion was requested, before it is purged for good: 30 days

A deletion request takes the organisation out of service at once and records when the purge becomes possible. Until then an administrator can restore it. The purge is a separate, explicit maintenance action — it does not run on a timer, so nothing is destroyed without someone asking.

_Declared in domain.TenantDeletionRetention._

Records in the audit trail: 365 days

A maintenance pass removes records older than the window, in batches, and reports how many it removed. It runs as maintenance and not as the application: the application role holds no delete privilege on the trail at all, which is what makes append-only a guarantee rather than a convention.

_Declared in domain.AuditLogRetention._

Who else can reach the data

Where it runs

Squiddy is self-hostable, and that is the case this section can describe precisely. When you run it yourself, your data is where you run it: the database, the cache and the identity provider are all containers in your own deployment, and nothing leaves it except the mail you configure it to send and the traces you configure it to export.

For a hosted service, there is nothing to declare yet. No production deployment of Squiddy exists at the time of writing, so there is no region, no data-centre and no provider to name. A page claiming otherwise would be describing an intention.

Per-customer residency is not offered. Giving a customer their own database — which is what a choice of location would require — is designed but deliberately deferred until after launch. Until it ships, a hosted deployment would keep every customer's data in one place, and a promise of anything else would be one we could not keep.

What a customer can do about it

What is not offered