colibri/docs/guide/install/install.md
Sam & Claude b8d499e85c
Some checks are pending
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
docs: rename PLAN/PROPOSAL/HANDOFF/ENHANCEMENT → implementation names
7 renames (no plan/proposal/handoff/enhancement in filenames):

    CLAWDIE-INSTALLER-HANDOFF.md → CLAWDIE-INSTALLER-VALIDATION.md
    CLAWDIE-STUDIO-PROPOSAL.md   → CLAWDIE-STUDIO.md
    COLIBRI-SKILLS-PLAN.md       → COLIBRI-SKILLS.md
    FREEBSD-BUILD-LANE-HANDOFF.md→ FREEBSD-BUILD-LANE.md
    GLASSPANE-TUI-ENHANCEMENTS.md→ GLASSPANE-TUI-DESIGN.md
    MULTI-AGENT-HOST-PLAN.md     → MULTI-AGENT-HOST.md
    PLAN-WIKI-CLAWDIE-SI.md      → WIKI-CLAWDIE-SI.md

  16 cross-references updated across 10 files.
  wiki-lint --strict: PASS (146 refs, 0 failures).
2026-06-26 17:32:39 +02:00

91 lines
3.6 KiB
Markdown

---
title: Install
description: Provision the Clawdie host service with the clawdie binary.
---
**Command:** `clawdie apply --yes`
Colibri-based Clawdie is installed by the **`clawdie`** binary (crate
`crates/clawdie`). It discovers the host's ZFS layout and provisions the
`clawdie` service: storage datasets, a service user, and the rc.d (FreeBSD) or
systemd (Linux) unit that runs `colibri-daemon`.
This repo is a **Cargo workspace** — there is no `just`/npm install flow here.
Build the installer from the workspace:
```bash
cargo build -p clawdie --release
```
## Commands
```bash
clawdie discover # read-only: OS, ZFS pools, datasets, spare disks
clawdie plan [--pool NAME] # show the deploy plan (dry-run, no writes)
clawdie apply [--pool NAME] # dry-run unless --yes is given
clawdie apply --yes # provision: storage layout + install the service
```
`apply` is a **dry-run by default** and prints the full step plan; it writes to
disk only with `--yes`. When the host has exactly one ZFS pool it is selected
automatically; with several, pass `--pool NAME`.
## Storage strategy
| Host | Behavior |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| FreeBSD | ZFS is **required**; datasets are created under the chosen pool. |
| Linux + ZFS + pool | Same — datasets under the pool. |
| Linux, no ZFS/pool | Falls back to plain directories, and reports the ZFS benefits plus any spare disks that could host a pool. |
ZFS layout under the pool:
```text
<pool>/clawdie (container, canmount=off)
<pool>/clawdie/db -> /var/db/clawdie
<pool>/clawdie/log -> /var/log/clawdie
```
## What `apply --yes` provisions
1. **Storage** — the datasets above (or plain `/var/db/clawdie` +
`/var/log/clawdie` on the plain-dirs fallback).
2. **Service user**`clawdie` (nologin), owning the state directories
(`clawdie:clawdie`).
3. **Service** — the rc.d script (FreeBSD, via `daemon -u clawdie`) or systemd
unit (Linux, `User=clawdie`), installed and enabled to run
`/usr/local/bin/colibri-daemon`.
## Creating a pool (destructive)
On a host with a spare disk and no usable pool:
```bash
clawdie apply --pool NAME --create-pool /dev/DEV --yes
```
`--create-pool` runs `zpool create` on `DEV` and **destroys all data on it**, so
it is refused unless the disk is detected as empty (no partitions/filesystem/
mount, not the root disk). Override that guard with `--force` only if you are
certain.
## Safety
Disk-touching steps (`zfs`/`zpool create`, service install) run as root on the
target host. `discover`, `plan`, and a bare `apply` never write — preview with
`plan` first.
## Scope: what the installer does _not_ do (yet)
`clawdie` provisions the **host service** only. The wider service mesh — PF
egress, worker jails, PostgreSQL, Forgejo/Git, and the CMS/web service — was
provided by the legacy clawdie-ai `just` + Ansible orchestrator and is **not yet
part of the colibri installer**. Older pages that reference `just install`,
`just setup-db`, `just doctor`, and similar describe that legacy flow, not this
repo; they are being reconciled to the `clawdie` model.
## FreeBSD validation
The disk-touching and service-install paths are validated on real FreeBSD/Linux
hosts; discovery, plan, and disk-candidacy logic are unit-tested. See
`docs/CLAWDIE-INSTALLER-VALIDATION.md` for the FreeBSD validation runbook.