Installation
This page describes the published Librux install flow. It focuses on getting the runtime and SDK onto a host. After installation, use Operate for service management, time sync, resource control, security, and validation.
Supported Platforms
Librux runtime installation is Linux-only.
Published runtime bundles currently target.
- Linux
x86_64 - Linux
aarch64
The installed runtime uses Linux facilities such as systemd services, cgroup resource placement, Unix-domain local control channels, SocketCAN, device-node policy, and Linux time-sync tooling. macOS and Windows are useful for reading docs, preparing source trees, or editing SDK/tutorial code, but they are not runtime deployment targets.
The documented commands assume Ubuntu / Debian. Other Linux distributions can work when equivalent packages and service facilities are available, but the published install path is validated first on Ubuntu / Debian.
License Model
The runtime binary payload is not Apache-2.0. Runtime installation requires manual acceptance of the Librux runtime license/EULA during the installer review step. Automatic license acceptance is intentionally not supported.
Public SDK source, tutorials, docs, and public spec payloads are distributed under the Librux SDK open-source license group. Bundled third-party dependencies and declared SDK environment dependencies are disclosed under Open Source Notices.
After installation, license and notice documents are stored under
<prefix>/licenses (plural). This directory contains the files listed by the
release manifest, typically including.
- the Librux download and installation data notice
- the Librux runtime license/EULA for runtime binaries and services
- the Apache-2.0 license for public SDK/source payloads
- Open Source Notices covering bundled third-party dependencies and declared SDK environment dependencies
- third-party full license files, such as the yaml-cpp MIT license when the bundled Linux C++ SDK artifact is installed
The presence of multiple files in <prefix>/licenses does not mean that the
entire installed tree uses one license. It records the license and notice groups
for the runtime, distribution logging notice, installed SDK artifacts, and
open-source notices.
Prerequisites
On a minimal Ubuntu / Debian host.
sudo apt update
sudo apt install -y ca-certificates curl wget
Install python3-vcstool only when you plan to fetch the full matching source
workspace through the entry repo's librux.repos manifest.
sudo apt install -y python3-vcstool
The install snippets use curl by default. Equivalent wget -qO- ... | sh
forms are also supported. The bootstrap script can request sudo when the
selected prefix or service registration needs elevated privileges, so the
recommended default command runs the script as the current user.
Current Release Install Command
Use the install command from the published entry repository release page. For the current release candidate, use this command.
curl -fsSL http://git.librerobotics.org/justin.kang/librux/releases/download/v1.0.0rc11/install.sh | sh
Published release docs and entry-repository READMEs are stamped with the exact release asset URL during the release process. If you are preparing a different release channel, use that channel's entry-repository release page instead of copying this RC URL.
For repeated commands, set.
INSTALL_URL=http://git.librerobotics.org/justin.kang/librux/releases/download/v1.0.0rc11/install.sh
Download Endpoint
The public install script is small. It downloads the platform-matching installer binary and the installer then resolves the runtime manifest through the Librux distribution endpoint.
In production, runtime artifacts are served through the distribution API rather than a public object bucket. The API keeps the artifact bucket private, issues short-lived download URLs for the files referenced by the release manifest, and records download metadata such as install session ID, client IP, CDN request metadata, user agent, release version, channel, platform, architecture, artifact name, response status, byte count, and failure reason.
This data is used for artifact delivery, private artifact access, installation
diagnostics, release adoption analysis, abuse investigation, and distribution
reliability/security. The distribution endpoint does not collect application
source code, subsystem payloads, runtime messages, robot data, host config
files, shell history, or local files from the installing host. The complete
notice is installed as DOWNLOAD-NOTICE-Librux.txt under <prefix>/licenses
and is included in the public source tree as DOWNLOAD_NOTICE.md.
The current public install flow does not require a user install token. The
installer still sends a generated LIBRUX_INSTALL_ID so one installation
attempt can be correlated across bootstrap, manifest resolve, and artifact
download events.
Official release scripts use the embedded distribution endpoint by default.
LIBRUX_RELEASE_BASE_URL is only for development scripts generated in direct
asset mode. For production installs, use the published install.sh without
overriding distribution variables.
Interactive Install
Default install.
curl -fsSL "$INSTALL_URL" | sh
Default prefix.
/opt/librux
Choose a development user prefix.
curl -fsSL "$INSTALL_URL" | sh -s -- --prefix ~/.local/librux
When a TTY is available, the installer opens a terminal UI for license review, prefix selection, PATH integration, and Linux system-service setup. On Linux hosts with systemd, the interactive default is to install and enable the Librux system services unless you choose to skip them.
Line-based prompt mode.
curl -fsSL "$INSTALL_URL" | sh -s -- --no-tui
Manual License Review
Runtime license acceptance is manual only. Official runtime manifests require the installer to show the required license document and record consent through the TUI or line-based prompt. The installer intentionally rejects automatic license acceptance flags.
Default manual flow.
curl -fsSL "$INSTALL_URL" | sh
Line-based manual prompt instead of the full-screen TUI.
curl -fsSL "$INSTALL_URL" | sh -s -- --no-tui
Product prefix and system services.
curl -fsSL "$INSTALL_URL" | sh -s -- \
--prefix /opt/librux \
--system-services install
Useful flags.
--prefix <path>
--path-mode none|print|shell-rc
--shell-rc <path>
--system-services install|skip
--system-service-config <path>
--no-tui
If the installer cannot prompt for sudo in a headless session, complete the
manual license review first and register services from an interactive terminal.
curl -fsSL "$INSTALL_URL" | sh -s -- \
--prefix /opt/librux \
--system-services skip
sudo /opt/librux/bin/librux system install --prefix /opt/librux
Use a service-readable prefix such as /opt/librux for product deployments.
User-home prefixes remain useful for development.
Installed Layout
The installer writes.
- runtime payload under
<prefix>/runtime - executables under
<prefix>/runtime/bin - runtime libraries under
<prefix>/runtime/lib - Web Console assets under
<prefix>/runtime/frontend - public spec files under
<prefix>/runtime/spec - runtime support tools under
<prefix>/runtime/tools - C++ SDK under
<prefix>/sdk/cpp - Python SDK wheel under
<prefix>/sdk/python - guided tutorial source under
<prefix>/tutorials - benchmark runner source under
<prefix>/benchmarks - license and notice documents under
<prefix>/licenses - service unit sources under
<prefix>/systemd - runtime state, logs, and control service home under
<prefix>/var - shell environment helper under
<prefix>/env.sh - uninstaller under
<prefix>/bin/librux-uninstall
Top-level entry points.
<prefix>/bin-><prefix>/runtime/bin<prefix>/spec-><prefix>/runtime/spec<prefix>/config.yaml-><prefix>/runtime/config.yaml
Source the environment helper before using installed SDK/runtime commands, tutorials, or benchmarks.
. <prefix>/env.sh
This sets LIBRUX_PREFIX, updates PATH, and configures spec/runtime library
paths for the installed SDK.
Linux Services
On Linux, the installer can register.
librux-control.servicelibrux-resourced.servicelibrux-timesyncd.service
The control service runs without root privileges. Resource and time-sync companions keep the narrow root authority needed for resource brokering and host-level clock management.
The system service installer creates a librux resource group by default. The
control service and managed SDK package processes use that group for runtime IPC
such as timed-exchange Unix sockets. Managed package launches preserve the
runtime IPC group as a supplementary group, so application code does not need to
patch socket ownership or permissions.
Service unit files live under <prefix>/systemd. The installer links them from
/etc/systemd/system so uninstall can remove the links and then remove the
single install prefix. Runtime sockets use /run/librux, owned by root:librux
with mode 2770, and are recreated when services start. The SDK control plane
uses /run/librux/control.sock by default; managed launch paths pass the
resolved path to application processes as LIBRUX_CONTROL_SOCKET.
If service setup was skipped.
sudo <prefix>/bin/librux system install --prefix <prefix>
For a dedicated config.
sudo <prefix>/bin/librux system install \
--prefix <prefix> \
--config /path/to/config.yaml
For details, see Time Sync Operations and Resource Control.
Uninstall
To remove a product install.
sudo <prefix>/bin/librux-uninstall --prefix <prefix>
The uninstaller stops and disables Librux services, removes Librux systemd unit
links, clears /run/librux, and removes the selected install prefix. It keeps
the librux system user and group by default; pass --remove-users only when
those accounts are no longer used by any Librux install.
Verification
. <prefix>/env.sh
librux --help
lbx --help
librux status
librux config --help
librux package --help
librux launch --help
librux resource inventory
librux timesync doctor --json
If services were installed.
sudo systemctl status librux-control.service --no-pager
sudo systemctl status librux-resourced.service --no-pager
sudo systemctl status librux-timesyncd.service --no-pager
Interactive Linux installs default to system-service setup when systemd is
available. Noninteractive plans default to skipping services unless
--system-services install is passed.
Installed SDK Payload
The installer places SDK payloads under <prefix>/sdk, but it does not install
the Python wheel into your active virtual environment. It also installs the
guided tutorial source under <prefix>/tutorials and benchmark runners under
<prefix>/benchmarks, so normal tutorial and performance paths do not require a
separate SDK source checkout.
Linux C++ SDK release payloads bundle yaml-cpp internally, so installed-user C++
tutorial builds do not depend on a distro-specific libyaml-cpp.so.* at runtime.
License Files
The installer keeps release-manifest license and notice documents under
<prefix>/licenses. Use this directory as the installed license record for the
runtime EULA, public SDK/source notices, bundled third-party licenses, and the
download/install data notice.
Next Step
Continue with Quickstart. Use Operate for host operation and Develop for SDK/tutorial workflows.