RAPID Live - ABB Robotics for VS Code
The first VS Code extension that connects directly to a live ABB controller.
Live-tested on RobotWare 8.1 and 7.21 (OmniCore) and RobotWare 6.16 (IRC5).
Works against real hardware and RobotStudio virtual controllers, with both
RWS 1.0 (HTTP Digest, IRC5) and RWS 2.0 (HTTPS Basic + XHTML, OmniCore)
auto-detected from the controller's auth challenge.
What it does
- RAPID language server - hover docs from the official 705-entry reference manual, autocomplete, signature help, snippets, CodeLens above every
PROC / FUNC / TRAP, Go-to-Definition, Find References, document outline, inlay hints showing live values.
- Push / Pull / Diff -
.mod file workflow that fits in any git repo. Pull all controller modules into your workspace; edit; push back. Diff your local file against what's currently loaded.
- Live Cell dashboard - joints, TCP, op-mode, exec state, speed at a glance.
- Tasks panel - every RAPID task with its modules and routines. One-click run, set PP, unload. Create new tasks (writes
SYS/CAB_TASKS in CFG).
- Variables Watch - pin variables, see live values poll every 1 s.
- Multi-robot - one window, many controllers, switch active in a click.
- Plus: file system browser, I/O signal control, event log with details, CFG read+write, backup / restore, service-routine call, IK + FK, and 100+ commands covering the full RWS surface.
Quick start
- Install from the marketplace.
- Click the RAPID Live icon in the activity bar → + Add Robot.
- The wizard finds every controller for you: RobotStudio VCs are detected in about a second whatever random port they landed on, real robots on the standard service address, and anything announcing over mDNS/Bonjour.
- Default credentials:
Admin / robotics (recommended; works on most controllers). Falls back to Default User automatically on IRC5 if Admin doesn't exist.
- Right-click your robot → Connect.
That's it - the panels populate in under 2 seconds.
How it differs from other ABB extensions
The other ABB extensions on the marketplace are static editor enhancements - syntax highlighting, snippets, language servers. None of them connect to a controller.
| Feature |
RAPID Live |
Other ABB extensions |
| Syntax highlighting + snippets |
✓ |
✓ |
| Hover docs from the official manual |
✓ |
partial |
| Live controller connection |
✓ |
✗ |
| Live variable values inline |
✓ |
✗ |
| Push / Pull / Diff workflow |
✓ |
✗ |
| Multi-robot management |
✓ |
✗ |
| Real-time WebSocket subscriptions |
✓ |
✗ |
| Module load/unload + routine drill-down |
✓ |
✗ |
| File system + I/O + CFG access |
✓ |
✗ |
| Event log with severity + details |
✓ |
✗ |
| Inverse + forward kinematics |
✓ |
✗ |
| Cross-platform (macOS / Linux) |
✓ |
most no |
| Built on a published TS RWS client |
✓ |
n/a |
We don't compete with RobotStudio's 3D simulation or cell design - that's a different category. We do the dev loop: connect, monitor, edit, deploy, repeat.
Live editing in the editor itself
Open any .mod / .sys / .prg file while connected and the editor lights up:
- Faded gray live values next to every
VAR / PERS / CONST declaration, polled every 1.5 s.
- Green ▶ in the gutter at the line where the controller's program pointer is currently executing.
- CodeLens above every routine:
▶ Run this routine and ▶ Set PP here.
- Hover any identifier → reference-manual docs (705 entries) for built-ins, live controller value for user variables.
- Ctrl+click a routine name → jump to its declaration anywhere in your workspace.
Git workflow for RAPID
The point of RAPID Live: edit at your desk, version-control in git, deploy to the robot. None of that flow exists in RobotStudio.
┌─ Pull All Modules from Controller ─┐ ┌─ Push Current File ─┐
│ │ │ │
│ Workspace folder ← controller │ edit │ workspace ── push ──→ controller
│ (now in git) │ ────────│ │
└─────────────────────────────────────┘ └─────────────────────┘
- Pull All Modules - bulk download every loaded program module into your workspace as
.mod files.
- Push Current File - load the active
.mod into the running task. Right-click in the editor, the title bar, or the file explorer.
- Diff with Controller - VS Code's native diff editor between your local file and what's currently loaded. Read-only on the controller side, no risk of clobbering.
Built on the open-source abb-rws-client package
The protocol layer is published separately as abb-rws-client - the only TypeScript client for ABB Robot Web Services that supports both protocol versions (RWS 1.0 + 2.0).
Building robot tooling outside this extension - a CLI, a web HMI, a ROS bridge, an MES connector? Skip the protocol-quirk research:
npm i abb-rws-client
import { createClient } from 'abb-rws-client';
// Auto-detects RWS 1.0 (IRC5) vs 2.0 (OmniCore) from the auth challenge
const client = await createClient({ host: '192.168.125.1' });
console.log(await client.getControllerState(), await client.getOperationMode());
The package ships with the full RobotManager lifecycle, MultiRobotManager orchestration, WebSocket subscriptions with polling fallback, IRWSAdapter typed interface, and ~30 documented protocol quirks the ABB developer center doesn't cover.
What you can't do (and why)
ABB designed certain things to be impossible from a remote interface. We probed all of these against live virtual controllers; they're protocol-level walls, not extension limitations:
- Bypass the FlexPendant op-mode-change confirmation popup - safety-by-design.
- Bypass the RMMP grant prompt - safety-by-design.
- Modify UAS user grants from RWS -
/users/grant-status is read-only; UAS configuration is FlexPendant-only.
- Override the FlexPendant key switch on real hardware - physical safety interlock.
- Jog from AUTO mode - forbidden by ISO 10218.
Coming soon:
- Robot panel - a dedicated interactive panel view for the whole cell: jog, I/O at a glance, signal search, production monitoring. In active development.
- Step debugging UI (Step Into / Over / Out + breakpoint sync).
- Hot-edit / ModPos in a running program.
Pair with the official ABB extension
ABB's own RAPID & Ecosystem Tools provides additional language-level features. Both extensions co-exist cleanly - install both for the best experience.
Built on Node.js APIs only. Tested on Windows; the same code runs on macOS and Linux. RobotStudio is Windows-only, but real ABB hardware (and OmniCore Docker VCs) work fine from any platform.
Safety notes
This extension can change controller state - turn motors on, start RAPID, write I/O signals. Read the ABB safety documentation for your robot before using these features outside a sandbox.
Contributing & feedback
License
MIT - Meraj Safari, 2026