openvibers/openvibe.link Commits

The Node's own address: node.openvibe.network/install (#112)

OP OpenVibers committed 7 days ago · c16b1022d7 · 12 files, +36 −28

Changes

ddiff --git a/README.md b/README.md
iindex 9f5ba50..61852fe 100644
---- a/README.md
++++ b/README.md
@@@ -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:
```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
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)).
@@@ -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:
```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`,
ddiff --git a/docs/ADR-043-bot-devices-and-control.md b/docs/ADR-043-bot-devices-and-control.md
iindex fab1033..f93e5b6 100644
---- a/docs/ADR-043-bot-devices-and-control.md
++++ b/docs/ADR-043-bot-devices-and-control.md
@@@ -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
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
-- (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.
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
ddiff --git a/docs/HANDOFF.md b/docs/HANDOFF.md
iindex 0c2b53c..ce9fee4 100644
---- a/docs/HANDOFF.md
++++ b/docs/HANDOFF.md
@@@ -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
ddiff --git a/docs/ai.md b/docs/ai.md
iindex 20a6a4f..2ac0a28 100644
---- a/docs/ai.md
++++ b/docs/ai.md
@@@ -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`,
ddiff --git a/docs/computer.md b/docs/computer.md
iindex 74930b8..7d12c6e 100644
---- a/docs/computer.md
++++ b/docs/computer.md
@@@ -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 agent
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
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):
```
--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
user, mount, network, PID and IPC namespaces, as the unprivileged `openvibe-job` (`worker.run_as`), in a cgroup of its
ddiff --git a/docs/hardware-adeept.md b/docs/hardware-adeept.md
iindex df625a5..b16505e 100644
---- a/docs/hardware-adeept.md
++++ b/docs/hardware-adeept.md
@@@ -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
ddiff --git a/docs/hardware-cozmo.md b/docs/hardware-cozmo.md
iindex c495bfb..d08d953 100644
---- a/docs/hardware-cozmo.md
++++ b/docs/hardware-cozmo.md
@@@ -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
ddiff --git a/docs/hardware-looi.md b/docs/hardware-looi.md
iindex 159a4fd..f4f6a9f 100644
---- a/docs/hardware-looi.md
++++ b/docs/hardware-looi.md
@@@ -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,
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
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.
ddiff --git a/docs/install.md b/docs/install.md
iindex 2793a7e..c730d61 100644
---- a/docs/install.md
++++ b/docs/install.md
@@@ -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:
```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 `u
card'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
ddiff --git a/docs/worker.md b/docs/worker.md
iindex 5598680..0d131a2 100644
---- a/docs/worker.md
++++ b/docs/worker.md
@@@ -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 to
the network as a `user-owned` offer naming the owner, OpenVibe.Run places only that person's jobs on it, and Bot
ddiff --git a/install/install.sh b/install/install.sh
iindex 2563034..de87fa7 100755
---- a/install/install.sh
++++ b/install/install.sh
@@@ -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; }
ddiff --git a/plugins/ros2/README.md b/plugins/ros2/README.md
iindex 813cbaa..9bb22f8 100644
---- a/plugins/ros2/README.md
++++ b/plugins/ros2/README.md
@@@ -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
omni 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 the
Node's service: