Extelligence-ai/bagel
View on GitHub ↗Query robotics, drone, and IoT data in plain English through an MCP server, with an intelligent edge data reduction pipeline that keeps only the data that matters.
390 ★29 forksPythonUpdated 18d ago
What you need to know
Bagel lets you chat with physical-world data (robotics, drones, automotive, IoT) in plain language, turning prompts into deterministic, auditable DuckDB SQL over Apache Arrow files, served via an SSE MCP endpoint.
Install
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel docker compose run --service-ports ros2-kilted
Usage
- •Start the Docker service matching your data format (ros2-kilted, ros2-jazzy, px4, ardupilot, betaflight, iot, etc.) and wait for Uvicorn on 0.0.0.0:8000.
- •Connect your LLM: claude mcp add --transport sse bagel http://0.0.0.0:8000/sse.
- •Ask in plain language, e.g. 'Summarize the metadata of the ROS2 bag ./data/sample/ros2/mcap'.
- •For fully offline use, pair with Ollama: uvx ollmcp --mcp-server-url http://localhost:8000/sse --model qwen3:8b.
Key features
- ✓Plain-language querying over ROS1/ROS2/MCAP, PX4, ArduPilot, Betaflight, ASAM MDF4/CAN, MQTT, PostgreSQL/TimescaleDB, and InfluxDB 3.
- ✓Deterministic DuckDB SQL with auditable queries displayed to the user — no black-box LLM math.
- ✓Natural-language pipelines: previewed before a byte is written, then run once, across a fleet, or standing at the edge.
- ✓Extensible via POML files ('tricks'); Claude Code plugin with four skills and runbooks for Gemini CLI, Codex, Cursor, and Copilot.
- ✓Integrations with Rerun, Lichtblick/Foxglove, PlotJuggler, Cloudini, Slack, and LeRobot (beta).
Best for
Engineers interrogating robotics/IoT/automotive log data conversationally instead of scripting per-format tools.
Caveats
- ⚠Requires Docker Desktop and an MCP-enabled LLM (Claude Code or another).
- ⚠Automotive MDF4/CAN and LeRobot integrations are marked beta.
- ⚠To give Bagel access to local files you must edit compose.yaml to uncomment volumes before starting.
- ⚠Not offline by default — the LLM connects remotely unless you bring a local model.
Platforms: LocalClients: Claude Code · Gemini CLI · Codex · Cursor · Copilot
Reviewed 2026-08-18
Topics
- Stars
- 390★
- Forks
- 29
- Language
- Python
- License
- Apache-2.0
- Created
- 2025-06-27
- Last push
- 2026-08-17