Skip to main content

OSIRIS Agent

PyPI Python License CI

A ROS 2 node (Humble and later) that bridges your robot to the OSIRIS remote monitoring platform via WebSocket.

Install

Install the OSIRIS agent on your robot:

pip3 install osiris-agent

On Ubuntu 24.04 and newer (ROS 2 Jazzy and later), pip refuses to install into the system's Python unless told to:

pip3 install --break-system-packages osiris-agent

Quick Start

1. Add token to your environment

export OSIRIS_AUTH_TOKEN=your-token-here

2. (Optional) Monitor a custom BT.CPP tree

Nav2's own behaviour tree is monitored by default (bt_mode: nav2). For a custom BT.CPP tree with Groot2 monitoring, set bt_mode to btcpp, in Configure agent in the Osiris app or in a ROS 2 parameters file:

osiris_node:
  ros__parameters:
    bt_mode: btcpp            # off | nav2 (default) | btcpp
    bt_host: 127.0.0.1        # where the Groot2 publisher runs
    bt_server_port: 1667
    bt_publisher_port: 1668

3. Start agent

osiris

Usage & Configuration

Environment Variables

  • OSIRIS_AUTH_TOKEN (required): your robot's token from the Osiris platform
  • OSIRIS_WS_URL (optional): the gateway's WebSocket address, for a self-hosted Osiris. Defaults to the hosted Osiris.

Every other setting is a ROS 2 parameter of the osiris_node node, or comes from Configure agent in the Osiris app.

BT.CPP Integration

The agent collects behaviour tree events from BT.CPP when bt_mode is btcpp. Your BT.CPP application must:

  1. Enable Groot2 monitoring in your code
  2. Use the standard Groot2 ZMQ ports (1667/1668), or set bt_server_port and bt_publisher_port to match

The collector uses BT.CPP's standardized Groot2 protocol, so it works with any behaviour tree without custom configuration.

Robot commands

The agent can run Nav2 spin and drive_on_heading actions when asked from the Osiris platform. This is off by default: while disabled, every motion command is rejected. Cancelling a running command always works.

An owner of the robot's workspace turns commands on with Allow robot commands in Configure agent in the Osiris app, where the limits below are set too. Osiris sends a motion command only when both the app and the agent allow it, and the stricter limits apply.

When a ROS 2 parameters file is passed, it takes precedence over the cloud configuration for every setting the agent applies. For commands, a parameters file can turn them off or set stricter limits on this robot, but it can't turn them on while they're off in the app.

osiris_node:
  ros__parameters:
    commands_enabled: true              # still needs Allow robot commands in the app
    command_max_speed_mps: 0.5          # default 0.5
    command_max_distance_m: 5.0         # default 5.0
    command_max_angle_deg: 360.0        # default 360.0
    command_max_time_allowance_s: 120.0 # default 120.0

A command that exceeds one of the limits is rejected before it reaches Nav2, as is one with a missing or non-numeric value. Two optional safety checks reject commands while a condition holds:

  • battery_check_enabled with battery_topic and battery_min_percent: reject below a battery percentage.
  • dock_check_enabled with dock_status_topic: reject while the robot is docked.

Bags

Bags recorded from the Osiris app are saved on the robot, one folder per recording, in the agent's bag_output_dir (default ~/ros2_bags). The folder is set on the robot only, never from the app:

osiris --ros-args -p bag_output_dir:=/data/bags

Setting only bag_output_dir, this way or in a parameters file, keeps the configuration from the app in effect; a parameters file that sets other fields replaces it, as above. The app lists and downloads only finished ROS 2 bags directly in that folder (folders with a metadata.yaml), and a download skips anything a symlink points to.

Upgrading from 0.3.123 or earlier: the app can no longer change the bag folder. If you had set one there, recordings go back to the robot's own bag_output_dir; set it on the robot as above to keep using your folder.

Contributing

Bug reports and pull requests are welcome at https://github.com/nicolaselielll/osiris_agent. See CONTRIBUTING.md for how to report a bug or send a change, and SECURITY.md for reporting a security problem privately.

License

Apache-2.0 — see the LICENSE file.

Changelog

See CHANGELOG.md for what changed in each version, and GitHub Releases for the release notes.

Metadata

Release files for osiris-agent 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for osiris-agent 0.4.0
File Size Uploaded Provenance
osiris_agent-0.4.0.tar.gz 409.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for osiris-agent 0.4.0
File Interpreter ABI Platform
osiris_agent-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 803.4 kB

Release files / osiris_agent-0.4.0.tar.gz

Download URL osiris_agent-0.4.0.tar.gz
Size 409.7 kB
Tags Source
SHA-256 checksum
How to use checksums
38c31d2cf9f3cf619300ce2d96d4991537fd959648280bdff8b7950690990508
BLAKE2b-256 checksum
How to use checksums
60a9dbebccef7b24f556464bb312c21e67b0e7780a21969e95aae9a40228db75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release files / osiris_agent-0.4.0-py3-none-any.whl

Download URL osiris_agent-0.4.0-py3-none-any.whl
Size 393.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4105b0b49ddb6b18f22695748b5a091f90e0b481cd4e6ea2b6d0b09286964341
BLAKE2b-256 checksum
How to use checksums
fa37392b1dbec399b8057bdcc46f3353ed99ae38f90710e408c04f042a0ebc21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Security for osiris-agent 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page