|

docs: v0.4 — profile library section, migration guide; bump version

Author: Chris Tusa <chris.tusa@leafscale.com>
Date: May 09, 2026 00:39
Node: cadaf4872eb3b88075a0e5af6a9e225385ca3d69
Branch: default

Changed files:

Diff

diff -r 6963cf9e2b9d -r cadaf4872eb3 README.md
--- a/README.md	Sat May 09 00:38:10 2026 +0000
+++ b/README.md	Sat May 09 00:39:50 2026 +0000
@@ -57,23 +57,58 @@
 
     repoman setup                     # interactive
     repoman setup --non-interactive   # accept defaults
-    repoman setup --with-llm          # include local LLM stack (ollama + hermes)
+
+The wizard creates the Incus project `repoman`, detects your host LAN IP (used by
+profiles that wire containers to host services), and writes the initial registry.
+
+After setup, install the vendor profile library:
+
+    repoman profile install --all
+
+## Profile library
 
-The wizard creates the Incus project `repoman`, verifies your `claude-share` profile
-exists, and (with `--with-llm`) creates an `llm-share` profile that wires containers
-to your host's ollama daemon over LAN.
+repoman ships a vendor profile library at `/usr/local/share/repoman/profiles/`.
+v0.4 includes three profiles:
 
-## Local LLM stack
+- **`claude-share`** — bind `~/.claude` and `~/.local/bin/claude` into containers
+  so they share the host's Claude CLI auth, history, and plugins.
+- **`llm-share`** — bind `/usr/local/bin/ollama` and `~/.ollama` into containers,
+  set `OLLAMA_HOST=http://<host-lan-ip>:11434` so containers reach the host's
+  ollama daemon over LAN.
+- **`dotfiles`** — bind `~/.gitconfig` and `~/.hgrc` (extend with your own).
+
+Manage profiles via `repoman profile`:
 
-`repoman setup --with-llm` provisions:
+    repoman profile list
+    repoman profile install <name>
+    repoman profile install --all
+    repoman profile diff <name>            # show drift between file and incus state
+    repoman profile show <name>            # print rendered YAML
+    repoman profile remove <name>          # remove from incus (file untouched)
+
+### Customizing profiles
+
+To override a vendor profile, copy it to your user dir and edit:
+
+    cp /usr/local/share/repoman/profiles/dotfiles.yml ~/.config/repoman/profiles.d/
+    $EDITOR ~/.config/repoman/profiles.d/dotfiles.yml
+    repoman profile install dotfiles       # applies the user version (shadows vendor)
 
-- An Incus profile `llm-share` that bind-mounts `/usr/local/bin/ollama` (read-only)
-  and `~/.ollama/`, and sets `OLLAMA_HOST=http://<host-lan-ip>:11434` in the
-  container environment.
-- Registry default `[defaults].llm.enabled = true`.
+User profiles in `~/.config/repoman/profiles.d/` always win over vendor profiles
+of the same name. `repoman profile list` shows the active source for each.
+
+## Migrating from v0.3
 
-Containers created after `--with-llm` setup automatically inherit the `llm-share`
-profile and can reach the host's ollama daemon at the configured LAN address.
+If you ran `repoman setup --with-llm` on v0.3, your registry is at schema 2 and
+includes a `[defaults.llm]` block. v0.4 reads that block on first load, extracts
+the ollama_url's host portion into `[host].lan_ip`, and writes the registry as
+schema 3 on the next save. No action required — the migration is automatic and
+lossless for the one fact that's still useful.
+
+The `--hermes` / `--no-hermes` / `--purge-hermes` flags are gone (those were
+already reverted in v0.3 before tagging). Hermes (and similar agents that need
+per-container installs) is the user's responsibility: shell into the container
+with `repoman shell <name>` and run the install yourself.
 
 ## Smoke test (requires Incus + NFS)
 
diff -r 6963cf9e2b9d -r cadaf4872eb3 VISION.md
--- a/VISION.md	Sat May 09 00:38:10 2026 +0000
+++ b/VISION.md	Sat May 09 00:39:50 2026 +0000
@@ -40,7 +40,8 @@
 
 | Subcommand | Purpose |
 |---|---|
-| `repoman setup` | First-time host setup. Creates Incus project `repoman`, ensures profiles exist (`claude-share` user-managed, `llm-share` repoman-managed), validates LAN ollama reachability if --with-llm. Idempotent. **Shipped in v0.3.** |
+| `repoman setup` | First-time host setup. Creates Incus project `repoman`, detects host LAN IP, writes initial registry. Idempotent. **Shipped in v0.3, trimmed in v0.4 (no longer touches profiles or LLM stack).** |
+| `repoman profile {list, install, diff, remove, show}` | Manage Incus profiles from the vendor library at `/usr/local/share/repoman/profiles/` and the user override dir at `~/.config/repoman/profiles.d/`. **Shipped in v0.4.** |
 | `repoman new <name> [--repo <dir>] [--image <img>]` | Create a new managed container. Bind-mounts the repo, applies profiles, restarts. Interactive form prompts for unset values. |
 | `repoman list` | List managed containers: name, state, IP, repo path, image, last sync. Reads from registry + reconciles against `incus list --project repoman`. |
 | `repoman shell <name>` | Drop into the container as the local user, in the repo's directory. Replaces the verbose `incus shell --user 1000 --cwd ...` invocation. |
diff -r 6963cf9e2b9d -r cadaf4872eb3 reef.toml
--- a/reef.toml	Sat May 09 00:38:10 2026 +0000
+++ b/reef.toml	Sat May 09 00:39:50 2026 +0000
@@ -1,6 +1,6 @@
 [package]
 name = "repoman"
-version = "0.3.0"
+version = "0.4.0"
 author = "Chris Tusa <christusa@gmail.com>"
 description = "Per-project Incus containers + opinionated NFS/ZFS backup"
 license = "MIT"
diff -r 6963cf9e2b9d -r cadaf4872eb3 src/cli.reef
--- a/src/cli.reef	Sat May 09 00:38:10 2026 +0000
+++ b/src/cli.reef	Sat May 09 00:39:50 2026 +0000
@@ -926,7 +926,7 @@
 end cmd_profile_show
 
 fn version_string(): string
-    return "repoman 0.3.0"
+    return "repoman 0.4.0"
 end version_string
 
 proc print_usage()