Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

FWS Console

CI

An operator console for FWS, the REST + WebSocket gateway for Fairino collaborative robots.

Live telemetry, a 3D arm view, jogging, programs, I/O, force readout, fault decoding and the audit trail — served by the gateway itself, in any browser.

⚠️ This console is not a safety device. Its Stop button is a functional stop, not an emergency stop. Read the gateway's SAFETY.md before connecting anything to a robot.

Install

The console is an optional add-on. The gateway works without it; installing the console adds a UI, uninstalling it leaves the gateway exactly as it was.

pip install fairino-fws-console      # pulls in fairino-fws
fws-console --simulator              # no hardware needed

Open http://localhost:8000/console/. Every gateway flag works unchanged — fws-console is fws plus a mounted UI:

fws-console                          # robot at 192.168.57.2
fws-console --robot-ip 192.168.58.2  # teach port
fws-console --check                  # validate configuration and exit

Why serving from the gateway matters

FWS deliberately ships no CORS middleware and binds to loopback only. A page served from anywhere else cannot call its API — and that is a feature, not a gap. The console therefore lives at the gateway's own origin: same process, same port, no CORS exception, no extra listener, nothing new to secure.

To use it from another machine, tunnel — as with the gateway itself:

ssh -L 8000:localhost:8000 user@<gateway-host>

What the panels show

Operator panels

Panel What it binds to
Operate 10 Hz WebSocket telemetry, 3D arm view, joint/Cartesian jog, per-joint limit headroom
Faults live fault state, searchable error-code table with the gateway's own caveat about firmware versions
Programs the programs already on the controller — list and download each — plus upload with md5 verification, load, select, validate against the controller's own Lua compiler, run/pause/resume/stop
I/O digital, tool digital and analog, read on demand
Force wrist force/torque, sensor config, zeroing, activation, and the strategy boundary
Capabilities the controller's available / absent / unknown feature matrix, with re-probe
Audit who commanded what, when

Developer panels

The gateway exposes 100 operations across 22 domains; the console reaches all of them.

Panel What it gives you
Develop the whole edit → compile → run → watch loop in one view: the controller's program directory, a Lua editor (syntax highlighting, line numbers, Ctrl+S saves to the controller with md5 verification), compile-check, load, run/stop with the gateway's confirm flow, and a live strip — joints, TCP, force, fault — beside the code
Teach capture live poses into a point store, generate literal-pose programs the gateway can pre-flight, read the controller's own taught points, move point tables whole, define tool and work object frames with current-TCP capture, and an honestly-labelled experimental drag-teach
Config robot state, velocity, flange pose, tool and work frames, active frames, joint torques, gripper, payload, global speed, motion queue, IK pre-flight, point tables
Commands the 594-command wire registry — filter by danger class and kind, read each command's wire arguments, arity, evidence basis and hazards, and invoke it with the policy matrix beside you
Lua the 282-function controller catalogue, manual sections, the RPC↔Lua bridge, the argument-order conflicts, what this firmware is missing, and a box that compiles a snippet on the controller itself
API every operation, generated from the gateway's own /openapi.json — filter, fill parameters, edit a JSON body built from the schema, send, read the response with timing, or copy the request as curl
Files file kinds and their limits, controller filesystem browse/read, Lua compile verdicts, program version history, backup downloads
System health warnings, boot/recovery layers with port state, versions, controller services, processes, qconn, the controller shell, and the guarded restart / reboot / shutdown paths

The API panel is generated, not hand-written: an endpoint added to a future gateway release appears in this console without a change here.

The 3D view does not guess silently

There is no published, verified link geometry for these arms, and FWS never hardcodes robot constants. So the console draws the arm from a declared kinematic model and checks itself on every frame: it compares its own forward kinematics against the TCP the controller reports and shows the disagreement in millimetres. Against --simulator it reads 0.00 mm — the model reproduces the simulator's kinematics exactly. Against real hardware it will tell you honestly how approximate the picture is.

Development

No build step, no bundler, no CDN, no JavaScript dependencies. The UI is plain ES modules in fws_console/web/, served by the gateway. Edit a file, refresh the browser.

git clone https://github.com/ichbinmeraj/fairino-fws-console && cd fairino-fws-console
python3 -m venv .venv && .venv/bin/pip install -e .[dev]
.venv/bin/fws-console --simulator

That is deliberate: robot cells are often air-gapped, so every byte the console needs ships in the wheel.

Licence

Apache-2.0. An independent project, not affiliated with or endorsed by FAIR Innovation.

Release files for fairino-fws-console 0.1.0a1

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

Source distribution (sdist)

Source distribution for fairino-fws-console 0.1.0a1
File Size Uploaded
fairino_fws_console-0.1.0a1.tar.gz 171.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fairino-fws-console 0.1.0a1
File Interpreter ABI Platform
fairino_fws_console-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 336.1 kB

Release files / fairino_fws_console-0.1.0a1.tar.gz

Download URL fairino_fws_console-0.1.0a1.tar.gz
Size 171.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cd44ed8852033ae1168024e503de6d81f7109db5bb7537e0b4c0a16d1b8e0b4a
BLAKE2b-256 checksum
How to use checksums
c9b85d3d36f3d11d9ea3df56da0ec45f5066177ff73f227daffc799ccde122db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log

Release files / fairino_fws_console-0.1.0a1-py3-none-any.whl

Download URL fairino_fws_console-0.1.0a1-py3-none-any.whl
Size 164.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d587d1609ecc3cd1a0d622874b2b1574d943149ff0c7d5ec566b8687da054a5b
BLAKE2b-256 checksum
How to use checksums
8c6506c420971fb38ef82852a58dce4c9deab144c09555cd86b911ca3525fbca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log
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