Mesh Storage

Getting Started

The fastest path through Mesh Storage — get data in, view it, then query it from SQL or your AI tools

Mesh Storage is where your robot data lives and becomes queryable. Drop in MCAP recordings — from your laptop, a robot, or a fleet of devices — then browse, replay, and query everything from one place.

This page walks the canonical workflow in three steps. Pick the path through each step that matches your setup.

Step 1 — Get data in

Mesh Storage accepts files through three primary paths:

Web uploads land in uploads/web-uploads/. SDK uploads land in uploads/sdk-uploads/. Alloy Edge uploads land in uploads/devices/<device-id>/. All are queryable from the same place once ingested.

A Docker deployment with a bundled ROS 2 recorder is also available from Mesh Storage → Devices → Add device. Track Folder is the primary documented edge path.

Every file goes through the same lifecycle once it lands: Queued → Ingesting → Ingested (or Ingest failed). Replay and Inspect work as soon as an MCAP file lands. You don't have to wait for ingest to finish.

Step 2 — View the data

Once a file is in Mesh Storage you can browse, replay, and inspect it without leaving the browser.

Open Mesh Storage → Data. Use List, Timeline, or Folders view to find files, then select one to see its actions.
Inspect any MCAP to see its channels, schemas, message counts, and encodings. Useful for "what's actually in this recording?"
Replay opens the 3D replay viewer with sensor data, robot poses, and other visualisable topics rendered directly in the browser.
In Inspect, use the Diagnostics and Graph tabs when the recording contains the relevant ROS 2 data.

Step 3 — Use the data

Once a file is Ingested, pick the surface that matches where you want to work:

From the browser — SQL Workbench

Open Mesh Storage → Workbench to write SQL in the browser. Alloy runs the query on its servers against your Iceberg tables and returns the results. There is nothing to install and no credentials to manage. Best for ad-hoc analysis.

SELECT file_type, count(*) AS files
FROM alloy.mesh.files
WHERE deleted = false
GROUP BY file_type
ORDER BY files DESC;

From your AI tool — MCP

Connect Claude, Cursor, Codex, or another MCP-aware tool to browse your Mesh files and run SQL. See MCP.

From notebooks / BI / external compute — Iceberg REST

Mesh Storage exposes the data lake as an Iceberg REST Catalog. Create an API key from Mesh Storage → Data → API keys, then point DuckDB, Spark, Trino, or PyIceberg at the catalog endpoint. There is no copy step and no export.

From Python — Alloy SDK

Use alloy-sdk when you want Python code to upload files, list or download Mesh files, or query ingested data through hosted SQL.

from alloy import storage, sql

with storage.connect() as store:
    store.upload_folder("local/run-001", path="flights/run-001")

with sql.connect() as db:
    rows = db.fetch("SELECT * FROM alloy.mesh.file_meta LIMIT 20")

What's next?

On this page