Storage
Hosts are pure compute. Data lives in cloud object storage, encrypted at rest; per-job scoped, short-lived credentials are delivered encrypted to the chosen worker.
Where the data lives (cloud object storage, encrypted at rest) and how a worker is handed a temporary, read-only credential to just the slice of data one job needs.
Impact: Hosts are pure compute — they never hold your data or any long-lived keys, so a machine can't keep or leak your dataset.
Providers
DuckDB filesystem extensionss3://s3://Self-hosted; requires path-style addressing.
- endpoint
- minio.local:9000
- url_style
- path (MinIO) / vhost (AWS)
- use_ssl
- false
- region
- us-east-1
No secrets here — the access key / secret are never in config; they arrive per job, encrypted.
abfss:// / az://gcs://https://file://storagesection of this node's GridConfig from the snapshot. Remote access is off on the loopback run, so endpoint / region / TLS knobs are unset here.- default provider
- local-fakeconfigured
- enabled_providers
- local-fake
- enabled_formats
- csv, json, parquet
- enable_remote_access
- false
- require_extensions
- true
- credential_ttl
- 15m
- key_ttl
- 15m
| Format | DuckDB extension(s) | On this node | Note |
|---|---|---|---|
| Parquet | parquet | enabled | Core / bundled — columnar, the default lake format. |
| CSV | core | enabled | Built-in reader/writer; schema sniffing. |
| JSON | json | enabled | Core / bundled — newline-delimited & nested. |
| Delta Lake | delta + httpfs | available | Transaction-log aware table reads. |
| Apache Iceberg | iceberg | available | Snapshot / manifest-based table reads. |
ScopedCredential sealed to the winning worker.- provider
- s3
- token
- opaque STS session / SAS / downscoped token
- prefix
- s3://acme-lake/orders/2026/
- expires_at
- 15m
The prefix is a read-only scope — the token cannot touch anything outside it.
Delivery flow
- 1Requester mints short-lived, downscoped credentials (read-only, one prefix).
- 2Seals them to the chosen worker's node / enclave key.
- 3Worker runs CREATE SECRET (… SCOPE …) with the delivered token.
- 4Worker reads only that prefix over HTTPS — nothing else in the bucket.
CREATE SECRETCREATE SECRET (
TYPE s3,
KEY_ID …,
SECRET …,
ENDPOINT 'minio.local:9000',
URL_STYLE 'path',
USE_SSL false,
REGION …,
SCOPE 's3://bucket/prefix/'
);KEY_ID / SECRETcome from the per-job token — they live only in the worker's process for the life of the job, never on disk or in the grid catalog.
QUIC + TLS 1.3 with mutual authentication between peers.
Parquet Modular Encryption — the stored bytes are meaningless without the per-job key.
Only guaranteed on L2 confidential-computing hardware. Commodity laptops cannot guarantee RAM confidentiality, so sensitive data is routed only to attested L2 hosts, while laptops handle public data under quorum + reputation.
- enabled
- true
- process per job
- true
- backend
- auto
- egress mode
- inherit_storage