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

Two sessions, one table···
Summarise soil moisture per bed and day, and keep the summary for later.
Read 168,534 readingsgarden.sensor_readings · stored in Tablemere
Analysed in DuckDBin the agent's own environment · 312 ms
Saved garden.daily_soil_moisture16 rows, back to Tablemere · 939 ms
The session ends. The table remains.
Later, in a new session: which beds are driest today?
SELECT day, sensor_id, avg_moisture FROM lake.garden.daily_soil_moisture
  WHERE day = (SELECT max(day) FROM lake.garden.daily_soil_moisture)
  ORDER BY avg_moisture LIMIT 3;
daysensor_idavg_moisture
2026-09-20soil-ch120.5
2026-09-20soil-ch324.1
2026-09-20soil-ch431.4
Recorded 2026-09-20 on tablemere.com: two DuckDB 1.5.5 processes on a laptop, a real garden's sensors. The second session attached in 297 ms.
Tested engines
DuckDB read · write · 1.5.5+
PyIceberg read · write · 0.12
Spark read · write · 3.5

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.

1 · CONNECT AN AGENT

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 …
2 · LOAD DATA

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
3 · QUERY, THEN SAVE

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

"Set up Tablemere for this project by reading https://tablemere.com/llms.txt and following it. I will create the account myself and give you an agent key; ask me for it. Then load my Parquet files into the warehouse with DuckDB, using the connection recipe, and save a summary table I can open later. Ask me before anything that costs money."
Claude CodeCodexCursorany agent with HTTP

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.

Free
5 GBstored
No card. Paid plans to be announced.
  • 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
Start building

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