Capabilities
What the platform has, and what it does not yet.
Every capability of LakehouseBox on one page, with its status and a link to the page that documents it. live runs on the managed service today. beta runs, with a gap we name. coming soon is designed or built but not switched on. The last section lists what is not there at all.
01Storage and catalog
One system holds the tables and answers for them.
- Apache Iceberg REST catalog and object storage. The catalog and the S3-compatible store are one process, SeaweedFS 4.47, run on Hetzner servers in Nuremberg, Germany. Each catalog is one Iceberg REST catalog with its own bucket; engines talk tolive
catalog.tablemere.comands3.tablemere.comdirectly. Getting started - Table buckets that accept only Iceberg. A table bucket takes data files (Parquet, ORC, Avro, Lance) and Iceberg metadata in the Iceberg layout and refuses everything else, for every credential. Files that are not tables go to the blob bucket beside each catalog. Engineslive
- Format versions 2 and 3. Each catalog has a default format version for the tables the platform creates; an engine's ownlive
CREATE TABLEis honoured as sent. Version 3 carries geometry columns;GET /v1/config/formatslists which engines write which version. CLI reference - Managed maintenance. Compaction to 128 MB files, snapshot expiry (20 snapshots, 7 days per table) and orphan cleanup run hourly on every table, whether or not anyone is connected. Included; nothing to configure. Pricinglive
- Cold storage tier. A catalog carries a tier policy, hot or cold, settable by an admin withcoming soon
tablemere catalog update --tier. The move of quiet volumes to cold storage is built and measured but not switched on for the managed service; no table is cold today. CLI reference
02Access and identity
Short-lived where it can be, revocable where it cannot.
- Per-table short-lived credential vending. An engine exchanges the catalog's credential for catalog tokens (900 s) and storage credentials scoped to one table (about an hour) by itself. Rotating the catalog's credential refuses the old keys at once; vended sessions run out within the hour. Engineslive
- Catalog-enforced tenant isolation. Every catalog has its own storage identity, and the only grant is a bucket policy naming that identity, enforced by the catalog and the store rather than by our application code. A credential for one catalog cannot list, read or write another. The isolation suite, with positive and negative controls, gates every deployment. Security overviewlive
- Accounts, organisations, members and roles. A person signs up with an email address and a password on the account page. An organisation has two roles, admin and member; admins hold write on every catalog, manage members and claim the company's email domain. Access to a catalog is a grant, read or write, per member or per agent key. Getting startedlive
- Agent keys andlive
tablemere login. The CLI prints a link and a code, a person approves the connection in the browser, and the CLI receives a key of its own, saved to disk and never shown. A key holds exactly the grants it was given and is revoked on its own; keys can also be minted by hand for a machine without a browser. Agent setup - Audit log. Every action on the account, its catalogs, grants and keys is recorded with who did it;live
tablemere auditandGET /v1/auditread it back for 400 days. API reference
03Interfaces
Three faces of one API, and a small account page.
- The CLI. One Python file, standard library only, verified against a published SHA-256. Output is JSON whenever stdout is not a terminal; six exit codes carry the failure class.live
tablemere duckdbopens a DuckDB shell with the catalog attached. CLI reference - The REST API. JSON in, JSON out. Every error is a typed object with alive
code, amessage, usually aremedyand always arequest_id. Creates take anIdempotency-Keyheader and replay the original response.GET /v1/usagelists every limit with its headroom and says which are enforced. API reference - The MCP server. The account as tools for Claude Code, Claude Desktop, Cursor or any MCP host: catalogs, connection recipes, table credentials, grants, tokens, members, usage. Over stdio on your machine, or over Streamable HTTP atlive
mcp.tablemere.com/mcp. No query tool by design; the agent runs the recipe in its own engine. Installable from a checkout; not on PyPI yet. MCP - The account page with a SQL panel. Catalogs with your level on each, agent tokens, members, usage against the 5 GB, and a SQL explorer running DuckDB compiled to WebAssembly in the browser: the site never sees the data. The panel is read-only, with one sanctioned write, loading the 20-row sample table. Getting startedlive
- Engines. DuckDB 1.5.5 or newer, PyIceberg 0.12 and Spark 3.5 with Iceberg 1.11 read and write, verified against the service. Trino and ClickHouse recipes come from the REST contract and are not yet verified. Snowflake's catalog integration connects; its data path does not work yet. Databricks is untested. Engineslive · limited
04Getting data in
Engines, imports, drops and intakes.
- Writes from your engine.live
CREATE TABLE … AS SELECT,INSERTandCOPYfrom DuckDB, PyIceberg or Spark commit straight to the catalog. Measured: a million rows, 18 MB of Parquet, in about 2.3 s from a laptop, one commit. Engines - Table import.live
tablemere table importloads many Parquet or CSV files as one commit, keeps GeoParquet metadata as table properties, and creates a format-version 3 table with typed geometry when the catalog asks for it. CLI reference - Blob buckets and uploaders. Every catalog has a second bucket for files that are not tables: Parquet, CSV, images, any object. An uploader is a write-only, long-lived, revocable credential that can only put objects under one prefix of that bucket; it cannot read, delete or touch the tables. The catalog's own credential reads what was dropped and turns it into tables. Uploaderslive
- Lifecycle rules. On the blob bucket, expire files by age or by date under a prefix and abort stale multipart uploads; the store applies rules in a daily pass, so a deletion can be up to a day late. Table buckets never take lifecycle rules. Lifecyclelive
- Ingest sinks. One HTTP intake per table for a device, a webhook or an agent with no query engine: post JSON arrays to one URL with a send-only key, up to 16 MiB per batch, with an idempotency key. Batches are appended to the table on a rolling policy (default every 300 s or 64 MiB), each row stamped with its arrival time; rows that do not fit the schema are kept for the producer to read. Enabled on the service. Sinkslive
05Operations
What we run for you, and what we measure.
- Off-host copies and rehearsed restore. Control-plane state is copied off-host every 5 minutes, store metadata hourly, data files nightly, to Hetzner Object Storage in Falkenstein, Germany. A restore onto a fresh server was rehearsed in about 35 minutes. No automatic failover: one host, and a failure means downtime until the restore. Security overviewbeta
- Encryption. In transit: TLS 1.2 and 1.3 only on every public hostname, HSTS, S3 requests SigV4-signed. At rest: we do not currently claim encryption at rest for customer content or for tenant secrets. Security overviewin transit only
- Limits and the usage endpoint. Storage (5 GB on the free plan) and catalogs per project (3) are enforced; tables (50), namespaces (10), objects (50,000) and the commit rate are guidelines. Storage is measured hourly and on demand; over the limit, creating and vending write credentials answer 409 and reading keeps working. Limitslive
- Key rotation.live
tablemere catalog rotatereplaces a catalog's credentials; the old keys are refused at once and vended sessions run out within the hour. Our own admin and signing keys have scripted rotations with measured revocation. Security overview
06Deployment
Our service, or your servers.
- Managed service in Nuremberg. Operated by Tablemere SL on Hetzner infrastructure; no US-controlled company operates any part of the service or holds your data. Who touches what, by name: Sovereignty.live
- Self-hosting. The same containers on your own host: the compose file and the deploy scripts the managed service uses, one node per install, backups to an S3-compatible store of your choice. No packaged installer yet; licence and support terms are being decided. Self-hostingbeta
- Public datasets. Free hosting for public data, read by anyone without credentials. Designed and measured, not switched on. Interested in publishing one? Get in touch.coming soon
07Not yet
What is not there, and we say so.
- An SLA. None during the beta; we publish what we measure instead.none
- High availability. One host. A failure means downtime until the restore from the off-host copies.planned
- Paid plans. The free plan, 5 GB stored and no card, is the offer today. Paid plans wait for the company registration; the payment provider will be European.later
- A full web dashboard. The account page is small; the API and the CLI are the primary interface.partial
- Sign in with Google or any social login. Accounts are created with an email address.none
- Bring your own bucket at another provider. Your data lives on our storage, in Germany.roadmap
Next.
5 GB stored, no card. Questions about any item: hello@tablemere.eu.