Regixo docs
For the compliance team·Reference·see the whole journey ↗
Reference

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.

DataCan it leave?Notes
Table paths (personal-data tables)Only on regixo invite, after you confirmThe 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 confirmPer activity, the categories the classifier derived — Email, Name. Never the column name itself.
The drafted recordOnly on regixo invite, after you confirmActivity titles and Regixo’s suggested legal fields; your organisation’s registered name, only if you set one.
DORA register draftOnly on regixo invite, when in DORA scopeThe draft register of your outside IT providers, so the compliance team reviews it in the same place.
The recipient addressOnly if you type itUploaded 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 namesNeverThey 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 & nullabilityNeverThe portal never learns whether a column is text, a date or a number.
Table ownersNeverThe catalog records who owns each table; none of that is in the upload.
Raw row valuesNeverHard 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 stringsNeverOnly 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.

The confirm gate 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.

regixo.yml — all three keys are 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.

Two things redaction deliberately does not touch The record’s controller identity (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:

ControlFree (local store)Paid (portal)
Encryption at restOS-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 isolationn/a — single machinePer-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.

Who is Regixo, and where does the record live? This page answers what moves and what is built. The other trust questions a signer asks — who Regixo is, where the hosted portal runs (it will run in the EU — a residency launch gate, not yet live), and what you take on trust when you sign — are answered plainly for the compliance team on Is it safe to sign?. You are never without help: the docs at 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.

AreaStatus
Connectors
SQL family (Postgres, Redshift, MySQL, SQL Server), Stripe, manual CSV, dbt lineagebuilt Seven of the ten native source kinds that ship today.
Snowflake, BigQuerybuilt 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 importroadmap 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 databasebuilt Bring your own VPN/SSH tunnel, run inside the network, or describe it by CSV. There is no --tunnel flag.
Manual importbuilt CSV only (header dataset,column[,type,nullable]). There is no --from schema.json.
The catalog & classifier
Auto row-estimates & automatic view→table lineagebuilt 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 recallbuilt 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 languagebuilt 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 registerbuilt Fully usable — draft, fill, import CSV, check status.
DORA official export (regixo dora export) 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 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-stamppending 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 & rolesbuilt 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-hostlaunch 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.
Installbuilt 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.
Why the free build can’t sign Gating is the absence of code, not a flag. Attestation, official export and the seal live only in the paid module — a fork is a working free catalog and nothing more. That is why a free build reports PORTAL_NOT_INSTALLED instead of producing an official artifact.