218 lines
5.7 KiB
Markdown
218 lines
5.7 KiB
Markdown
# Clawdie ISO Requirements
|
|
|
|
Build and test requirements for the current unified Clawdie operator USB branch.
|
|
|
|
---
|
|
|
|
## Quick Checklist
|
|
|
|
Before building:
|
|
|
|
- [ ] FreeBSD 15.0+ build host
|
|
- [ ] 150 GB free build space recommended
|
|
- [ ] 32 GB USB key minimum (`IMAGE_SIZE=28G`)
|
|
- [ ] Internet access for fetch phase
|
|
- [ ] root or `sudo` for image assembly
|
|
|
|
Before booting/testing:
|
|
|
|
- [ ] Browser/network test target in mind
|
|
- [ ] `pi` is part of the verification checklist
|
|
|
|
---
|
|
|
|
## Build Host Requirements
|
|
|
|
### Operating System
|
|
|
|
- FreeBSD 15.0+
|
|
- ZFS recommended for comfortable build storage, but not required by `build.sh`
|
|
|
|
### Packages
|
|
|
|
Install the baseline tools:
|
|
|
|
```sh
|
|
sudo pkg install -y curl node24 npm-node24 sudo
|
|
```
|
|
|
|
`build.sh` sets its own FreeBSD tool PATH:
|
|
|
|
```text
|
|
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
```
|
|
|
|
This keeps fetch/build behavior independent from the invoking user's login PATH.
|
|
|
|
### Disk Space
|
|
|
|
| Item | Typical size |
|
|
| -------------------------- | ------------ |
|
|
| FreeBSD memstick cache | ~2 GB |
|
|
| Offline pkg repository | varies |
|
|
| Clawdie-AI offline tarball | varies |
|
|
| Working image | 28 GB sparse |
|
|
| Output image | 28 GB sparse |
|
|
|
|
Recommended free space: **150 GB**.
|
|
|
|
### USB Key
|
|
|
|
| USB size | Image size | Status |
|
|
| -------- | ---------- | ----------- |
|
|
| 32 GB | 28 GB | minimum |
|
|
| 64 GB | 50 GB | optional |
|
|
| 128 GB | 100 GB | recommended |
|
|
| 256 GB | 200 GB | comfortable |
|
|
|
|
Do not use a USB key smaller than the logical image size printed by `build.sh`.
|
|
|
|
---
|
|
|
|
## Network Requirements
|
|
|
|
### During Build
|
|
|
|
Outbound access:
|
|
|
|
- HTTPS/HTTP to FreeBSD package mirrors
|
|
- HTTPS to Codeberg for Clawdie-AI tarballs
|
|
- HTTPS to npm registry for bundled npm CLI tarballs
|
|
|
|
Inbound access: none.
|
|
|
|
### During Live USB Use
|
|
|
|
Tailscale is recommended but optional.
|
|
|
|
With a Tailscale auth key:
|
|
|
|
- operator can join the tailnet from the live USB
|
|
- remote operator access becomes easier
|
|
- later deployment phases can reuse that connectivity
|
|
|
|
Without a Tailscale auth key:
|
|
|
|
- the USB still boots and remains usable locally
|
|
- operator can authenticate Tailscale later with `mdo -u root tailscale up`
|
|
|
|
For local networking, the live USB now bundles the broad native
|
|
`wifi-firmware-kmod` package set plus `FreeBSD-fwget`. The intended first-pass
|
|
model is still:
|
|
|
|
- native driver + firmware exposes a real `wlan` device
|
|
- NetworkMgr manages that interface
|
|
- Ethernet or USB tethering remain fallback paths
|
|
|
|
`wifibox` is intentionally not part of the current operator-USB plan.
|
|
|
|
---
|
|
|
|
## Target Machine Requirements
|
|
|
|
### Minimum Operator USB Hardware
|
|
|
|
| Component | Minimum | Recommended | Notes |
|
|
| --------- | ------- | ----------- | ------------------------------------ |
|
|
| CPU | 4 cores | 4+ cores | More helps browser and future deploy |
|
|
| RAM | 8 GB | 16 GB+ | XFCE + Firefox are the main loads |
|
|
| Disk | 32 GB | 64 GB+ | 28 GB image fits common sticks |
|
|
| Network | 1 NIC | 1 Gbps | Needed for remote operation |
|
|
|
|
Local AI models require substantially more disk/RAM and are optional.
|
|
|
|
### Display
|
|
|
|
The current branch expects a graphical XFCE session. Headless/server flows are
|
|
not the target for this operator USB milestone.
|
|
|
|
The live USB now chooses graphics conservatively at boot:
|
|
|
|
- Intel -> `i915kms`
|
|
- AMD/ATI -> `amdgpu` with `radeonkms` best-effort
|
|
- VMware -> `vmwgfx`
|
|
- NVIDIA -> proprietary modules only if a concrete `nvidia.ko` is present in the live rootfs
|
|
- otherwise -> Xorg fallback path (`scfb` / `vesa`)
|
|
|
|
This favors broad boot success over guaranteed proprietary NVIDIA acceleration.
|
|
|
|
---
|
|
|
|
## Tailscale Auth Key
|
|
|
|
Generate a key at:
|
|
|
|
```text
|
|
https://login.tailscale.com/admin/settings/keys
|
|
```
|
|
|
|
Recommended options:
|
|
|
|
- reusable key for repeated test installs
|
|
- expiration appropriate for the test window
|
|
- optional tag if your tailnet policy uses tags
|
|
|
|
Authenticate from the running USB later with:
|
|
|
|
```sh
|
|
mdo -u root tailscale up
|
|
```
|
|
|
|
Future persistence work may add a first-boot key entry flow alongside the other
|
|
operator/API key collection steps.
|
|
|
|
---
|
|
|
|
## Current Phase Boundaries
|
|
|
|
This branch is intentionally narrower than the older disk-installer flow.
|
|
|
|
Included now:
|
|
|
|
- XFCE desktop
|
|
- browser
|
|
- Tailscale package
|
|
- bundled `pi`
|
|
|
|
Deferred:
|
|
|
|
- full `Clawdie-AI` service graph on USB
|
|
- disk deployment
|
|
- upgrade/rescue workflow
|
|
- post-install setup token flow
|
|
- provider/model and Telegram setup flow
|
|
|
|
---
|
|
|
|
## Build Commands
|
|
|
|
```sh
|
|
# full validation build
|
|
sudo ./build.sh
|
|
|
|
# fetch-only cache refresh
|
|
./build.sh --fetch-only
|
|
|
|
# assemble cached inputs
|
|
sudo ./build.sh --skip-fetch
|
|
|
|
# release build from a pinned Clawdie-AI tag
|
|
BUILD_CHANNEL=release sudo ./build.sh --clawdie-version 0.10.0
|
|
```
|
|
|
|
---
|
|
|
|
## Common Problems
|
|
|
|
| Symptom | Likely cause | Fix |
|
|
| ------------------------------- | --------------------------------- | ------------------------------------------- |
|
|
| missing package archive | stale `tmp/packages` cache | run `sudo ./build.sh` |
|
|
| `pkg` not found in normal shell | user PATH lacks `/usr/local/sbin` | update PATH; build script already guards |
|
|
| cannot attach md device | not root / stale md device | run with sudo; clean stale mdconfig |
|
|
| no browser on desktop | live package install failed | rerun full build; inspect pkg stage |
|
|
| Tailscale not authenticated | expected before operator login | run `mdo -u root tailscale up` from the USB |
|
|
| USB still shows old ZFS label | stale end-of-disk metadata | wipe whole stick before reflashing |
|
|
|
|
---
|
|
|
|
**Last updated:** 16.maj.2026
|