Basin
An on-premises data lake with first-party analytics
Basin runs entirely inside your network: your own datacentre, your private cloud on AWS, Azure or GCP, or an air-gapped environment. Nothing leaves. No telemetry, no phone-home, and the licence keys work offline, so Basin adds zero sub-processors to your data-processing agreements.
Source systems
Postgres
log-based CDC
SQL Server
log-based CDC
Epic
HL7 v2 and FHIR
SAP
native connector
Kafka
streaming
Basin
Ingest
60+ connectors, CDC, HL7 v2 and FHIR
Iceberg tables
Parquet on your object store
SQL engine
Distributed ANSI SQL
Dashboards
Reports, alerts, metrics layer
Consumers
Analysts
JDBC, ODBC, Python via Arrow
Embedded apps
Relay or your own apps, with row-level security
First-party analytics
What first-party analytics means
It means the dashboards, reports and models run on your own hardware, operated by your own people. The usual alternative is to copy your data into an analytics vendor's cloud and query it there, which is how most hospitals and banks ended up with a second copy of their most sensitive records outside their own perimeter. Basin runs where the data already is.
For a hospital or a bank, that changes the paperwork before it changes the dashboards. There's no new vendor to add to the data-processing agreement, no Business Associate Agreement to negotiate just to run analytics, and no data export to defend at the next audit. Your data-protection officer counts one fewer sub-processor, because Basin adds none.
Ingest and storage
Open formats on your own object store
Basin writes Parquet files and Apache Iceberg metadata to an S3-compatible object store you already run. There's no proprietary storage engine and no format you'd need us to convert on the way out.
You can leave with your data.
Every table is Parquet files plus Iceberg metadata in your own bucket. If you stop using Basin, there's nothing to export: point another engine at the same storage and carry on.
- Formats
- Parquet
- Apache Iceberg
Parquet for the files, Iceberg for the table format. Both are open specifications with readers in Spark, Trino, DuckDB, pandas and most warehouses, so the tables stay useful with or without Basin.
- Object stores
- MinIO
- Ceph
- NetApp StorageGRID
- Dell ECS
- Azure Blob
- AWS S3
Any S3-compatible store, on premises or inside your VPC. Basin doesn't need its own storage tier, so there's no second copy of the data to secure.
- Connectors
- Postgres
- MySQL
- SQL Server
- Oracle
- SAP
- Salesforce
- Dynamics 365
- Epic (HL7 v2, FHIR)
- Cerner (HL7 v2, FHIR)
- CSV and SFTP drops
- Kafka
- Log-based change data capture
More than 60 in total. Epic and Cerner connect over HL7 v2 and FHIR. Log-based change data capture reads the source's transaction log rather than polling tables, so production databases don't take extra query load and every change arrives in order.
Query and analytics
One SQL engine, every tool your analysts already use
A distributed ANSI SQL engine runs over the Iceberg tables. Connect from any JDBC or ODBC tool, from Python through Apache Arrow, or use the dashboards, reports and alerts that ship with Basin.
SELECT
w.ward_name,
count(*) AS admissions,
count(*) FILTER (WHERE r.readmitted_within_30d) AS readmissions,
round(100.0 * count(*) FILTER (WHERE r.readmitted_within_30d) / count(*), 1)
AS readmission_pct
FROM clinical.admissions
FOR TIMESTAMP AS OF TIMESTAMP '2026-07-01 00:00:00 Europe/London' AS a
JOIN clinical.readmissions AS r USING (admission_id)
JOIN reference.wards AS w ON w.ward_id = a.ward_id
WHERE a.admitted_at >= DATE '2026-04-01'
AND a.admitted_at < DATE '2026-07-01'
GROUP BY w.ward_name
ORDER BY readmission_pct DESC
LIMIT 6; Readmissions by ward
Q2 2026, snapshot 1 July
- Admissions
- 12,418
- 30-day readmissions
- 7.9%
Alert: any ward above 12% notifies the clinical governance lead.
Distributed ANSI SQL
Standard SQL with joins, window functions and CTEs, executed across the cluster. Snapshot queries reproduce a regulatory figure exactly as it stood at quarter end.
JDBC and ODBC
Drivers for Power BI, Tableau, Excel and anything else with a driver dialog. Analysts keep the tools they have; the data stops moving to meet them.
Python via Apache Arrow
Results arrive as Arrow batches, so pandas and Polars load millions of rows without a row-by-row cursor in between.
Dashboards, reports and alerts
Built in, so a first deployment doesn't need a separate BI licence. Schedule a report to land in an inbox on Monday morning, or an alert to fire when a threshold is crossed.
Metrics layer
Define 'active patients' or 'exposure at default' once, and every dashboard, report and API call uses that definition.
Embedded analytics
Charts embedded in Relay or your own applications, with row-level security applied by the engine: a clinician sees their ward, a branch manager sees their branch.
Governance
Controls that hold up in an audit
The questions an information governance team or a bank's second line will ask, answered in the platform rather than in a separate tool bought later.
-
Data catalogue
Every table, column and dashboard is searchable with an owner, a description and its classification tags. Analysts find what already exists instead of asking for another extract.
-
Column-level lineage
Trace a figure on a dashboard back through each transformation to the source column it came from, and see what breaks downstream before you change a schema.
-
PHI and PII classification
New columns are scanned on ingest and tagged automatically: names, dates of birth, national identifiers, account numbers and free text that looks like it holds them. Tags drive the policies below.
-
Column-level encryption
Sensitive columns are encrypted with keys held in your own HSM or KMS. Revoke the key and the data is unreadable to everyone, Basin included.
-
Row and column policies
Write a policy once, against tags or named columns, and the engine enforces it for every client. A ward manager gets their ward's rows and never sees the diagnosis column.
-
De-identification and tokenisation
Produce research and test datasets with identifiers removed or replaced by consistent tokens. The HIPAA Safe Harbor method is built in.
-
Retention policies
Set retention per table or per classification. Expired rows are removed from the Iceberg tables and the Parquet files beneath them, rather than hidden from query results.
-
Right-to-erasure workflows
One request propagates the delete across every table that holds that person's data and produces an evidence record of what was removed, where and when, for your auditors.
-
Every query is logged
Every query is logged with the user, the tables and columns touched, and the row count returned. The log is tamper-evident and exportable to your SIEM.
Deployment and operations
Three ways to run it, one licence model
All three run the same software and read the same Iceberg tables, so a pilot on a single VM can move to a cluster later without changing anything your analysts see.
| Attribute | Kubernetes via Helm | Single-node VM installer | Air-gapped bundle |
|---|---|---|---|
| Best for | Datacentre or private-cloud clusters that already run Kubernetes | Small sites, pilots and departmental deployments | Networks with no internet route, such as regulatory reporting environments |
| Minimum nodes | 3 for high availability | 1 (no high availability) | 3 for high availability |
| Scale | Multiple petabytes; add nodes to grow | Bounded by the VM; move to a cluster when you outgrow it | Multiple petabytes |
| Upgrades | Quarterly releases; LTS releases supported for 24 months | Quarterly releases; LTS releases supported for 24 months | Quarterly bundles delivered offline; LTS releases supported for 24 months |
| Who operates it | Your own team. Tao installs it and supports it by email and screen-share. | Your own team. Tao installs it and supports it by email and screen-share. | Your own team. Tao installs it and supports it by email and screen-share; your team applies the offline upgrade bundles. |
| Licence keys | Offline key file | Offline key file | Offline key file |
Licence
Basin is licensed per node, monthly, with support included. The first node comes with the £250 a month platform subscription and each additional node is £100 a month, so a three-node high-availability cluster is £450 a month. There are no per-query, per-user or per-seat charges, so adding a thousand analysts or running a heavy month-end costs nothing extra. The licence key is a file that works offline.
Who runs it
Your own team, because Basin runs on your infrastructure. The one-off £500 setup fee covers installation and onboarding: Basin installed into your cluster, VM or air-gapped network, configured, your admins trained and support through go-live. After that, the monthly fee includes support by email and remote screen-share, 09:00 to 18:00 UK time, answered within one working day. Upgrades arrive as quarterly bundles that your team applies, with a screen-share session if you'd like one.
What the setup fee and monthly fee coverReferences
Where Basin runs today
Customers in regulated industries rarely allow logo use, so these are anonymised.
3 weeks to same-day
monthly compliance reporting
US specialty pharmacy network
Installed Basin in its own datacentre and connected 14 source systems, including its pharmacy management and Epic feeds. It replaced a cloud analytics vendor it could no longer justify under its BAA review.
40 systems
covered by each erasure request, with an evidence record
European private hospital group
Runs Basin in its Frankfurt private cloud. Erasure requests now propagate across 40 connected systems with an evidence record per request, replacing a manual process that took a data team two days each.
Air-gapped
quarterly upgrade bundles applied offline
Regional bank
Runs Basin air-gapped for regulatory reporting. No part of the deployment touches the internet, including upgrades: its own team applies the quarterly upgrade bundles offline.
See Basin running on hardware like yours.
Arrange a technical briefing with the engineers who built it: the architecture, the governance controls, and which deployment fits your estate. We'll give you a written view on fit and cost within one working day.