← Back to Bagel

Documentation

Everything needed to go from clone to first answer. Bagel's documentation lives beside the code in the repository, so you can consult the tag or commit matching your installed version.

Choose a task

Compact documentation index · Share a reproducible workflow

Installation

Bagel ships one container per ecosystem. Requirements: Docker Desktop, Python 3.10+ if running natively, and an MCP-enabled client.

To give Bagel access to your recordings, uncomment and edit the volumes section under your chosen service in compose.yaml.

terminal
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel
docker compose run --service-ports ros2-kilted

# then, in a new terminal
claude mcp add --transport sse bagel http://localhost:8000/sse

# The 0.0.0.0 in that log is the container's listen address. Connect using localhost.

Compose services

ros2-kiltedROS 2 Kilted (latest)
ros2-jazzyROS 2 Jazzy
ros2-ironROS 2 Iron
ros2-humbleROS 2 Humble
ros1-noeticROS 1 Noetic
ros1-noetic-cvROS 1 Noetic + CV
px4PX4 flight logs
ardupilotArduPilot flight logs
betaflightBetaflight flight logs
iotIoT / MQTT (live)

Client setup

Using something else? Open a ticket.

Guides and runbooks

Extending Bagel

Capabilities are declared in POML files: a structured set of instructions describing a task and its output format. Drop one in src/agent/, then ask Bagel to run it against any data source.

This is the lowest-friction way to contribute: no Python required, and the capability works across every supported format.

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 and the topic count. Nothing else.
</output-format>
</poml>
prompt
Run the POML capability "./src/agent/examples/woof.poml"
on the ROS2 bag "./data/sample/ros2/mcap".

Integrations

Missing an integration? Open a ticket.

Browse the repository ↗