Commit graph

6 commits

Author SHA1 Message Date
dee76991de fix(iso): remove real IPs from image, install mother key for daemon user, de-obfuscate docs
Three blockers fixed from review of fix/ootb-mother-mcp:

1. Real Tailscale IP removed from image/repo.
   - external-mcp.json uses "mother" host alias (resolved by SSH config).
   - Key path: /var/db/colibri/.ssh/mother-mcp (daemon user home).
   - The real IP lives only on the offline seed (ssh/config), never in
     the repo or the shipped image.

2. Cross-user key access fixed.
   - The daemon runs as colibri (home /var/db/colibri), not clawdie.
   - Seed importer now installs SSH material to both clawdie AND
     colibri homes (same seed material, same key, separate ~/.ssh).
   - build.sh dev convenience also copies to both homes.
   - clawdie-live-seed.README.txt already documents the seed layout.

3. Doc fully de-obfuscated.
   - All m0th3r/c0l1br1/n0d3_r3g1st3r → mother/colibri/node_register.
   - All real IPs → <mother-tailscale-ip> placeholder.
   - Removed Step 2 (manual external MCP) + Step 3 (register) — both
     are now baked into the ISO.
   - Removed trailing "colibri-mcp" remote command from examples
     (hardened wrapper rejects non-allowlisted commands).
2026-06-24 11:19:21 +02:00
3fd3bc7560 fix(iso): pre-configure mother MCP OOTB + fix docs
Two changes so the USB connects to mother on first boot with no manual steps:

1. stage-colibri-iso.sh: external-mcp.json is now pre-configured with the
   mother server entry (colibri@100.72.229.63, no remote command — the
   hardened wrapper starts colibri-mcp in stdio MCP mode). Previously
   staged as empty {}; the operator had to create it manually or run
   clawdie-enable-mother.

2. provider.env now includes COLIBRI_MCP_EXTERNAL_CALL=1 by default
   (already set on osa; missing from the ISO defaults).

3. SETUP-USB-TO-MOTHER.md: removed Step 3 (manual external-mcp.json),
   fixed the diagram to match the hardened wrapper (no remote command),
   corrected the server name from "m0th3r"/"c0l1br1" to the real names.

The SSH key, config, and known_hosts still come from the CLAWDIESEED
seed partition — the image carries no secrets. Without the seed the
connection fails gracefully.
2026-06-24 11:04:36 +02:00
4298389f13 mother: drop duplicate scripts from iso; canonical = colibri; docs → hive_nodes
The mother MCP scripts were copied into clawdie-iso (packaging/mother/) AND
colibri. The iso copies drifted: node-register-mcp on iso main was the old,
SQL-injectable version (E'${HOST_ESCAPED}' string interpolation) using
usb_nodes — while colibri #161 carries the reviewed, parameterized (psql -v
:'var') hive_nodes version.

One canonical home: colibri. Remove packaging/mother/ from the iso (nothing in
the iso build references it), redirect the two doc path references to the colibri
repo, and align the docs to hive_nodes (matching the colibri schema rename).

Supersedes #127 (which only renamed docs and conflicted after the iso copies
landed). Doc-only + file removals; markdown gate green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:10:09 +02:00
d001b46b34 feat(mother): add node-register MCP tool for USB hw-probe registration
New packaging/mother/node-register-mcp accepts JSON-RPC tools/call,
inserts hw_profile into mother_hive.usb_nodes, and returns the row
with auto-derived capabilities (derive_capabilities trigger fires).

Requires one-time PostgreSQL setup on mother:
  CREATE ROLE colibri WITH LOGIN;
  GRANT CONNECT ON DATABASE mother_hive TO colibri;
  GRANT INSERT, UPDATE ON usb_nodes TO colibri;
  GRANT USAGE ON SEQUENCE usb_nodes_id_seq TO colibri;

Also updates docs to reflect 0.12 daemon behavior: hw-probe is
collected by the daemon (not the agent) and passed via CLAWDIE_HW_PROFILE
env var. COLIBRI_AUTOSPAWN_ARGS default is binary-dependent (zot->rpc,
others->--mode json).
2026-06-24 09:07:48 +02:00
6275fee97e docs: harness-neutral cleanup + restore green markdown gate
Pi-era residue in current-tense docs/strings (CHANGELOG history left intact):
- ONBOARDING-SIMPLIFICATION: COLIBRI_AUTOSPAWN_PI -> COLIBRI_AUTOSPAWN; 'Pi
  agent' -> 'agent'.
- clawdie-join-hive.sh: user-facing 'Pi agent is live' / 'no Pi agent' ->
  harness-neutral (default agent is now zot).
- clawdie-live-seed.README.txt: COLIBRI_AUTOSPAWN_PI -> COLIBRI_AUTOSPAWN.
- stage-colibri-iso.sh provider.env.sample: the AUTOSPAWN_ARGS example showed
  '--mode json' (invalid for the zot default); note the default is
  harness-derived (zot -> rpc, pi -> --mode json).

Also restore the markdown format gate: 5 docs from the 0.12.0 work were
prettier-dirty, so ./scripts/check-format.sh was already failing on main (the
gate was red and unenforced — same pattern as the colibri build break).
prettier --write brings them to style; gate is green again. No prose changes
in those 5 — formatting only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:08:58 +02:00
d7f583cb8f docs: USB→mother MCP setup — step-by-step guide with real hosts
5 steps from nothing to working: SSH key + config → enable
external MCP → register mother server → install hw-probe →
restart daemon. Uses real hosts (osa.smilepowered.org at
100.72.229.63, USB as clawdie-usb) with l33t placeholder keys.
ASCII architecture diagram showing persistent SSH child process,
JSON-RPC over stdin/stdout, mother-side forced-command wrapper.

Includes: end-to-end test, future autospawn flow, and
troubleshooting table for all common failure modes.
2026-06-23 16:46:18 +02:00