Remote Services#

By default, RPent starts and stops the environment, VLA, and SAM3 services with each LIBERO run. Keep that default for single-machine use. Configure external endpoints only when services live on different hosts, or when you want to reuse VLA and SAM3 models across tasks.

Three flags set the endpoints: --env-endpoint for the LIBERO environment, --vla-endpoint for the Pi0.5 VLA, and --sam3-endpoint for SAM3. Each takes [protocol://]HOST:PORT — HTTP when the protocol is omitted, or socket:// for socket RPC.

Dashboard Sessions do not support --env-endpoint because every TaskRun uses a fresh environment service. --vla-endpoint and --sam3-endpoint remain available in Dashboard mode.

LIBERO environment service#

One environment service is pinned to a suite, task, seed, and max episode steps; those values must match the RPent client exactly. On the env host:

export LIBERO_TYPE=pro
python -m robots.libero.env_server \
  --suite libero_object_swap --task 2 --seed 0 \
  --max-episode-steps 10000 \
  --cuda-device 0 \
  --transport http --host 0.0.0.0 --port ENV_PORT

The environment service is task-bound. To change any of those parameters, stop the old service and start a new one.

Pi0.5 VLA service#

On the VLA host, set the checkpoint path and start the HTTP service:

export PI05_CHECKPOINT_PATH=/path/to/rlinf-pi05-libero-130-fullshot-sft
python -m rpent.robots.components.pi05_vla_server \
  --embodiment libero \
  --cuda-device 0 \
  --transport http --host 0.0.0.0 --port VLA_PORT

The VLA service loads the model once and can be reused by multiple RPent runs.

SAM3 service#

On the SAM3 host, set the local checkpoint path and start the HTTP service:

export SAM3_CHECKPOINT_PATH=/path/to/sam3/sam3.pt
python -m rpent.robots.components.sam3_server \
  --cuda-device 0 \
  --transport http --host 0.0.0.0 --port SAM3_PORT

The SAM3 service loads the model once and can be reused by multiple RPent runs.

Connect RPent#

On the machine that runs RPent, point at the three endpoints. Suite, task, seed, and max episode steps must match the environment service:

rpent \
  --robot libero \
  --suite libero_object_swap --task 2 --seed 0 \
  --libero-type pro --max-episode-steps 10000 \
  --env-endpoint http://ENV_HOST:ENV_PORT \
  --vla-endpoint http://VLA_HOST:VLA_PORT \
  --sam3-endpoint http://SAM3_HOST:SAM3_PORT \
  --planner claude_code --model claude-opus-4-8

Replace each *_HOST with a reachable address of the machine that runs that service, and each *_PORT with the free port you chose at startup. Any of the three endpoint flags can be omitted; when one is unset, RPent spawns that service locally on a free port. All three default to HTTP when the protocol is omitted, and all three accept socket://HOST:PORT.

Custom RLinf checkout#

The environment and VLA services import rlinf. When starting them manually against a development RLinf checkout instead of the installed package, point PYTHONPATH at the checkout first:

export PYTHONPATH=/path/to/rlinf:$PYTHONPATH

Servers spawned by RPent get this automatically: the checkout is resolved from RPENT_RLINF_ROOT (or RLINF_REPO_PATH), falling back to the rlinf directory next to the RPent checkout. A resolved path that does not exist is harmless — Python ignores invalid PYTHONPATH entries — so the servers import the installed rlinf package.

Parallel evaluation#

The following example demonstrates parallel evaluation with LIBERO using Pi0.5 VLA and SAM3. Other robots or evaluation setups may use different services and endpoints.

To run the same LIBERO task concurrently, first start one Pi0.5 VLA service and one SAM3 service as described above. After both services report the log line RPC server listening on ..., pass the same endpoints — http://VLA_HOST:VLA_PORT and http://SAM3_HOST:SAM3_PORT — to every concurrent rpent process, replacing the placeholders with the host addresses and ports of the corresponding services.

When the services and RPent run on the same machine, the hosts can be 127.0.0.1. All processes then use the same VLA and SAM3 services. Leave --env-endpoint unset: each process starts its own env_server and keeps its evaluation environment independent. The VLA and SAM3 models are loaded once, so their services do not need to be started again for each run.

pids=()

for i in $(seq 1 10); do
  rpent --robot libero --libero-type pro \
    --suite libero_object_swap --task 2 --seed 0 \
    --planner claude_code --model claude-opus-4-8 \
    --vla-endpoint http://VLA_HOST:VLA_PORT \
    --sam3-endpoint http://SAM3_HOST:SAM3_PORT \
    --output-dir logs/parallel_object_swap_t2_s0/run_$i &
  pids+=($!)
done

wait "${pids[@]}"

Note

For long-running evaluations over SSH, start the shared services with nohup or in a tmux / screen session; a bare & may stop them when the SSH shell exits.