Data handling & what’s built
Two honest answers in one place: exactly what can leave your machine (and what never can), and what Regixo does today versus what is still on the roadmap. If a capability is designed but not built, it is on this page — never dressed up as shipped.
What leaves your machine, and what never does
Regixo is local-first. Reading your catalog, drafting the RoPA and DORA register, correcting a
flag, wiring an agent — all of it happens on your machine. The scan reads metadata only and stays on
your machine. Four commands upload, and only when you run them: regixo invite,
regixo watch, regixo push and regixo start — and they send
metadata only. regixo invite is the hand-off, and it shows you a preview of exactly
what will go before it goes. The other three send the refreshed draft only once this machine is
paired to a claimed record; an unpaired run sends nothing and says so.
| Data | Can it leave? | Notes |
|---|---|---|
| Table paths (personal-data tables) | Only on regixo invite, after you confirm | The full source/schema/table path of each table that looks like it holds personal data (e.g. bigquery/regixo_test/accounts) — what the compliance team needs to find the activity. |
| Kinds of personal data (categories) | Only on regixo invite, after you confirm | Per activity, the categories the classifier derived — Email, Name. Never the column name itself. |
| The drafted record | Only on regixo invite, after you confirm | Activity titles and Regixo’s suggested legal fields; your organisation’s registered name, only if you set one. |
| DORA register draft | Only on regixo invite, when in DORA scope | The draft register of your outside IT providers, so the compliance team reviews it in the same place. |
| The recipient address | Only if you type it | Uploaded exactly as typed — not hashed, not masked — because that is what binds the record to that person. Leave it blank and no personal data goes at all. |
| Column names | Never | They collapse to category labels — the portal learns a column looks like an email without learning what it is called. Verified on the wire: salary appears nowhere in the bytes the portal receives. |
| Column types & nullability | Never | The portal never learns whether a column is text, a date or a number. |
| Table owners | Never | The catalog records who owns each table; none of that is in the upload. |
| Raw row values | Never | Hard Rule #2. The scanner reads metadata only — it never runs SELECT *, never counts rows, never reads a value. No sampling connector is even built. |
| Secrets / connection strings | Never | Only the env-var name (connectionRef) lives in regixo.yml; the secret stays in your environment. |
Everything else is a count, not a name. This is the same ledger the
regixo invite screen shows before the upload, computed from the payload itself — see it
in place on the free portal’s Invite screen.
regixo invite prints a preview of what will leave the machine first, then asks
for a [Y/n]. Headless runs need --yes to consent — otherwise a coded
UPLOAD_NOT_CONFIRMED error, never a silent upload. regixo invite --no-upload
stays fully local, zero network.Thin it further — the redaction: policy
Metadata is confidential on its own: a table called layoffs_2026 leaks before anyone
opens it. So you can mask names before they leave, in regixo.yml. Every key is
optional.
redaction: hashOwners: true # the default — you only write this to turn it off redactDatasetNames: - layoffs_2026 # an exact name, case-insensitive - /^hr_/ # or a /regex/ redactColumnNames: - salary
These keys reach names that ride inside a path or an activity title. The upload never carries a bare column name, type or table owner in the first place — that is the table above; this is the second line of defence for the names that do travel.
hashOwnersis on by default. Any owner email in the outbound metadata is replaced withowner-<8 hex>@redacted. You do not have to switch this on.- Names are masked per segment. A match becomes
redacted-<8 hex>, and the path keeps its shape —app-db/public/layoffs_2026goes asapp-db/public/redacted-9f2c4d7a, so the compliance team can still tell two activities apart without learning either name. - Masking is stable, not reversible. The same name always produces the same token, so the record stays coherent across uploads; nobody can turn the token back into the name.
- It applies to every upload path. The policy is applied inside the payload builder, so
invite,watch,pushandstartall obey it — there is no route that serialises an unredacted view. - Your own catalog keeps the real names. Redaction governs only what leaves; the local map, search and the drafted files are unchanged.
draft.controller — the Art. 30(1)(a) name and
contact) and the whole DORA register are exempt, hashOwners included. Both are
content of the record the compliance team has to read — provider names, countries, LEIs — not
catalog metadata. Masking them would deface the document they are meant to prove. Everything a
redaction rule can reach is named in the table above.
The exception runs the other way for cell attribution: the “who filled this, and when” on a DORA cell is a local display fact, and it is removed from every outbound payload — structurally, at the one point every byte passes through, not by a setting that could be turned back on.
Encryption at rest
Metadata is treated as confidential throughout — a table named patients_oncology
leaks on its own. At-rest protection differs by side:
| Control | Free (local store) | Paid (portal) |
|---|---|---|
| Encryption at rest | OS-level disk encryption + owner-only file permissions (0700 data dir, 0600 index.db) | Per-claim keys (HKDF AES-256-GCM) — mechanism built, not yet enforced |
| Tenant isolation | n/a — single machine | Per-claim keys; DB isolation ◐ partial |
Honest today: the local store relies on your OS disk encryption plus
0600 file permissions. The portal’s per-claim encryption mechanism is built but not
switched on — if REGIXO_DATA_KEY is unset the portal only warns, and stores its
content as plain text; the encryption clause is not yet in effect. Enforced-mandatory encryption is a
launch gate for the hosted portal. Per-tenant DB isolation has shipped in part (tenant content sits in a
physical per-tenant database; the control plane still scopes the registry, sessions and tokens
logically) and stays a launch gate until complete. The hosted portal is not yet live (see the roadmap
table below).
Secrets
Secrets never live in regixo.yml. Each source names the environment variable that
carries its connection string (connectionRef); Regixo resolves the value from your
environment at scan time. Commit regixo.yml freely — it holds only variable names and
non-secret config.
docs.regixo.com resolve, and every portal screen carries Documentation ↗ and
Contact for help ↗ (regixo.com/contact).What’s built, and what’s on the roadmap
Regixo is a real product with real edges. The table states each capability’s status plainly, so nothing here promises more than the software does.
| Area | Status |
|---|---|
| Connectors | |
| SQL family (Postgres, Redshift, MySQL, SQL Server), Stripe, manual CSV, dbt lineage | built Seven of the ten native source kinds that ship today. |
| Snowflake, BigQuery | built Two more native kinds — metadata-only, read over their REST APIs (schema, never row values). Honest caveat: neither has yet been run against a live account (fixture, stubbed-transport and gated-live tests only), so treat first-run reliability as unproven. |
Bring your own connector (script) | built The tenth kind — for any source Regixo doesn’t ship. regixo connectors new <name> scaffolds a generator an AI agent completes; regixo add script --generator <path> --ref <ENV> wires it in. Runs out-of-process, metadata-only. |
| HubSpot, Salesforce, Google Workspace, S3/GCS/Azure Blob, OpenAPI/JSON-schema import | roadmap No built-in connector yet — the docs say "roadmap", never "supported". For any of these today, bring your own with the script connector above. |
| Reaching a locked-down database | built Bring your own VPN/SSH tunnel, run inside the network, or describe it by CSV. There is no --tunnel flag. |
| Manual import | built CSV only (header dataset,column[,type,nullable]). There is no --from schema.json. |
| The catalog & classifier | |
| Auto row-estimates & automatic view→table lineage | built Postgres/Redshift only (from pg_class/pg_depend). MySQL and SQL Server give tables, columns and types, but no auto estimates or lineage. |
| PII classifier recall | built Benchmarked and passing for EN/DE/FR/NL. Other languages (ES/IT/PT/PL/SV/DA/RO) have terms but unmeasured recall — treat as best-effort. |
| Activity grouping & record language | built Rule-based grouping only — no AI/LLM. Records render in English today. |
| The record & the seal | |
| RoPA legal fields (purpose, lawful basis, retention…) | built Regixo suggests; only a named human confirms or signs. No CLI, agent, or import can confirm on your behalf (Hard Rule #4). |
| DORA DRAFT register | built Fully usable — draft, fill, import CSV, check status. |
DORA official export (regixo dora export) | paid gated Refuses today: the EBA taxonomy/DPM constants ship empty pending owner verification. The DRAFT register is fully usable now; the sealed filing package is a later gate. |
| The seal | paid A simple electronic signature over the exact record bytes — offline-verifiable and portable. Under eIDAS (Art. 25(1)) it cannot be denied legal effect solely because it is electronic; it is not a qualified electronic signature. |
| RFC 3161 time counter-stamp | pending The mechanism ships, but no time-stamp authority is configured yet, so seals record timestampProof: none until the owner selects a TSA. |
| The compliance portal, hosting & distribution | |
| Compliance portal — claim a forwarded draft, fill the legal calls, unlock, sign & seal, team & roles | built The forwardable DRAFT PDF and claim link work today; claiming, filling, and signing are built and verified. Reading and filling are free; signing is the paid step. |
Public hosting at app.regixo.com — multi-tenant, live card payment (Stripe), real-IdP SSO, per-tenant DB isolation, regixo serve self-host | launch gate Wired and offline-tested, not yet switched on. The portal runs today in dev; per-tenant DB isolation has shipped in part (a control-plane / per-tenant database split) and remains a launch gate until complete, alongside EU-hosted live payment. |
| Install | built pre-1.0 npx regixo start works today — pre-release 0.1.x builds publish to npm. Regixo has not launched yet; the 1.0 release is still ahead. |
PORTAL_NOT_INSTALLED instead of producing an official artifact.