openvibers/openvibe.link Commits
The Node's own address: node.openvibe.network/install (#112)
Changes
@@@ -7,9 +7,12 @@ agents, at the level you set on the machine) can use the device. It connects outOn a robot's Raspberry Pi (or other Linux computer), the one command:```sh--curl -fsSL https://openvibe.bot/install | sh++curl -fsSL https://node.openvibe.network/install | sh```++The same installer is also at <https://openvibe.bot/install>, which keeps working; `node.openvibe.network` is the++Node's own address, where it also has a page that says what it is and how to install it.++It turns on I2C and SPI, installs the camera tools, finds the kit (an Adeept ADR036 4WD, a ROS 2 robot), shows a codeto approve at openvibe.bot/link, and pairs: the robot is made, drivable on its panel and, if you chose it, live on yourOpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspberry-pi-and-other-linux-robots)).@@@ -17,7 +20,7 @@ OpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspberWith a robot already added on openvibe.bot:```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept++curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept```openvibe.bot shows this command with the robot's id and a fresh code. `--driver` is `adeept`, `adeept-mecanum`, `cozmo`, `ros2`,@@@ -39,7 +39,7 @@ a Cozmo-based robot).robot and reaches it over the robot's own link (Cozmo first through PyCozmo; later Vector, Tello, Sphero, LEGO); abridge joins the robot's network on one interface and reaches OpenVibe on another. **Server-side**: Bot itselfconnects to ONVIF/RTSP cameras (credentials by secret reference, never in the profile). The agent is a Python 3 package-- (the Pi, PyCozmo and the kit libraries are Python), installed by `curl -fsSL https://openvibe.bot/install | sh` into a++ (the Pi, PyCozmo and the kit libraries are Python), installed by `curl -fsSL https://node.openvibe.network/install | sh` into avirtual environment with a systemd unit and the hardware watchdog.4. **Control runs over one outbound WebSocket per device; video over WHIP.** The device dials Bot(`wss://openvibe.bot/device`), authenticates with its credential, and keeps one connection for commands, telemetry and@@@ -116,7 +116,7 @@ pattern (dry-run), an H.264 byte stream from a child process (`rpicam-vid`, `ffm## install.sh and CI--`install/install.sh` (`curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|none]`, e.g. `--code ABCD-1234 --driver adeept`):++`install/install.sh` (`curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|none]`, e.g. `--code ABCD-1234 --driver adeept`):detect OS/arch, download the release binary and the plugin bundle, create a Python virtual environment for plugins,install the service, pair with the code.CI: `go vet`, `go test ./...` (race detector), cross-compile every target, Python plugin tests, and a release workflow on@@@ -23,7 +23,7 @@ The installer does it with `--ai` (Node v0.28.0), added to the command openvibe.install you already have. It says which model server answers, or how to get one:```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --ai++curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --ai````--ai-endpoint http://127.0.0.1:8090` names a server on another port (it implies `--ai`). `--ai` works with `--worker`,@@@ -11,7 +11,7 @@ itself**: nothing in the cloud can raise that level.On Linux, from your own account (the installer uses sudo itself):```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing pair_… --code ABCD-1234 --computer ask++curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing pair_… --code ABCD-1234 --computer ask````--computer LEVEL` runs the Node's service as **your** account (never root, never the `openvibe-node` system account)@@@ -264,7 +264,7 @@ task's desk from the profile `agent`.An old laptop, a mini PC or a spare workstation can host desks for your agents: no screen, keyboard or login needed.```--curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --desk-host++curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --desk-host```- **Its own account.** The Node runs as `openvibe-desk` (home `/var/lib/openvibe-desk`), never as a person. An agentthere never reaches anyone's own files, browser or sessions. The computer plugin runs at `trusted` for that account's@@@ -287,7 +287,7 @@ A desk host OpenVibe or a community member runs for **other people's** agents (tmust keep each person's desk away from the machine and from every other desk. Such a host runs browser desks only, andeach desk's browser runs in the job worker's sandbox (docs/worker.md):```--curl -fsSL https://openvibe.bot/install | sudo sh -s -- --network … --pairing pair_… --code … --desk-host --shared++curl -fsSL https://node.openvibe.network/install | sudo sh -s -- --network … --pairing pair_… --code … --desk-host --shared```- **Each desk sandboxed.** The plugin starts a desk's browser as `openvibe-node desk-sandbox -- <browser> …`: its ownuser, mount, network, PID and IPC namespaces, as the unprivileged `openvibe-job` (`worker.run_as`), in a cgroup of its@@@ -7,7 +7,7 @@ replaces it, and the installer disables the kit's own autostart (`docs/install.m## 0. The one command```sh--curl -fsSL https://openvibe.bot/install | sh++curl -fsSL https://node.openvibe.network/install | sh```On the Pi, with the kit's board on it: it turns on I2C and SPI, installs the camera tools and the plugin's packages,@@@ -30,13 +30,13 @@ there (pick **Adeept ADR036 mecanum** on that page for the mecanum chassis). Sec## 2. Pair (one pasted command from openvibe.bot)```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver adeept++curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver adeept```Network pairing, if openvibe.bot offers the Network form:```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver adeept++curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver adeept```Then check the written config (`cat /etc/openvibe-node/config.json`): `plugins` names `adeept_adr036` with backend@@@ -35,13 +35,13 @@ Cozmo is an access point (`Cozmo_XXXXXX`, robot at `172.31.1.1`) and has no inte## 2. Pair (one pasted command from openvibe.bot)```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver cozmo++curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver cozmo```Network pairing, if openvibe.bot offers the Network form:```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver cozmo++curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver cozmo```Then check the written config (`cat /etc/openvibe-node/config.json`): `device_kind` is `bridge`, `plugins` names@@@ -71,7 +71,7 @@ The driver should send telemetry with `battery` (`{"percent": 0..100}` or `{"volThe Node runs a plugin named `looi` as `python -m openvibe_looi`, so the driver is a Python package with that module,installed into the Python the Node uses.--**Linux or macOS bridge.** `curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX++**Linux or macOS bridge.** `curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX--driver looi` installs and pairs the Node as a bridge with video off. Then install the driver into the Node'senvironment (`sudo /var/lib/openvibe-node/venv/bin/pip install <the driver>`) and restart the Node's service. Untilthe driver is installed the panel shows the plugin's fault and the robot never moves.@@@ -8,9 +8,12 @@ ports, works behind any home router), and a local kill switch stops everything iOn the robot's computer, with nothing set up on openvibe.bot first:```sh--curl -fsSL https://openvibe.bot/install | sh++curl -fsSL https://node.openvibe.network/install | sh```++The same installer is also at <https://openvibe.bot/install>, which keeps working; `node.openvibe.network` is the++Node's own address and has a page that says what it is and how to install it.++On a Raspberry Pi it turns on I2C and SPI (now and after a reboot, through `raspi-config`), installs what is missing of`i2c-tools`, the camera tools (`rpicam-apps`), `python3-venv`, `python3-lgpio` and `qrencode`, and looks at the I2C bus:a PCA9685 at `0x5f` is the Adeept ADR036 4WD (driver `adeept`), a rosbridge on port 9090 a ROS 2 robot (`ros2`). It@@@ -45,7 +48,7 @@ write Raspberry Pi OS Lite (64-bit) with Raspberry Pi Imager, copy the page's `ucard's `bootfs` drive, and switch the robot on. On first boot the Pi joins your Wi-Fi, turns on SSH, and runs```sh--curl -fsSL https://openvibe.bot/install | sh -s -- --setup osk_…++curl -fsSL https://node.openvibe.network/install | sh -s -- --setup osk_…```with the card's setup key (`OPENVIBE_SETUP_KEY` works too). openvibe.bot approves that claim at once for the person who@@@ -60,7 +63,7 @@ Its output is in `journalctl -u openvibe-setup` on the Pi.2. On the device, run that command, adding `--driver` for your robot:```sh-- curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X --code ABCD-1234 --driver adeept++ curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X --code ABCD-1234 --driver adeept```The shape is `--robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]`. `--robot` is the robot's@@@ -86,7 +89,7 @@ has the details.- **Network pairing**: `--network <URL> --pairing pair_… --code CODE`, e.g.```sh-- curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_01J8Z4M2Q0R7T9YV3K6N8P1W2Y --code ABCD-1234 --driver adeept++ curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_01J8Z4M2Q0R7T9YV3K6N8P1W2Y --code ABCD-1234 --driver adeept```The Node redeems the code on OpenVibe.Network (`POST <network>/api/v1/node-pairing`) and stores the machine's node@@@ -12,7 +12,7 @@ commands, which `platform.runtime-class@1` also lets `linux` describe.## A machine that runs your coding tasks (`--worker`)The simplest way to turn the worker on is the installer's `--worker` (Linux), which openvibe.bot/machines prints with a--one-time code: `curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --worker`. It:++one-time code: `curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --worker`. It:- pairs the machine for its owner's own jobs (a Network pairing with ref `worker:<owner>`; OpenVibe.Bot reports it tothe network as a `user-owned` offer naming the owner, OpenVibe.Run places only that person's jobs on it, and Bot@@@ -1,11 +1,13 @@#!/bin/sh# OpenVibe Node installer.#--# curl -fsSL https://openvibe.bot/install | sh--# curl -fsSL https://openvibe.bot/install | sh -s -- --robot <rob_…> --code <CODE> [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]--# curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> [--driver …]--# curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> --worker--# curl -fsSL https://openvibe.bot/install | sh -s -- --setup <osk_…>++# curl -fsSL https://node.openvibe.network/install | sh++# curl -fsSL https://node.openvibe.network/install | sh -s -- --robot <rob_…> --code <CODE> [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]++# curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> [--driver …]++# curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> --worker++# curl -fsSL https://node.openvibe.network/install | sh -s -- --setup <osk_…>++#++# (the same script is also at https://openvibe.bot/install, which keeps working)## Detects the OS and CPU, downloads the openvibe-node binary and the plugin bundle (checking their SHA-256), creates# a Python virtual environment for the plugins, disables the Adeept kit's stock control server if it finds it,@@@ -113,9 +115,9 @@ usage() {echo " [--computer observe|ask|trusted|full] [--desk-host [--shared]] [--ai] [--ai-endpoint URL]"echo " [--no-service] [--no-claim] [--setup osk_…]"echo " [--local DIR] [--version TAG]"-- echo " curl -fsSL https://openvibe.bot/install | sh (finds the kit, then shows a code to approve on openvibe.bot/link)"-- echo " curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept"-- echo " curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code ABCD-1234"++ echo " curl -fsSL https://node.openvibe.network/install | sh (finds the kit, then shows a code to approve on openvibe.bot/link)"++ echo " curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept"++ echo " curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code ABCD-1234"}say() { printf '%s\n' "openvibe-node: $*"; }die() { printf '%s\n' "openvibe-node: error: $*" >&2; exit 1; }@@@ -37,7 +37,7 @@ fault.1. On openvibe.bot, add a robot with the **ROS 2 robot** model (`ros2.diffdrive`; `ros2.holonomic` for mecanum oromni wheels) and keep its pairing code.2. On the computer that will run the Node:-- `curl -fsSL https://openvibe.bot/install | sh -s -- --robot <rob_…> --code <CODE> --driver ros2`++ `curl -fsSL https://node.openvibe.network/install | sh -s -- --robot <rob_…> --code <CODE> --driver ros2`3. Edit `config.json` (the installer prints where it is) if your topics differ from the defaults, then restart theNode's service:
@@ -7,9 +7,12 @@ agents, at the level you set on the machine) can use the device. It connects out
@@ -7,9 +7,12 @@ agents, at the level you set on the machine) can use the device. It connects out
On a robot's Raspberry Pi (or other Linux computer), the one command:
On a robot's Raspberry Pi (or other Linux computer), the one command:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh
+curl -fsSL https://node.openvibe.network/install | sh
```
```
+The same installer is also at <https://openvibe.bot/install>, which keeps working; `node.openvibe.network` is the
+Node's own address, where it also has a page that says what it is and how to install it.
+
It turns on I2C and SPI, installs the camera tools, finds the kit (an Adeept ADR036 4WD, a ROS 2 robot), shows a code
It turns on I2C and SPI, installs the camera tools, finds the kit (an Adeept ADR036 4WD, a ROS 2 robot), shows a code
to approve at openvibe.bot/link, and pairs: the robot is made, drivable on its panel and, if you chose it, live on your
to approve at openvibe.bot/link, and pairs: the robot is made, drivable on its panel and, if you chose it, live on your
OpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspberry-pi-and-other-linux-robots)).
OpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspberry-pi-and-other-linux-robots)).
@@ -17,7 +20,7 @@ OpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspber
@@ -17,7 +20,7 @@ OpenVibe.Live channel ([docs/install.md](docs/install.md#the-one-command-raspber
With a robot already added on openvibe.bot:
With a robot already added on openvibe.bot:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept
+curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept
```
```
openvibe.bot shows this command with the robot's id and a fresh code. `--driver` is `adeept`, `adeept-mecanum`, `cozmo`, `ros2`,
openvibe.bot shows this command with the robot's id and a fresh code. `--driver` is `adeept`, `adeept-mecanum`, `cozmo`, `ros2`,
@@ -39,7 +39,7 @@ a Cozmo-based robot).
@@ -39,7 +39,7 @@ a Cozmo-based robot).
robot and reaches it over the robot's own link (Cozmo first through PyCozmo; later Vector, Tello, Sphero, LEGO); a
robot and reaches it over the robot's own link (Cozmo first through PyCozmo; later Vector, Tello, Sphero, LEGO); a
bridge joins the robot's network on one interface and reaches OpenVibe on another. **Server-side**: Bot itself
bridge joins the robot's network on one interface and reaches OpenVibe on another. **Server-side**: Bot itself
connects to ONVIF/RTSP cameras (credentials by secret reference, never in the profile). The agent is a Python 3 package
connects to ONVIF/RTSP cameras (credentials by secret reference, never in the profile). The agent is a Python 3 package
- (the Pi, PyCozmo and the kit libraries are Python), installed by `curl -fsSL https://openvibe.bot/install | sh` into a
+ (the Pi, PyCozmo and the kit libraries are Python), installed by `curl -fsSL https://node.openvibe.network/install | sh` into a
virtual environment with a systemd unit and the hardware watchdog.
virtual environment with a systemd unit and the hardware watchdog.
4. **Control runs over one outbound WebSocket per device; video over WHIP.** The device dials Bot
4. **Control runs over one outbound WebSocket per device; video over WHIP.** The device dials Bot
(`wss://openvibe.bot/device`), authenticates with its credential, and keeps one connection for commands, telemetry and
(`wss://openvibe.bot/device`), authenticates with its credential, and keeps one connection for commands, telemetry and
@@ -116,7 +116,7 @@ pattern (dry-run), an H.264 byte stream from a child process (`rpicam-vid`, `ffm
@@ -116,7 +116,7 @@ pattern (dry-run), an H.264 byte stream from a child process (`rpicam-vid`, `ffm
## install.sh and CI
## install.sh and CI
-`install/install.sh` (`curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|none]`, e.g. `--code ABCD-1234 --driver adeept`):
+`install/install.sh` (`curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|none]`, e.g. `--code ABCD-1234 --driver adeept`):
detect OS/arch, download the release binary and the plugin bundle, create a Python virtual environment for plugins,
detect OS/arch, download the release binary and the plugin bundle, create a Python virtual environment for plugins,
install the service, pair with the code.
install the service, pair with the code.
CI: `go vet`, `go test ./...` (race detector), cross-compile every target, Python plugin tests, and a release workflow on
CI: `go vet`, `go test ./...` (race detector), cross-compile every target, Python plugin tests, and a release workflow on
@@ -23,7 +23,7 @@ The installer does it with `--ai` (Node v0.28.0), added to the command openvibe.
@@ -23,7 +23,7 @@ The installer does it with `--ai` (Node v0.28.0), added to the command openvibe.
install you already have. It says which model server answers, or how to get one:
install you already have. It says which model server answers, or how to get one:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --ai
+curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --ai
```
```
`--ai-endpoint http://127.0.0.1:8090` names a server on another port (it implies `--ai`). `--ai` works with `--worker`,
`--ai-endpoint http://127.0.0.1:8090` names a server on another port (it implies `--ai`). `--ai` works with `--worker`,
@@ -11,7 +11,7 @@ itself**: nothing in the cloud can raise that level.
@@ -11,7 +11,7 @@ itself**: nothing in the cloud can raise that level.
On Linux, from your own account (the installer uses sudo itself):
On Linux, from your own account (the installer uses sudo itself):
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing pair_… --code ABCD-1234 --computer ask
+curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing pair_… --code ABCD-1234 --computer ask
```
```
`--computer LEVEL` runs the Node's service as **your** account (never root, never the `openvibe-node` system account)
`--computer LEVEL` runs the Node's service as **your** account (never root, never the `openvibe-node` system account)
@@ -264,7 +264,7 @@ task's desk from the profile `agent`.
@@ -264,7 +264,7 @@ task's desk from the profile `agent`.
An old laptop, a mini PC or a spare workstation can host desks for your agents: no screen, keyboard or login needed.
An old laptop, a mini PC or a spare workstation can host desks for your agents: no screen, keyboard or login needed.
```
```
-curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --desk-host
+curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --desk-host
```
```
- **Its own account.** The Node runs as `openvibe-desk` (home `/var/lib/openvibe-desk`), never as a person. An agent
- **Its own account.** The Node runs as `openvibe-desk` (home `/var/lib/openvibe-desk`), never as a person. An agent
there never reaches anyone's own files, browser or sessions. The computer plugin runs at `trusted` for that account's
there never reaches anyone's own files, browser or sessions. The computer plugin runs at `trusted` for that account's
@@ -287,7 +287,7 @@ A desk host OpenVibe or a community member runs for **other people's** agents (t
@@ -287,7 +287,7 @@ A desk host OpenVibe or a community member runs for **other people's** agents (t
must keep each person's desk away from the machine and from every other desk. Such a host runs browser desks only, and
must keep each person's desk away from the machine and from every other desk. Such a host runs browser desks only, and
each desk's browser runs in the job worker's sandbox (docs/worker.md):
each desk's browser runs in the job worker's sandbox (docs/worker.md):
```
```
-curl -fsSL https://openvibe.bot/install | sudo sh -s -- --network … --pairing pair_… --code … --desk-host --shared
+curl -fsSL https://node.openvibe.network/install | sudo sh -s -- --network … --pairing pair_… --code … --desk-host --shared
```
```
- **Each desk sandboxed.** The plugin starts a desk's browser as `openvibe-node desk-sandbox -- <browser> …`: its own
- **Each desk sandboxed.** The plugin starts a desk's browser as `openvibe-node desk-sandbox -- <browser> …`: its own
user, mount, network, PID and IPC namespaces, as the unprivileged `openvibe-job` (`worker.run_as`), in a cgroup of its
user, mount, network, PID and IPC namespaces, as the unprivileged `openvibe-job` (`worker.run_as`), in a cgroup of its
@@ -7,7 +7,7 @@ replaces it, and the installer disables the kit's own autostart (`docs/install.m
@@ -7,7 +7,7 @@ replaces it, and the installer disables the kit's own autostart (`docs/install.m
## 0. The one command
## 0. The one command
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh
+curl -fsSL https://node.openvibe.network/install | sh
```
```
On the Pi, with the kit's board on it: it turns on I2C and SPI, installs the camera tools and the plugin's packages,
On the Pi, with the kit's board on it: it turns on I2C and SPI, installs the camera tools and the plugin's packages,
@@ -30,13 +30,13 @@ there (pick **Adeept ADR036 mecanum** on that page for the mecanum chassis). Sec
@@ -30,13 +30,13 @@ there (pick **Adeept ADR036 mecanum** on that page for the mecanum chassis). Sec
## 2. Pair (one pasted command from openvibe.bot)
## 2. Pair (one pasted command from openvibe.bot)
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver adeept
+curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver adeept
```
```
Network pairing, if openvibe.bot offers the Network form:
Network pairing, if openvibe.bot offers the Network form:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver adeept
+curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver adeept
```
```
Then check the written config (`cat /etc/openvibe-node/config.json`): `plugins` names `adeept_adr036` with backend
Then check the written config (`cat /etc/openvibe-node/config.json`): `plugins` names `adeept_adr036` with backend
@@ -35,13 +35,13 @@ Cozmo is an access point (`Cozmo_XXXXXX`, robot at `172.31.1.1`) and has no inte
@@ -35,13 +35,13 @@ Cozmo is an access point (`Cozmo_XXXXXX`, robot at `172.31.1.1`) and has no inte
## 2. Pair (one pasted command from openvibe.bot)
## 2. Pair (one pasted command from openvibe.bot)
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver cozmo
+curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX --driver cozmo
```
```
Network pairing, if openvibe.bot offers the Network form:
Network pairing, if openvibe.bot offers the Network form:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver cozmo
+curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code XXXX-XXXX --driver cozmo
```
```
Then check the written config (`cat /etc/openvibe-node/config.json`): `device_kind` is `bridge`, `plugins` names
Then check the written config (`cat /etc/openvibe-node/config.json`): `device_kind` is `bridge`, `plugins` names
@@ -71,7 +71,7 @@ The driver should send telemetry with `battery` (`{"percent": 0..100}` or `{"vol
@@ -71,7 +71,7 @@ The driver should send telemetry with `battery` (`{"percent": 0..100}` or `{"vol
The Node runs a plugin named `looi` as `python -m openvibe_looi`, so the driver is a Python package with that module,
The Node runs a plugin named `looi` as `python -m openvibe_looi`, so the driver is a Python package with that module,
installed into the Python the Node uses.
installed into the Python the Node uses.
-**Linux or macOS bridge.** `curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code XXXX-XXXX
+**Linux or macOS bridge.** `curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code XXXX-XXXX
--driver looi` installs and pairs the Node as a bridge with video off. Then install the driver into the Node's
--driver looi` installs and pairs the Node as a bridge with video off. Then install the driver into the Node's
environment (`sudo /var/lib/openvibe-node/venv/bin/pip install <the driver>`) and restart the Node's service. Until
environment (`sudo /var/lib/openvibe-node/venv/bin/pip install <the driver>`) and restart the Node's service. Until
the driver is installed the panel shows the plugin's fault and the robot never moves.
the driver is installed the panel shows the plugin's fault and the robot never moves.
@@ -8,9 +8,12 @@ ports, works behind any home router), and a local kill switch stops everything i
@@ -8,9 +8,12 @@ ports, works behind any home router), and a local kill switch stops everything i
On the robot's computer, with nothing set up on openvibe.bot first:
On the robot's computer, with nothing set up on openvibe.bot first:
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh
+curl -fsSL https://node.openvibe.network/install | sh
```
```
+The same installer is also at <https://openvibe.bot/install>, which keeps working; `node.openvibe.network` is the
+Node's own address and has a page that says what it is and how to install it.
+
On a Raspberry Pi it turns on I2C and SPI (now and after a reboot, through `raspi-config`), installs what is missing of
On a Raspberry Pi it turns on I2C and SPI (now and after a reboot, through `raspi-config`), installs what is missing of
`i2c-tools`, the camera tools (`rpicam-apps`), `python3-venv`, `python3-lgpio` and `qrencode`, and looks at the I2C bus:
`i2c-tools`, the camera tools (`rpicam-apps`), `python3-venv`, `python3-lgpio` and `qrencode`, and looks at the I2C bus:
a PCA9685 at `0x5f` is the Adeept ADR036 4WD (driver `adeept`), a rosbridge on port 9090 a ROS 2 robot (`ros2`). It
a PCA9685 at `0x5f` is the Adeept ADR036 4WD (driver `adeept`), a rosbridge on port 9090 a ROS 2 robot (`ros2`). It
@@ -45,7 +48,7 @@ write Raspberry Pi OS Lite (64-bit) with Raspberry Pi Imager, copy the page's `u
@@ -45,7 +48,7 @@ write Raspberry Pi OS Lite (64-bit) with Raspberry Pi Imager, copy the page's `u
card's `bootfs` drive, and switch the robot on. On first boot the Pi joins your Wi-Fi, turns on SSH, and runs
card's `bootfs` drive, and switch the robot on. On first boot the Pi joins your Wi-Fi, turns on SSH, and runs
```sh
```sh
-curl -fsSL https://openvibe.bot/install | sh -s -- --setup osk_…
+curl -fsSL https://node.openvibe.network/install | sh -s -- --setup osk_…
```
```
with the card's setup key (`OPENVIBE_SETUP_KEY` works too). openvibe.bot approves that claim at once for the person who
with the card's setup key (`OPENVIBE_SETUP_KEY` works too). openvibe.bot approves that claim at once for the person who
@@ -60,7 +63,7 @@ Its output is in `journalctl -u openvibe-setup` on the Pi.
@@ -60,7 +63,7 @@ Its output is in `journalctl -u openvibe-setup` on the Pi.
2. On the device, run that command, adding `--driver` for your robot:
2. On the device, run that command, adding `--driver` for your robot:
```sh
```sh
- curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X --code ABCD-1234 --driver adeept
+ curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X --code ABCD-1234 --driver adeept
```
```
The shape is `--robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]`. `--robot` is the robot's
The shape is `--robot rob_… --code CODE [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]`. `--robot` is the robot's
@@ -86,7 +89,7 @@ has the details.
@@ -86,7 +89,7 @@ has the details.
- **Network pairing**: `--network <URL> --pairing pair_… --code CODE`, e.g.
- **Network pairing**: `--network <URL> --pairing pair_… --code CODE`, e.g.
```sh
```sh
- curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_01J8Z4M2Q0R7T9YV3K6N8P1W2Y --code ABCD-1234 --driver adeept
+ curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_01J8Z4M2Q0R7T9YV3K6N8P1W2Y --code ABCD-1234 --driver adeept
```
```
The Node redeems the code on OpenVibe.Network (`POST <network>/api/v1/node-pairing`) and stores the machine's node
The Node redeems the code on OpenVibe.Network (`POST <network>/api/v1/node-pairing`) and stores the machine's node
@@ -12,7 +12,7 @@ commands, which `platform.runtime-class@1` also lets `linux` describe.
@@ -12,7 +12,7 @@ commands, which `platform.runtime-class@1` also lets `linux` describe.
## A machine that runs your coding tasks (`--worker`)
## A machine that runs your coding tasks (`--worker`)
The simplest way to turn the worker on is the installer's `--worker` (Linux), which openvibe.bot/machines prints with a
The simplest way to turn the worker on is the installer's `--worker` (Linux), which openvibe.bot/machines prints with a
-one-time code: `curl -fsSL https://openvibe.bot/install | sh -s -- --network … --pairing pair_… --code … --worker`. It:
+one-time code: `curl -fsSL https://node.openvibe.network/install | sh -s -- --network … --pairing pair_… --code … --worker`. It:
- pairs the machine for its owner's own jobs (a Network pairing with ref `worker:<owner>`; OpenVibe.Bot reports it to
- pairs the machine for its owner's own jobs (a Network pairing with ref `worker:<owner>`; OpenVibe.Bot reports it to
the network as a `user-owned` offer naming the owner, OpenVibe.Run places only that person's jobs on it, and Bot
the network as a `user-owned` offer naming the owner, OpenVibe.Run places only that person's jobs on it, and Bot
@@ -1,11 +1,13 @@
@@ -1,11 +1,13 @@
#!/bin/sh
#!/bin/sh
# OpenVibe Node installer.
# OpenVibe Node installer.
#
#
-# curl -fsSL https://openvibe.bot/install | sh
-# curl -fsSL https://openvibe.bot/install | sh -s -- --robot <rob_…> --code <CODE> [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]
-# curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> [--driver …]
-# curl -fsSL https://openvibe.bot/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> --worker
-# curl -fsSL https://openvibe.bot/install | sh -s -- --setup <osk_…>
+# curl -fsSL https://node.openvibe.network/install | sh
+# curl -fsSL https://node.openvibe.network/install | sh -s -- --robot <rob_…> --code <CODE> [--driver adeept|adeept-mecanum|cozmo|looi|ros2|ros2-holonomic|none]
+# curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> [--driver …]
+# curl -fsSL https://node.openvibe.network/install | sh -s -- --network <URL> --pairing <pair_…> --code <CODE> --worker
+# curl -fsSL https://node.openvibe.network/install | sh -s -- --setup <osk_…>
+#
+# (the same script is also at https://openvibe.bot/install, which keeps working)
#
#
# Detects the OS and CPU, downloads the openvibe-node binary and the plugin bundle (checking their SHA-256), creates
# Detects the OS and CPU, downloads the openvibe-node binary and the plugin bundle (checking their SHA-256), creates
# a Python virtual environment for the plugins, disables the Adeept kit's stock control server if it finds it,
# a Python virtual environment for the plugins, disables the Adeept kit's stock control server if it finds it,
@@ -113,9 +115,9 @@ usage() {
@@ -113,9 +115,9 @@ usage() {
echo " [--computer observe|ask|trusted|full] [--desk-host [--shared]] [--ai] [--ai-endpoint URL]"
echo " [--computer observe|ask|trusted|full] [--desk-host [--shared]] [--ai] [--ai-endpoint URL]"
echo " [--no-service] [--no-claim] [--setup osk_…]"
echo " [--no-service] [--no-claim] [--setup osk_…]"
echo " [--local DIR] [--version TAG]"
echo " [--local DIR] [--version TAG]"
- echo " curl -fsSL https://openvibe.bot/install | sh (finds the kit, then shows a code to approve on openvibe.bot/link)"
- echo " curl -fsSL https://openvibe.bot/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept"
- echo " curl -fsSL https://openvibe.bot/install | sh -s -- --network https://openvibe.network --pairing pair_… --code ABCD-1234"
+ echo " curl -fsSL https://node.openvibe.network/install | sh (finds the kit, then shows a code to approve on openvibe.bot/link)"
+ echo " curl -fsSL https://node.openvibe.network/install | sh -s -- --robot rob_… --code ABCD-1234 --driver adeept"
+ echo " curl -fsSL https://node.openvibe.network/install | sh -s -- --network https://openvibe.network --pairing pair_… --code ABCD-1234"
}
}
say() { printf '%s\n' "openvibe-node: $*"; }
say() { printf '%s\n' "openvibe-node: $*"; }
die() { printf '%s\n' "openvibe-node: error: $*" >&2; exit 1; }
die() { printf '%s\n' "openvibe-node: error: $*" >&2; exit 1; }
@@ -37,7 +37,7 @@ fault.
@@ -37,7 +37,7 @@ fault.
1. On openvibe.bot, add a robot with the **ROS 2 robot** model (`ros2.diffdrive`; `ros2.holonomic` for mecanum or
1. On openvibe.bot, add a robot with the **ROS 2 robot** model (`ros2.diffdrive`; `ros2.holonomic` for mecanum or
omni wheels) and keep its pairing code.
omni wheels) and keep its pairing code.
2. On the computer that will run the Node:
2. On the computer that will run the Node:
- `curl -fsSL https://openvibe.bot/install | sh -s -- --robot <rob_…> --code <CODE> --driver ros2`
+ `curl -fsSL https://node.openvibe.network/install | sh -s -- --robot <rob_…> --code <CODE> --driver ros2`
3. Edit `config.json` (the installer prints where it is) if your topics differ from the defaults, then restart the
3. Edit `config.json` (the installer prints where it is) if your topics differ from the defaults, then restart the
Node's service:
Node's service: