RPX — wrap any robot training command with full end-to-end analytics.
Project description
rpx-agent
Wrap any robot training command with one line and get full end-to-end analytics on robosynx.com.
What it collects automatically — zero code changes to your training script:
| Signal | How |
|---|---|
| Live logs (stdout + stderr) | Streamed in real-time |
| RL metrics (reward, KL, loss, entropy…) | Parsed from stdout — SB3, RSL-RL, Isaac Lab, CleanRL, generic |
| Termination reasons & reward components | Parsed from Episode_Termination/ and Episode_Reward/ lines |
| GPU / CPU / RAM | nvidia-smi + psutil every 60 s |
| Checkpoints / artifacts | File watcher: .pt, .pkl, .ckpt, .safetensors… |
| Environment snapshot | Python version, CUDA, GPU name, git SHA, detected simulator |
| Heartbeat | Every 30 s — run stays marked alive during Isaac Sim loading |
| Offline buffering | Events spooled to disk when backend unreachable; replayed automatically |
Install
pip install rpx-agent
# Optional extras for richer system telemetry:
pip install "rpx-agent[full]" # adds psutil + PyYAML
Local development:
pip install -e ./robotrainx-agent
Flow 1: pip install + rpx-agent run (recommended)
3 commands, then training is instrumented:
# 1. Authenticate
rpx-agent login --api-key YOUR_KEY
# 2. (optional) Initialise project config in your training directory
cd /path/to/your/robot/project
rpx-agent init
# 3. Wrap your existing training command — nothing else changes
rpx-agent run -- python train.py --num-envs 1024
rpx-agent run -- python train_headless.py --agent AnymalC --headless
rpx-agent run -- bash scripts/train.sh
Auto-detection: --task and --platform are inferred automatically.
No need to add any flags unless you want to override.
rpxalso works as a short alias:rpx run -- python train.py
All flags for rpx-agent run
--task TEXT Experiment name (default: inferred from script filename)
--label TEXT Human-readable label shown in dashboard
--platform TEXT isaaclab | mujoco | gazebo | custom (auto-detected)
--run-id TEXT Explicit run ID (auto-generated UUID if omitted)
--tags TEXT Comma-separated tags
--watch-dir DIR Extra dir to watch for checkpoints (repeatable)
--no-metrics Disable stdout metric parsing
--no-sysinfo Disable GPU/CPU telemetry
--no-artifacts Disable checkpoint file detection
--batch-size N Log events per HTTP batch (default: 80)
--flush-interval F Seconds between log flushes (default: 1.5)
Flow 2: SSH connect (HPC / shared clusters)
For machines where you can't install packages (SLURM, university HPC):
- In the RoboProtX dashboard → Remote Hosts → Add SSH host
- Paste your SSH key and remote training command
- RoboProtX SSHes in, runs your command, streams logs back
- Same analytics pipeline — failure intelligence, sim-to-real, promotion gate
Flow 3: Docker self-host (on-prem enterprise)
cp .env.example .env
# Set ROBOTRAINX_API_KEY, ISAACMONITOR_DB_URL, JWT_SECRET in .env
docker compose up -d postgres backend frontend
Then use rpx-agent run pointed at your local backend:
export ROBOTRAINX_SERVER_URL=http://your-server:3001
rpx-agent run -- python train.py
Project config (roboprotx.yaml)
rpx-agent init creates this automatically. You can also write it manually:
project: anymal-locomotion
simulator: isaaclab
server_url: https://api.robosynx.com
watch_dirs:
- .
- logs/checkpoints
The agent searches for roboprotx.yaml from your current directory up to the filesystem root.
Environment variables
| Variable | Aliases | Description |
|---|---|---|
ROBOTRAINX_API_KEY |
IM_API_KEY, ROBOPROTX_API_KEY |
API key |
ROBOTRAINX_SERVER_URL |
IM_SERVER_URL, ROBOPROTX_SERVER_URL |
Backend URL |
Edge cases handled
- Backend unreachable at start — runs offline, all events spooled to
~/.robotrainx-agent/spool/, replayed when connection restored - Binary / non-UTF-8 output (Isaac Sim OpenGL) — decoded with
errors=replace, never crashes - Long lines > 8 KB — truncated with
...[truncated]marker - Orphan GPU processes on Ctrl+C — kills entire process group (
SIGKILLon Linux,taskkill /Ton Windows) - Command not found — friendly error with PATH hint, exits 127
- Missing API key on production server — warns clearly with
rpx-agent logininstructions - SLURM / multi-process training — wrap the
srunortorchruncommand directly - Isaac Sim long startup (5-10 min silent) — heartbeat thread keeps run alive
- Rate limiting (HTTP 429) — automatic exponential backoff retry
- 401/403 auth errors — clear message with
rpx-agent logininstructions
Supported log formats (auto-parsed)
| Framework | Detected signal |
|---|---|
| Stable Baselines3 | | rollout/ep_rew_mean | 4.23 | table |
| RSL-RL / Isaac Lab | Learning iteration 100/1000 blocks |
| CleanRL | global_step=51200, episodic_return=4.23 |
| Generic | reward=4.23 iteration=100 kl=0.012 |
| IsaacMonitor / rpx patch | [IsaacMonitor] failure captured: base_contact rate=0.30 |
| Episode labels | Episode_Termination/base_contact: 0.30 |
Publish to PyPI
python -m build ./robotrainx-agent
python -m twine upload robotrainx-agent/dist/*
Or just push a version tag — GitHub Actions auto-publishes:
git tag v0.2.1; git push origin v0.2.1
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rpx_agent-0.2.1.tar.gz.
File metadata
- Download URL: rpx_agent-0.2.1.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
813792dca8274b742b12ae6563b2fd83c3f17605fb302d5742382e2c045e600d
|
|
| MD5 |
6e710d0f75c0e2c4c07ab4f081b5ab23
|
|
| BLAKE2b-256 |
a045e82fe2d84244d7f659d16c3a3fad82fa1663cf094162bb60e4b2a144a85c
|
Provenance
The following attestation bundles were made for rpx_agent-0.2.1.tar.gz:
Publisher:
publish.yml on ActuallyIR/isaacmonitor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpx_agent-0.2.1.tar.gz -
Subject digest:
813792dca8274b742b12ae6563b2fd83c3f17605fb302d5742382e2c045e600d - Sigstore transparency entry: 1516770991
- Sigstore integration time:
-
Permalink:
ActuallyIR/isaacmonitor@fb67a18938a178d0421d923d959760898750813b -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ActuallyIR
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb67a18938a178d0421d923d959760898750813b -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpx_agent-0.2.1-py3-none-any.whl.
File metadata
- Download URL: rpx_agent-0.2.1-py3-none-any.whl
- Upload date:
- Size: 25.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b49904f97a9471995810e159648e471c2bdd1e616b22e3edf89249163a28cf5
|
|
| MD5 |
606150004bc885944ea63ba239d65197
|
|
| BLAKE2b-256 |
189190b0bdfe98746d53b2ce4b36e54c99ef92b2577e700250c1e4d3f5803651
|
Provenance
The following attestation bundles were made for rpx_agent-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on ActuallyIR/isaacmonitor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpx_agent-0.2.1-py3-none-any.whl -
Subject digest:
5b49904f97a9471995810e159648e471c2bdd1e616b22e3edf89249163a28cf5 - Sigstore transparency entry: 1516771112
- Sigstore integration time:
-
Permalink:
ActuallyIR/isaacmonitor@fb67a18938a178d0421d923d959760898750813b -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ActuallyIR
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb67a18938a178d0421d923d959760898750813b -
Trigger Event:
push
-
Statement type: