Unlike cat videos, most data are trapped in the physical world. Bagel unlocks them and lets you chat with your physical data—just like you do with ChatGPT. For example:
Is my IMU sensor overheating?
Can’t wait to try it out? 👉 Check out the Quickstart.
- Ask in plain language: No deep domain expertise needed.
- Transparent calculations: Deterministic SQL queries. No black-box LLM math.
- Broad LLM support: Claude Code, Gemini, Cursor, Codex, and more.
- Dockerized environments: No local dependencies required.
- Extensible capabilities: Bagel can learn new tricks.
- Wide format coverage: Missing your data format? Open a ticket.
| Industry | Formats |
|---|---|
| Robotics | ROS1, ROS2 |
| Drones | PX4, ArduPilot, Betaflight |
| IoT | Coming soon... |
You can ask Bagel almost anything. For example:
What’s the correlation between current and voltage in the
/spot/status/battery_statestopic?
I think the robot hit a pothole. Can you check for sudden deceleration on the z-axis to confirm?
Can you help me tune the PID of my drone?
Time to put Bagel to the test: can it catch a drone doing barrel rolls? Spoiler: 🎉 It totally can.
When you ask a question, Bagel analyzes your data source’s metadata and topics to build a high-level understanding.
Based on your prompt, if further inspection is needed, Bagel identifies the most relevant topics and interprets their meaning and structure. Bagel then writes the relevant topic messages to an Apache Arrow file and uses DuckDB to generate and execute queries against it.
This process is repeated as needed, running new queries until Bagel finds the best answer to your question.
LLMs excel at language but struggle with math. Bagel overcomes this by generating deterministic DuckDB SQL queries. These queries are displayed for you to audit, and you can guide Bagel to correct any errors.
Three commands. That’s it.
Tip
Already have Claude Code? Just paste the link to this repo and tell Claude what environment you want:
Set up https://github.com/Extelligence-ai/bagel for ROS2 Kilted.
Claude will clone the repo, start Docker, and wire up the MCP connection for you.
Install Docker Desktop and Claude Code (or another MCP-enabled LLM).
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel
docker compose run --service-ports ros2-kiltedPick the service that matches your environment:
| Service | Use case |
|---|---|
ros2-kilted |
ROS2 Kilted (latest) |
ros2-jazzy |
ROS2 Jazzy |
ros2-iron |
ROS2 Iron |
ros2-humble |
ROS2 Humble |
ros1-noetic |
ROS1 Noetic |
ros1-noetic-cv |
ROS1 Noetic + CV |
px4 |
PX4 flight logs |
ardupilot |
ArduPilot flight logs |
betaflight |
Betaflight flight logs |
Tip
To give Bagel access to your local files, edit compose.yaml before starting Docker:
uncomment and update the volumes section under your chosen service.
Wait for this output:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
In a new terminal:
claude mcp add --transport sse bagel http://0.0.0.0:8000/sseclaudeSummarize the metadata of the ROS2 bag "./data/sample/ros2/mcap".
That’s it — you’re chatting with your data.
📚 Using a different LLM?
Bagel works with any MCP-enabled LLM. Setup runbooks for tested alternatives:
- Claude Code (detailed guide)
- Gemini CLI
- Codex
- Cursor
- Copilot
Can’t find your LLM? Open a ticket.
Bagel learns new capabilities through POML files—a structured set of instructions that describe a “trick,” such as computing latency statistics.
For example, let’s define ./src/agent/examples/woof.poml.
<poml>
<task>
Count the topics in the data source.
If the count is odd, say "woof", else say "meow".
</task>
<output-format>
Return the sound, the topic count, and a few cute emojis. Nothing else.
</output-format>
</poml>
Prompt Bagel:
Run the POML capability "./src/agent/examples/woof.poml" on the ROS2 bag "./data/sample/ros2/mcap".
Result:
meow 🐱 4 topics 🐱💤🎯
- Cloudini — Decode cloudini-compressed pointcloud data in pipelines
We’d love your help! The easiest way to support the project is by giving it a ⭐ on GitHub.
Other great ways to contribute:
- Request new features
- Report bugs
- Improve documentation
- Add new capabilities
Before contributing, please review the guidelines.
Join the conversation in our Discord server — we hang out there regularly.
Bagel is open source under the Apache License 2.0.