bagel

bagel

Understand robotics and drone data with MCP and LLMs. ChatGPT for Physical AI.

Stars: 335

Visit
 screenshot

Bagel is a tool that allows users to chat with their robotics and drone data similar to using ChatGPT. It generates deterministic and auditable DuckDB SQL queries to analyze data, supporting various robotics and sensor log formats. Users can interact with Bagel through a Discord server, and it can be integrated with different language models. Bagel provides tutorials, Docker images for easy deployment, and a roadmap for upcoming features like Computer Vision Module, Anomaly Detection, and more.

README:


Bagel lets you chat with your robotics and drone data, just as you use ChatGPT.

For example, you can ask Bagel to check a drone's IMU data for hard landings:

You can also ask Bagel to calculate the maximum velocity:

LLMs are great at predicting words, not at doing math, because they lack an innate mechanism for precise calculation [1]. Bagel solves this by generating a deterministic and auditable DuckDB SQL query to run against the data.

Bagel works with a wide range of common robotics and sensor log formats out of the box. Don't see your format? Open a ticket.

Format
ROS 2 (.mcap, .db3)
ROS 1 (.bag)
PX4 (.ulg)
ArduPilot (.bin)
Betaflight (.bbl, .BFL)

Don't forget to join our Discord server! We'll be there to answer your questions about Bagel and will sometimes drop merch!

Quickstart

We are using ROS2 Kilted and Claude Code as example.

source /opt/ros/kilted/setup.sh  # Source ROS2 dependencies
uv sync --group ros2             # Install PyPI packages
uv run main.py up mcp            # Start Bagel MCP server

Open another terminal and run:

# Add Bagel MCP server to Claude Code
claude mcp add --transport sse bagel http://localhost:8000/sse

# Launch Claude Code
claude

# Happy prompting
> Summarize the metadata of robolog "./doc/tutorials/data/ros2".

The Bagel MCP server is not exclusively tied to Claude. You're free to integrate your preferred LLMs with Bagel.

Tutorials

Running in Docker 🐳

To run Bagel without installing local dependencies like ROS, you can use our provided Docker images. Make sure you have Docker Desktop installed. This example uses ROS 2 Kilted.

Mount Your Data

First, give the container access to your robolog files. Open the compose.yaml file and find the service you want to use (e.g., ros2-kilted). Edit the volumes section to link your local data folder to the container's data folder.

services:
  ros2-kilted:
    ...
    # volumes:                                     <-- ✅ Uncomment
    #   - <path-to-local-data>:/home/ubuntu/data   <-- ✅ Uncomment & Replace

Your local robolog files will be accessible inside the container at /home/ubuntu/data.

Launch the MCP Server

Build and start the Bagel MCP server in a container with these commands:

docker compose build ros2-kilted
docker compose run --service-ports ros2-kilted uv run main.py up mcp

Once you run this, if you don't want to rebuild the container, you can just run the second command.

Roadmap

If there's something you have feedback on, or something you'd like to see, file a feature request and let us know!

Features are organized into Versions for easier tracking. New features will be released regularly, and this README.md will be updated to show which ones have shipped. Strikethrough text indicates completed features.

V1

  • Computer Vision (CV) Module
    • Video Language Model
    • Anomaly detection
    • Similarity search
  • More Robotics Formats
  • More LLMs
    • Cursor
    • OpenAI
    • Llama
    • Copilot

V1.5

  • Troubleshooting Toolkit
  • Better User Experience
    • Message pagination
    • MCP resources
    • DSL for querying nested topic messages
  • Easy Model Integration

V2

  • Platform Integration
    • Foxglove
    • Rerun
  • Better User Experience
    • Pip install and PyPI package
    • bagel CLI

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for bagel

Similar Open Source Tools

For similar tasks

For similar jobs