Skip to main content

RoboAPI

Version 0.3.0 renames the Python package, CLI and import to roboapi. Use a new environment and configuration; existing robomcp releases are different artifacts.

Test and run robot policies on UR and Franka through a browser or an MCP agent.

RoboAPI connects a single arm, a Robotiq parallel gripper and a wrist fisheye camera to a session-based model API. It collects observations, requests action chunks and executes them with the same Cartesian semantics across robots.

The source archive on PyPI includes complete installation, calibration and model API guides in docs/: select Download files on the PyPI project page, download the .tar.gz archive, and extract it. The GitHub repository is currently private.

Requirements

  • Robot: UR5 (CB3), UR5e, UR7e, Franka FR3 or Panda with system software 4.2.1–4.x.
  • Camera: wrist-mounted fisheye RGB, using V4L2 with MJPG at 1280×720 and 30 FPS. Mounting must match the model's training viewpoint.
  • Host: Linux x86-64 and CPython 3.10–3.12; new installations use 3.12 with uv.
  • Model service: an API key for https://api.pokebot.com/v1, or a custom service implementing the same model API contract. Select a model from the service's list during setup.

The release wheel includes the web interface. UR e-Series requires a separately built control runtime from sources included in the wheel. Franka uses a compatible SDK and requires a realtime host.

Arms, grippers and cameras can be installed independently as adapter packages and combined during setup. roboapi new-embodiment NAME generates their interfaces; use --components camera for one component. See Add hardware components for SDK integration.

Get started

  1. Install system libraries and create a Python environment on the robot host:

    sudo apt-get update
    sudo apt-get install -y libgl1 libglib2.0-0
    mkdir -p ~/roboapi && cd ~/roboapi
    uv venv --python 3.12
    . .venv/bin/activate
    

    Install the matching package for the robot and gripper:

    Robot Command
    UR CB3 uv pip install 'roboapi[ur-cb3,gripper]'
    UR e-Series uv pip install 'roboapi[gripper]'
    Franka FR3, system 5.9+ uv pip install 'roboapi[franka,gripper]'
    Franka FR3, system 5.6.0 uv pip install 'roboapi[franka,gripper]' 'franky-control==2.0.0+libfranka.0.13.3' --index https://timschneider42.github.io/franky/whl/libfranka-0.13.3/
    Franka Panda, system 4.2.1–4.x uv pip install 'roboapi[franka,gripper]' 'franky-control==2.0.0+libfranka.0.9.2' --index https://timschneider42.github.io/franky/whl/libfranka-0.9.2/

    UR e-Series additionally needs its native runtime built on the host:

    sudo apt-get install -y build-essential cmake
    python -m roboapi.hardware.ur.build --build-dir build/ur-native --install-dir "$VIRTUAL_ENV"
    

    For Franka, configure the realtime kernel and permissions, connect to the control cabinet's Shop Floor interface and enable FCI. FR3 5.6 and Panda also need a load/TCP import after initialization; see Franka setup.

    Use the video and dialout groups as appropriate for the camera and serial gripper. On UR, configure the flange-centre TCP and physical load in PolyScope.

  2. Run the setup wizard on the robot host:

    roboapi init
    

    Select the arm, gripper and camera separately. Franka also requests the matching assembly load or custom measurements. UR keeps its load settings in PolyScope; other adapters ask only if their driver needs them. For FR3 5.6 / Panda, export with roboapi export-franka-tool and import the file in Desk before calibration.

    Have the robot address, camera device and model credentials ready. The wizard selects the gripper connection and saves the local configuration; Franka also needs Desk credentials. Accept the default model address or enter your own, provide the API key, then select a model from the returned list. Model discovery requires a network connection.

  3. Start the browser interface:

    roboapi http
    

    Open localhost:8080. Camera preview starts automatically, with read-only arm feedback when available. Franka preview uses Desk; startup leaves its brakes and operating mode unchanged. For a remote robot host, forward its port 8080 over SSH, then open the local forwarded address.

  4. Open Settings → Devices → Calibrate. Teach Home and three points on a level surface. After the last point, RoboAPI returns Home, saves the calibration and initializes the arm and gripper. Try the optional direction checks, or choose Done to return to the run view. UR uses PolyScope teaching; Franka uses the arm's native guiding buttons, with one selectable translation axis and rotation held after capturing Home.

  5. Enter an Instruction and choose Start. Check the camera and current state; use Logs for errors. The send arrow becomes Robot Stop, and Home returns to the calibrated pose.

