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

ardupilotbetaflightclaudedata-reductiondroneduckdbiotmcapmcpmcp-servermodel-context-protocolpx4-autopilotroboticsrosros2
Stars
390★
Forks
29
Language
Python
License
Apache-2.0
Created
2025-06-27
Last push
2026-08-17