No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro lyrical showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/robotwebtools/rclnodejs.git
VCS Type git
VCS Version develop
Last Updated 2026-10-26
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rclcpp_benchmark 0.0.1
custom_msg_test 1.0.0
geometry_msgs 0.1.0

README

rclnodejs - The ROS 2 Client Library for JavaScript

npm npm downloads GitHub stars Coverage Status node TypeScript

ROS 2 Distro CI Status
ROS 2 Linux x64
Linux arm64
Windows
ASan

rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.

Key features: Topics, Services, Actions, Parameters, Lifecycle Nodes, TypeScript support, RxJS Observables, Electron integration, ROS 2 in the browser (typed Web SDK + thin WebSocket gateway — rclnodejs/web, rosocket), and prebuilt binaries for Linux x64/arm64.

import rclnodejs from 'rclnodejs';

await rclnodejs.init();
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();

Documentation

Installation

Prerequisites

Source your ROS 2 environment before installing, building or running rclnodejs:

source /opt/ros/<distro>/setup.bash

Add rclnodejs to your project

npm i rclnodejs

For a branch or commit not yet published to npm, use npm install RobotWebTools/rclnodejs#<branch>, which builds from source.

Prebuilt binaries ship for Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) and 26.04 (Lyrical) on x64 and arm64, so most installs skip compilation; anything else builds from source. Set RCLNODEJS_FORCE_BUILD=1 to always build from source, and see the Dockerfile for containerized development.

Run the examples from a clone

npm install
node example/topics/publisher/publisher-example.mjs

More in example/ and step-by-step guides in tutorials/.

Bring ROS 2 to the Web

rclnodejs ships two ways to reach ROS 2 from the browser — pick one based on how much glue you want to write.

  • rclnodejs/web — a typed layer over your ROS 2 graph: you allow-list capabilities in web.json or via CLI flags; anything else is rejected before it reaches ROS 2. Best for typed web apps and HTTP clients.
    • Typed SDK — call, publish, subscribe, and action, typed from generated ROS interfaces.
    • Two transports — WebSocket for all verbs, or HTTP (--http-port) for calls, publishes, and SSE actions. Action cancellation requires WebSocket and server acceptance. SDK subscriptions use WebSocket; --http-sse enables raw HTTP subscriptions.
    • OpenAPI 3.1 — export service, topic, and action schemas with rclnodejs-web openapi.
  import type {} from 'rclnodejs';
  import { connect } from 'rclnodejs/web';
  const ros = await connect('ws://host:9000/capability');
  const reply = await ros.call<'example_interfaces/srv/AddTwoInts'>(
    '/add_two_ints', { a: '2n', b: '40n' }
  ); // reply.sum is typed as `${number}n`
  

See the Fibonacci action demo for a runnable example, or the browser manipulator demo for terminal keyboard control and live Three.js visualization. Browse all web demos by scenario and implementation.

File truncated at 100 lines see the full file