Advanced Metal Research
GitHub Contact AMR

Ports, sockets and environment variables

On this page
  1. Unix sockets
  2. TCP ports
  3. Dev stack (dev-stack.sh)
  4. rt-control and installed units
  5. Offline programming server
  6. Weld planner
  7. Virtual pendant

This page lists the defaults from the code. Hosts are shown as they are bound. Replace rosie.local with your cell host where a remote address is meant.

Unix sockets#

SocketDefault pathOwnerPublic?
Native core IPC/run/rosie-rt-core/ipc.sock (rt-control --core-socket, rtctl run --socket). Installed units use /run/rosie-rt-core/native/ipc.sock.rosie-rt-coreNo. Private between the core and rt-control.
Control API/run/rosie-rt-core/control.sock (rt-control --socket, rtctl --socket). Installed units create it at /run/rosie-rt-core/public/control.sock, with a symlink at the default path.rt-controlYes. HTTP/JSON.
Jog lanejog.sock in the same directory as control.sockrt-controlYes. 224-byte datagrams.
Dev-stack sockets$ROSIE_LOCAL_RT_DIR/{ipc,control,jog}.sock, default ${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/rosie-dev-rt-$UID/dev-stack.shLocal only

Unix sockets must be on a Linux filesystem. Under WSL, /mnt/c does not work.

TCP ports#

PortServiceDefault bindNotes
8443rt-control mutual-TLS listenerOff unless --remote-listen is set. Cell configs pin 127.0.0.1:8443.Remote HTTP API and WebSocket jog. Requires a CA, server certificate and key, and a CRL.
8794OLP server127.0.0.1:8794 (serve --listen, launcher OLP_LISTEN)API under /api/offline-programming/v1/
5189OLP UI (Vite)127.0.0.1, or 0.0.0.0 under dev-stack when a Tailscale address is foundApp at /offline-programming/v1/ui/. It proxies /api to the OLP server.
8796Weld planner motion server0.0.0.0:8796 (--host, --port)Listens on all interfaces by default. Pass --host 127.0.0.1 on an untrusted network.
8797Dense trajectory daemon ingest127.0.0.1:8797Length-framed TCP, one request per connection
51711Virtual pendant UI (Vite)127.0.0.1Page at /steamdeck/virtual/v1/
51712Virtual pendant bridge127.0.0.1 (must be loopback)/healthz, /api/v1/*
14222, 18222NATS server (dev stack only)127.0.0.1Client and monitoring ports
8787Program catalog and daemon state (optional)—Not part of this repository's public path. The dev-stack catalog service is skipped unless you supply its script.

The Cartesian motion server listens for UDP intent packets only on the address you pass with --udp-listen HOST:PORT. It has no default port. Its status file defaults to /run/robot-v4-cartesian/status.json.

Dev stack (dev-stack.sh)#

VariableDefaultEffect
ROSIE_DEV_STACK_DIR$RUN_BASE/rosie-stack-$UIDPid files, logs and readiness files. RUN_BASE is $XDG_RUNTIME_DIR, else $TMPDIR, else /tmp.
ROSIE_LOCAL_RT_DIR$RUN_BASE/rosie-dev-rt-$UIDSimulator and rt-control sockets
ROSIE_LOCAL_RT_BUILDrt-core/build/dev-stackCompiled config and consumer bindings
DEV_STACK_BACKENDrt_coreThe only accepted value. Anything else exits with backend_retired.
DEV_STACK_MACHINE_CONFIGrt-core/config/machines/simulation/simulation-program.jsonThe simulated machine, read by local-rt-core.sh prepare
DEV_STACK_UI_HOST127.0.0.1; 0.0.0.0 if Tailscale is upUI bind host
DEV_STACK_UI_MODEdev; built if Tailscale is updev (hot reload) or built (compressed bundle)
DEV_STACK_FIREWALL10 skips adding a ufw rule for remote UI access
DEV_STACK_PENDANT_PORT51712Virtual pendant bridge port
DEV_STACK_DENSE_INGEST127.0.0.1:8797Dense daemon listen address
DEV_STACK_DENSE_NATS_URLnats://127.0.0.1:14222Dense daemon NATS URL
DEV_STACK_DENSE_BIN_DIRmake -C motion-server/joint-trajectory/v1 print-bin-dir (rt-core/build/dense)Where the dense daemon binary is
DEV_STACK_NATS_BIN~/.rosie/bin/nats-serverNATS server binary
DEV_STACK_OLP_CELLSunsetA cell catalogue file (offline-programming.cell-catalogue.v1). Its cells are added after the local simulation.
DEV_STACK_OLP_REMOTEunsetA remote rt-core binding file for OLP. Its address must be https://.
CATALOG_DAEMON_SCRIPT~/.cache/rosieos-olp/catalog-daemon/start-catalog-daemon.shStart script for the optional catalog service
STACK_WAIT_SECS300Health wait for start

local-rt-core.sh bind writes binding.env into ROSIE_LOCAL_RT_BUILD. It exports these variables:

  • ROSIE_RT_CONTROL_SOCKET and ROSIE_RT_JOG_SOCKET
  • ROSIE_RT_PAIR_ID (local-dev) and ROSIE_RT_PAIR_REVISION (1)
  • ROSIE_RT_CONFIGURATION_SHA256
  • ROSIE_RT_URDF and ROSIE_RT_URDF_SHA256
  • OFFLINE_PROGRAMMING_RT_CORE_CONFIG

rt-control and installed units#

Variable or fileUsed byMeaning
ROSIE_RT_COMPILED_CONFIGrt-controlDefault for --compiled-config, the compiled digest directory containing resources.json
/etc/rosie-rt-core/control.envrosie-rt-core.service, rosie-rt-control.serviceSets ROSIE_RT_CONFIGURATION_SHA256, ROSIE_RT_PAIR_ID, ROSIE_RT_PAIR_REVISION, ROSIE_RT_REMOTE_ARGS (extra rt-control flags) and ROSIE_RT_CORE_ARGS (core arguments)
/etc/rosie-rt-core/natspublisher.envrosie-rt-natspublisher.serviceNATS publisher settings

rt-control flags are in rt-control HTTP API, and rtctl flags in rtctl.

Offline programming server#

VariableFlag it defaultsMeaning
OFFLINE_PROGRAMMING_WELD_PLANNER_MOTION_ORIGIN--weld-planner-motion-originWeld planner origin, usually http://127.0.0.1:8796. It is used by the server only, to plan and to fetch .rdt files.
OFFLINE_PROGRAMMING_EXECUTION_BACKEND--execution-backendrt_core, the only backend
OFFLINE_PROGRAMMING_JOG_BACKEND—Must be rt_core
OFFLINE_PROGRAMMING_RT_CORE_CONFIG--rt-core-configJSON binding for the local rt-core: socket, pair, digests, axis mask
OFFLINE_PROGRAMMING_CELLS—Cell catalogue for the machine list
OFFLINE_PROGRAMMING_PROGRAM_CATALOG_ORIGIN--program-catalog-originOptional program catalog origin
OFFLINE_PROGRAMMING_DAEMON_STATE_URL--daemon-state-urlOptional daemon state URL
OFFLINE_PROGRAMMING_EXECUTION_STATE_DIR--execution-state-dirDirectory for execution audit state
OFFLINE_PROGRAMMING_JOG_BINARY—Path to robot-v4-cartesiand
OLP_CARTESIAN_RESOLVER, OLP_CARTESIAN_RESOLVER_REPO—Override the Cartesian resolver binary and the repository it loads robots from
SEAM_WORKER_PYTHON, SEAM_WORKER_SPARES—Python for the seam worker subprocess, and how many spare workers to keep warm
CADQUERY_TOPOLOGY_PYTHON—Python for the CadQuery tessellation subprocess
ROSIE_REPO—Repository root, if the server cannot find it
ROSIE_RT_CONTROL_SOCKET, ROSIE_RT_PAIR_ID, ROSIE_RT_PAIR_REVISION—Local rt-control binding

Launcher only (start-offline-programming.sh):

VariableDefaultMeaning
OLP_LISTEN127.0.0.1:8794Server listen address
OLP_UI_HOST, OLP_UI_PORT127.0.0.1, 5189The UI URL it prints
OLP_SIM_WAIT_SECS270Wait for the local simulator to become ready
OLP_RESTART_SERVEunset1 restarts a server that is already running
ROSIEOS_OLP_CACHE~/.cache/rosieos-olpBuild cache for the server and motion-server binaries
OFFLINE_PROGRAMMING_RT_CORE_REMOTEunsetA remote rt-core binding file for dense execution

OLP UI: OFFLINE_PROGRAMMING_API_URL sets where Vite proxies /api. It defaults to http://127.0.0.1:8794.

Weld planner#

Variable or flagDefaultMeaning
--host, --port0.0.0.0, 8796Listen address
--dense-store-dir, WELD_PLANNER_DENSE_STORE_DIR~/.cache/rosieos-olp/weld-planner-denseWhere dense .rdt files are written for OLP to fetch
AMR_WELD_PLANNER_SOURCE_REVISIONSet by pixi run -e motion motion-serve to git rev-parse HEADStamped into results so you can tell which code planned them

Virtual pendant#

VariableDefaultMeaning
STEAMDECK_VIRTUAL_BRIDGE_URLhttp://127.0.0.1:51712Where the UI's Vite server proxies /healthz and /api/v1