Actions run at 30 Hz. Between chunks, RoboAPI waits 0.5 seconds by default before capturing the next observation. Open the current model at the input’s right to go to Settings → Model & runtime and change its connection or Chunk wait (s) while stopped. Choose Connect to load models, select one, then Save to apply the settings. Choose English or Chinese in Settings → General.

Shift+Enter sends; Enter inserts a newline. Up/Down recalls past instructions without sending. Sending a new draft during a web run interrupts its current action chunk and starts a new task once the stop completes.

Settings → Devices → Motion range sets each axis's negative and positive distances from Home in centimetres. It starts enabled at Home ±0.60 m on each axis. Out-of-range position targets stop at the box boundary without ending the task; this does not constrain external forces or the whole arm. If the robot is already outside, use Home to return smoothly before starting another motion. Installation calibration is unrestricted, and saving limits never moves the robot. Runs continue until stopped or interrupted by a fault. Ctrl+C shuts down the service.

The task cards above the camera retain past instructions. After stopping, send with an empty input to continue the current task, or enter a different instruction to start a new one. Each task has a thumbs-up/down rating, an optional note and one camera recording. Continuing a task appends to its recording and skips the stopped waiting time. Open a task to review or download its video, edit feedback or delete it; selecting an old instruction only fills the input until you explicitly send it.

Recording starts automatically with each run and can be disabled for subsequent runs in Settings → Recording & storage. Videos contain the full camera view, independent of browser panning or cropping. Tasks and feedback remain on the robot host until manually deleted; ratings are not sent to the model service.

Settings can be inspected during a run, with the current state and Robot Stop kept in the section heading. Returning preserves the instruction draft, camera view and expanded history. Storage management shows task and video usage on the robot host. Clear selected or all recordings while keeping instructions and feedback, or delete whole tasks after confirmation. Active tasks and recordings still being saved are skipped. Device shortcuts remain in the main header. Logs opens a floating panel with a text filter; the camera and instruction controls remain in place and stay usable.

Connect an agent

Choose one startup mode for an installation:

Mode Start with Connect to
Browser roboapi http http://127.0.0.1:8080/
Browser and network MCP roboapi http --with-mcp Browser on 8080; MCP at http://127.0.0.1:8000/mcp
Client-managed stdio MCP Let the MCP client launch roboapi serve stdio; browser also available on 8080 by default

Each command starts its own runtime and device connections. Stop the existing service before switching modes. To add a network agent to a browser session, restart with --with-mcp. See docs/installation.md in the source archive for stdio and remote MCP client configuration.

The browser and agent share devices and settings. Stop the run before switching interfaces.

Documentation

Guide Contents
docs/installation.md Hardware preparation, native builds, connections, local files and upgrades
docs/calibration.md Home, reference plane and shared task coordinates
docs/model-api.md Sessions, observations, actions and execution feedback
docs/development.md Source setup, tests, packaging and releases
DESIGN.md Product scope and architecture

CI checks Python 3.10–3.12, frontend tests, hardware SDK imports and the installed web package, and builds and tests the UR control runtime. Physical robot operation requires separate verification; see the validation section of docs/development.md.

License

Copyright 2026 PokeBot. Project code is licensed under Apache-2.0. Bundled third-party components retain their respective licenses; see NOTICE in the source archive.

Metadata

Release files for roboapi 0.4.5

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

Source distribution (sdist)

Source distribution for roboapi 0.4.5
File Size Uploaded Provenance Actions
roboapi-0.4.5.tar.gz 25.3 MB Without provenance Details for roboapi-0.4.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for roboapi 0.4.5
File Interpreter ABI Platform Actions
roboapi-0.4.5-py3-none-any.whl Python 3 none any Details for roboapi-0.4.5-py3-none-any.whl

Total release size: 38.0 MB

Release files / roboapi-0.4.5.tar.gz

Download URL roboapi-0.4.5.tar.gz
Size 25.3 MB
Tags Source
SHA-256 checksum
How to use checksums
022304733b60138debab2cbf60503fa4728633ad9f7f50bb51cdeb99dfb264a5
BLAKE2b-256 checksum
How to use checksums
c2b718b0f7426294605269826a8f3daa30fcb7eaace0766a33a3f8e05c849591
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / roboapi-0.4.5-py3-none-any.whl

Download URL roboapi-0.4.5-py3-none-any.whl
Size 12.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
4de13c726e340d12bcd71e4a8049a775134f586c20073515e606efa3ffadca37
BLAKE2b-256 checksum
How to use checksums
4636210886ed68ac69cc15ddbcbc3fc4654f13c7501f7d807660f47d18ce17f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for roboapi 0.4.5

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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