|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.5.0 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.5.0 (2026-02-14)
- (refactor) Removes callback_group from component config
- (fix) Fixes action serialization for fallbacks
- (refactor) Removes optional health monitoring and enables it for all components
- (docs) Updates events/actions docs using new theme
- (docs) Updates concepts overview
- (docs) Updates core design docs pages
- (fix) Removes outdated check in component_action decorator
- (fix) Fixes UI outputs init error
- (docs) Updates overview and install sections
- (docs) Updates docs for events/actions and removes unnecessary md copying
- (docs) Uses Shibuya theme for docs
- (feature) Adds support for Path visulization in UI outputs
- (feature) Adds UI callback for Path datatype
- (fix) Handles point frame_id for UI output display on maps
- (docs) Re-orgnize the index tree
- (fix) Moves component fallback topics blackboard to init
- (feature) Adds support for displaying point-like UI outputs on a Map element
- (fix) Fixes clicked points transformation in UI map elements
- (feature) Adds support for topic inputs in Fallback Actions
- (fix) Fixes registering actions with multiple topics to events
- (fix) Fixes parsing and clearing a component internal events/actions
- (feature) Adds method to replace an Action input topic
- (fix) Fixes checking on_any event with multi-topic condition source
- (fix) Fixes sending topics blackboard values to action on internal (monitor) events
- (fix) Fixes serialization error in base config
- (fix) Fixes getting component internal events in launcher
- (docs) Updates docs with new API updates for events and actions
- (feature) Makes all UI cards draggable and resizable
- (feature) Adds dark/light mode toggle to UI
- (feature) Adds dynamic publishers creation in UI node
- (feature) Improves launcher logging display and colors
- (reafctor) Removes 'event_name' param from Event class and uses an internal unique ID instead
- (fix) Adds a timestamp and unique ID to events topics dashboard to prevent 'stale' message processing in events
- (refactor) Uses sugarcoat logger in UI node
- (fix) Fixes launching opaque actions with new multi-condition event design
- (refactor) Updates system actions
- (feature) Adds support for complex conditions (and, or, not) in event and refactors the Event class
- (refactor) Removes 'event_parsers' from action
- (feature) Updates the point input ui element based based on a present map element
- (refactor) Converts external processor types to an enum class
- (feature) Adds style for buttons tooltip
- (feature) Adds clicked point publishing to map canvas
- (fix) Fixes error in actions and adds external processor deserialization to executable
- (feature) Adds element and websocket to handle map data in UI
- (fix) Fixes condition builder class to avoid errors when usinf deepcopy or inspect on an object
- (feature) Adds automatic action parser from ROS types to Python types
- (feature) Adds property to automatically get a component health status topic
- (docs) Updates docus with new events-actions api
- (refactor) Adds Action to core module
- (refactor) Removes old events module
- (refactor) Removes unused init args for main Event class
- (feature) Adds conditions for string values (contains, not_contains, is_in, not_in)
- (refactor) Moves event condition class to a new module
- (feature) Adds condition builders for boolean values in events
- (feature) Adds OnAny to events constructed from conditions
- (refactor) Refactors actions module and adds method to create an automatic action parser from given topic message type
- (feature) Adds internal events condition constructor and updates the event API
- (feature) Adds trigger actions for sending empty ROS2 action/service calls
- (refactor) Updates status topic name
- (feature) Adds automatic parsing from topic values in Action
- (feature) Handles parsing internal component event_actions in launcher
- (feature) Update Task UI element with server info and request pop-up
- (refactor) Moves all component and system level actions to 'actions' module
- (feature) Adds component actions with automatic event parsers
- Contributors: ahr, mkabtoul
0.4.3 (2026-01-17)
- (refactor) Organizes UI custom javascript into three functional scripts
- (docs) Improves the core concepts documentation
- (fix) Fixes check for None max_retries value in fallback
- (fix) Fixes logging colors in multi-process execution
- (feature) Adds parameter for lifecycle transition timeout
- (fix) Add error catching during all fallbacks action execution
- (fix) Fixes fallback init and exposes on_giveup fallback
- (fix) Adds fallbacks serialization to support multi-process
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |