Apache Iceberg · managed in Europe · your compute
Persistent
analytical data
for agents.
Give your agents a shared home for the data they create and use. Store it in Apache Iceberg, query it with DuckDB wherever your agent runs, and connect other supported engines when you need more.
Your agent brings the compute. Tablemere stores and maintains the data.
Free to start: 5 GB, no card · Managed in Germany · Self-hosting available · Open formats
WHERE day = (SELECT max(day) FROM lake.garden.daily_soil_moisture)
ORDER BY avg_moisture LIMIT 3;
| day | sensor_id | avg_moisture |
|---|---|---|
| 2026-09-20 | soil-ch1 | 20.5 |
| 2026-09-20 | soil-ch3 | 24.1 |
| 2026-09-20 | soil-ch4 | 31.4 |
Data that outlives the session.
Continue across sessions
The agent's process exits; the tables it wrote stay, versioned, compacted and backed up. The next session attaches and picks up where the last one stopped. No export, no re-import.
Share across agents
One organisation, many agents and people. Each agent has its own key, confined to the warehouses you choose, read or write, revocable on its own. The audit log says who did what.
Choose your engine
DuckDB today, from wherever the agent runs. PyIceberg and Spark read and write the same tables. Your tables use open formats, with a documented export path. What we have tested.
01How it works
Connect an agent. Load data. Query, and save what you learned.
A person signs up and hands the agent a key of its own. From then on the agent talks to one HTTP API and runs DuckDB where it already runs; Tablemere keeps the tables, the credentials and the maintenance. The quickstart has every command.
Sign up in the browser, then give the agent a key confined to one warehouse. The agent asks for its connection recipe: three statements for DuckDB, equivalents for PyIceberg and Spark.
$ tablemere agent create --name reporter \
--grant <warehouse_id>:write
key shown once; hand it to the agent
$ tablemere connect --warehouse lake --engine duckdb
CREATE SECRET … ATTACH 'w-…' AS lake …
Importing a Parquet file is one statement in the agent's DuckDB. From then on it is an Iceberg table: versioned, compacted hourly, readable by the engines above.
CREATE TABLE lake.garden.readings AS SELECT * FROM read_parquet('readings.parquet'); -- a million rows, 18 MB: about 2.3 s from a laptop
Analysis runs in the agent's environment. A result worth keeping becomes a table with one more statement, and any later session or authorised agent opens it.
CREATE TABLE lake.garden.daily_soil_moisture AS SELECT CAST(event_time AS DATE) day, sensor_id, round(avg(metric_value), 1) avg_moisture FROM lake.garden.readings WHERE metric_name = 'moisture' GROUP BY 1, 2;
Paste this to your agent
Built to be driven by an agent
- Every error is typed: a code, a message and a remedy. Limits are readable before you hit them.
- Agents get their own keys, confined to the warehouses you choose. Storage credentials expire after about an hour.
- Provisioning is idempotent, so a retry is safe. The API is documented in its own responses and in /llms.txt.
- An MCP server exposes the account to Claude Desktop, Claude Code and Cursor; the agent still runs its own DuckDB.
Signing up and accepting the Terms are a person's actions, not the agent's. The whole lifecycle, with the commands: tablemere.com/agents.
02Public datasets coming
Useful data to query on day one.
Public datasets anyone can query with DuckDB and no account, each with its source, licence, schema and a working example, are the next thing being built: a storage-level public flag per warehouse. Nothing is public today; the garden readings above are the candidate first dataset, and this page will list it when it can be queried.
03Deployment
Use our managed service, or deploy Tablemere on your own infrastructure.
Managed, in Germany. The service runs in Nuremberg on Hetzner, operated by Tablemere SL, a company in formation in Spain. No US-controlled company operates any part of it or holds your data, and we publish who touches what. Sovereignty, stated as facts →
Yours, on your servers. The same four containers, your domain, your identity provider if you have one. The agent-facing API, CLI and recipes are identical. What you operate, and what is still missing →
04Pricing
One number to remember.
The free plan meters one thing: how much you store. Not commits, not queries, not rows, not egress. Query compute is yours, so it is never on our bill. Maintenance is ours, and it is included.
- Apache Iceberg REST catalog and S3-compatible storageincluded
- Table maintenance: compaction, snapshot expiry, orphan cleanup, hourlyincluded
- Per-table credentials that expire after about an hourincluded
- Organisations, members, agent keys, audit logincluded
- Daily off-host backups, TLS everywhereincluded
- Snapshot history kept20 snapshots · 7 days
- Guards, not prices: warehouses, tables, objectsall limits
Beta. Not yet, and we say so
- One site, no SLA. Daily off-host backups and a rehearsed restore; we publish what we measure. High availability is planned.beta
- Paid plans wait for the company registration; the payment provider will be European.later
- Public datasets. Designed and measured, not switched on.coming
- Snowflake. The catalog integration connects; the data path needs work on both sides.limited
- A full web dashboard. Your account page is small: warehouses, a SQL panel, tokens, members, usage.partial