# Try Libertas

Three pieces: a **Hub** runs Apps, **Studio** for VS Code builds and deploys
them, and the **Android and iOS clients** set up the Hub and use its tasks.

## 1. Quick start: Libertas Cloud Hub

<https://hub.smartonlabs.com>

## 2. Run your own Hub

Your own Hub runs Ubuntu 26.04, x86-64 or ARM64.

### Home Hub in Incus (Linux or Mac)

Runs on a computer at home, so phones on your Wi-Fi find it. First get Incus:

- **Linux:** `sudo apt-get install incus && sudo incus admin init --auto`.
  The LAN interface is the one `ip route show default` names, such as `eno1`.
- **Mac:** with [Homebrew](https://brew.sh), run
  `brew install colima incus` and
  `colima start --runtime incus --network-mode bridged --network-interface en0`
  (`en0` is usually Wi-Fi; use your LAN interface). The LAN interface inside
  Colima is `col0`. Drop `sudo` from the commands below.

Then create the Hub, with `LAN` replaced by that interface:

```bash
sudo incus init images:ubuntu/26.04 libertas-hub -c security.nesting=true
sudo incus config device add libertas-hub eth0 nic nictype=macvlan parent=LAN
sudo incus start libertas-hub && sleep 10
sudo incus exec libertas-hub -- bash -c '
  apt-get update && apt-get install -y curl
  install -d -m 0755 /etc/apt/keyrings
  curl -fsSL https://apt.libertasiot.com/ubuntu/keys/libertasiot-archive-keyring.gpg \
    > /etc/apt/keyrings/libertasiot-archive-keyring.gpg
  echo "deb [signed-by=/etc/apt/keyrings/libertasiot-archive-keyring.gpg] https://apt.libertasiot.com/ubuntu resolute main" \
    > /etc/apt/sources.list.d/libertasiot.list
  apt-get update && apt-get install -y libertasd'
sudo incus list libertas-hub
```

The last command shows the Hub's own LAN address. Phones and other computers
reach it; the computer running it cannot (a macvlan limit).

Then install Libertas on Android or iOS and tap **Add a Hub**, **Search Local
Network**, on the same Wi-Fi. Choose the Hub, **Agree** to the EULA, and create
the administrator in **Setup Admin Account**. That password is the master
password: write it down.

### Your own Cloud Hub on a server

Runs on an Ubuntu 26.04 server with a public address; set it up from the
server itself.
Open TCP ports 8080 and 8443.

```bash
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://apt.libertasiot.com/ubuntu/keys/libertasiot-archive-keyring.gpg \
  | sudo tee /etc/apt/keyrings/libertasiot-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/etc/apt/keyrings/libertasiot-archive-keyring.gpg] https://apt.libertasiot.com/ubuntu resolute main' \
  | sudo tee /etc/apt/sources.list.d/libertasiot.list >/dev/null
sudo apt-get update && sudo apt-get install -y libertasd
sudo mkdir -p /etc/systemd/system/libertasd.service.d
printf '[Service]\nEnvironment=LIBERTAS_CLOUD_HUB=1\n' \
  | sudo tee /etc/systemd/system/libertasd.service.d/10-cloud-hub.conf >/dev/null
sudo systemctl daemon-reload && sudo systemctl stop libertasd
```

Commission it, giving the address clients will use. The first run prints where
to read the Beta EULA and the `--accept-eula` value; rerun with it. Type the
master password when asked and write it down: it cannot be recovered.

```bash
sudo env LIBERTAS_CLOUD_HUB=1 libertasd commission \
  --connection static --connection-address hub.example.com:8080
sudo env LIBERTAS_CLOUD_HUB=1 libertasd commission --accept-eula <value> \
  --connection static --connection-address hub.example.com:8080
sudo systemctl start libertasd
```

The administrator account is **Admin**. In the phone App, tap **Add a Hub**,
**By IP Address**, enter `hub.example.com:8080`, and log in as Admin with the
master password.

## 3. Studio

Install Node.js and Rust, then the Libertas Studio extension in VS Code
(`libertas-ai.libertas-vscode`); it checks its prerequisites on first launch.

1. Run **Libertas: Manage Hubs** and add the Hub by name and address
   (`192.168.1.50` for a Home Hub, `hub.example.com:8080` for your own Cloud Hub).
2. Studio shows **Authorize Libertas Hub** with a QR code. In the signed-in
   phone App, use **Scan Login QR Code**.
3. Run **Libertas: Create New Project**, then follow
   [Developing Apps](developing-apps.md).

Next: [Using Studio](studio.md) · [Administration](administration.md) ·
[Troubleshooting](troubleshooting.md)
