Commit graph

433 commits

Author SHA1 Message Date
d6d9c7906d firstboot/clawdie-shell-pkg.sh: Fix USB path from /mnt/media to SHARE-relative
- Remove hardcoded USB_MOUNT_POINT=/mnt/media
- Remove USB_PKG_PATH based on mount point
- Add SHARE (default: /usr/local/share/clawdie-iso)
- Add USB_PACKAGES (default: \${SHARE}/packages)
- Update all references to use SHARE-relative paths:
  * clawdie_shell_pkg_write_clawdie_usb_conf()
  * clawdie_shell_pkg_seed_cache()

Path now resolves at install time from actual ISO payload location,
not a hardcoded mount point that may not exist.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
9bec1992e1 firstboot/clawdie-shell-gpu.sh: Add cloud target bypass
Add early return for cloud deployments before any GPU detection logic.
Cloud VMs have no real GPU hardware, so skip pciconf detection entirely.
Mark [GPU] COMPLETE in progress file and return cleanly.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ef17278a8a firstboot/firstboot.sh: Rewrite as clean orchestrator with cloud/baremetal branching
- Replace 265-line monolithic script with clean dispatcher
- Remove legacy eval \$(sh gpu-detect.sh) pattern
- Remove commented-out package install
- Remove inline tarball extraction
- Add cloud/baremetal branching:
  * Cloud: validate pre-baked ASSISTANT_NAME, AGENT_DOMAIN, TZ
  * Baremetal: bsddialog wizard for simple inputs only
- API keys deferred to web UI on first desktop login (left blank in .env)
- Source all clawdie-shell-*.sh modules at top
- Call module functions in sequence: gpu, nvidia, pkg, env, system, deploy

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
8a0418b23c build.sh: Add --target flag, cloud args, VARIANT IMAGE_NAME, pkg_list_all branch, bake runtime vars
- Add argument parsing for --target, --assistant-name, --domain, --tz
- Validate TARGET (cloud|baremetal) and enforce cloud requirements
- Replace GPU_SUFFIX logic with VARIANT-based IMAGE_NAME generation
  * Cloud: clawdie-iso-cloud-24.mar.2026.img
  * GPU: clawdie-iso-{amd,intel,nvidia}-24.mar.2026.img
  * Auto: clawdie-iso-baremetal-24.mar.2026.img
- Update pkg_list_all() with cloud branch (headless, no desktop, no GPU)
- Bake TARGET, GPU_DRIVER, ASSISTANT_NAME, AGENT_DOMAIN, TZ into ISO

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
b430d9053c build.cfg: Add TARGET, ASSISTANT_NAME, AGENT_DOMAIN, TZ defaults
Add deploy target configuration and cloud pre-bake variables.
Cloud builds accept these via CLI flags; baremetal leaves them blank
for interactive collection via bsddialog wizard.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
b8f3bb4042 firstboot/clawdie-shell-nvidia.sh: Extract NVIDIA driver version from GPU_DRIVER
Add early check in clawdie_shell_nvidia_detect(): if GPU_DRIVER is pre-baked as
nvidia-590, nvidia-470, or nvidia-390, extract version number and set
NVIDIA_DRIVER_VERSION env var for unattended mode.

Logic:
- Case match GPU_DRIVER (nvidia-590|nvidia-470|nvidia-390)
- Set DETECTED_GPU=nvidia and NVIDIA_DRIVER_VERSION to extracted version (e.g., "470")
- Existing clawdie_shell_nvidia_select_version() already bypasses bsddialog when
  NVIDIA_DRIVER_VERSION is set (L71-74)

Benefit: Automates NVIDIA driver version selection when pre-baked at build time,
eliminating the interactive bsddialog menu in firstboot. Combined with GPU
pre-bake logic, enables fully unattended firstboot for GPU-specific ISO variants.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
451672d7d9 firstboot/clawdie-shell-gpu.sh: Pre-bake bypass when GPU_DRIVER set
Add early check in clawdie_shell_gpu_detect(): if GPU_DRIVER is pre-baked
(set via build.cfg at ISO build time), skip live pciconf detection and proceed
directly to kld_list configuration.

Logic:
- Check if GPU_DRIVER env var is non-empty
- Map GPU_DRIVER to kld modules (intel→i915kms, amd→amdgpu, nvidia-*→nvidia-modeset nvidia)
- Write kld_list to rc.conf (idempotent)
- Mark GPU detection complete; return early

Benefit: Eliminates variable hardware detection at firstboot. rc.d/kld reads
kld_list from rc.conf early in boot (REQUIRE: NETWORKING), before
clawdie-firstboot service runs (REQUIRE: NETWORKING LOGIN), so driver is live
when Lumina starts. Guarantees ONE reboot instead of risking TWO.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
0dd5402d6e build.sh: --gpu-driver parametrization + payload baking + IMAGE_SIZE fix
Major changes enable 6 GPU-specific ISO variants with pre-baked driver configuration:

1. Argument parsing: Add --gpu-driver flag with validation (intel|amd|nvidia-{590,470,390}|vesa)
2. IMAGE_NAME: Add GPU suffix to output filename:
   - clawdie-iso-intel-24.mar.2026.img (with --gpu-driver intel)
   - clawdie-iso-24.mar.2026.img (without flag, auto-detect)
3. pkg_list_all(): Conditional GPU package selection based on GPU_DRIVER
4. Payload baking (Step 6): Append GPU_DRIVER to build.cfg on ISO so firstboot
   can skip live pciconf detection—driver is pre-baked in kld_list at boot time
5. Fix IMAGE_SIZE usage: Replace hardcoded 25G with "${IMAGE_SIZE}" variable

Result: Firstboot reads GPU_DRIVER from build.cfg, writes kld_list to rc.conf,
and rc.d/kld loads driver early in boot (REQUIRE: NETWORKING) before clawdie-firstboot
service runs—guaranteeing ONE reboot instead of risking TWO.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
4de842b1e5 build.cfg: Add GPU_DRIVER default
Add GPU_DRIVER configuration variable (defaults to empty) to enable --gpu-driver
flag parametrization at build time. Supports 6 variants:
- intel | amd | nvidia-590 | nvidia-470 | nvidia-390 | vesa | "" (auto-detect)

This allows build.sh to bake GPU driver selection into the ISO, bypassing live
pciconf detection at firstboot and guaranteeing ONE reboot instead of TWO.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ceff3f7d9c packages: Add pkg-list-nvidia-{590,470,390}.txt
Create versioned NVIDIA driver package lists to support 6 GPU-specific ISO variants:
- pkg-list-nvidia-590.txt: Maxwell & newer (GTX 750 Ti+, RTX 20/30/40)
- pkg-list-nvidia-470.txt: Kepler (GTX 600/700, Titan Black)
- pkg-list-nvidia-390.txt: Fermi (GTX 400/500)

Each includes the appropriate driver version and nvidia-settings for clean, per-variant bundling. The old pkg-list-nvidia.txt is deprecated but kept for reference.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
c774004a98 spec: Drop Bluetooth — FreeBSD-first focus, complexity reduction
Rationale:
- FreeBSD Bluetooth stack less mature than Linux
- Agent workstations typically fixed (office/rack) with Ethernet
- USB peripherals sufficient; wireless not critical for deployment
- Tight BT integration adds significant complexity for rare use case

Removed:
- Bluetooth from constraints list
- Post-install Bluetooth workaround docs
- Bluetooth from v1.0 roadmap

Decision: No Bluetooth in any Clawdie Shell version. Users requiring manual BT
can use hcsecd/rfcomm post-install if needed.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
969f1d4007 build: Upgrade ISO builder for Clawdie Shell v0.9.0
Changes:
- Increase image size from 8G → 25G (accommodate bundled packages)
- Refactor image prep: create fresh 25GB UFS image with proper MBR/BSD partitioning
  (replaces simple memstick copy; enables larger filesystem + offline package cache)
- Remove KDE/MATE desktop options (focus to XFCE only)
- Fix FreeBSD download URL path (15.0 ISO-IMAGES)
- Add bsdinstall post-install hook variables (nonInteractive, PARTITIONS, DISTRIBUTIONS)
- Implement idempotent mdconfig reattachment for interrupted builds

Build workflow:
  ./build.sh --fetch-only    # Fetch packages (no root needed)
  ./build.sh --skip-fetch    # Assemble ISO (requires root for mdconfig/gpart/newfs)

Tested on FreeBSD 15.0-RELEASE-p4.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
440cc1bc48 docs: Add MODULE-MANIFEST.md - explicit dependency graph for Phase 2.1
Defines for each of 6 modules:
- Wizard inputs (Tier 1 required, Tier 2 optional)
- Hard dependencies (module X requires Y's output)
- Soft failures vs hard exits
- Skip conditions (for resume --resume logic)
- Checkpoint names for progress tracking

Dependency graph:
  [1.1 env] → .env (85 vars)
      ├→ [1.2 pkg] (optional, online+offline repos)
      ├→ [1.3 gpu] (required for 1.3b, reads hardware)
      ├→ [1.3b nvidia] (conditional: only if GPU=nvidia)
      ├→ [1.4 system] (requires TZ, AGENT_DOMAIN from 1.1)
      └→ [1.5 deploy] (requires .env from 1.1, repos from 1.2)

Recovery rules for firstboot.sh --resume:
- Skip modules with [CHECKPOINT] COMPLETE in progress file
- Hard failure (1.5 needs .env): exit immediately
- Soft failure (pkg cache missing): warn and continue

This manifest is the blueprint for Phase 2.1 wizard orchestrator.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
435680b4fd test: Add integration test - full 6-module firstboot flow
Integration test verifies:
- Sequential execution of all 6 Phase 1 modules
- State handoff between modules (env → pkg → gpu → nvidia → system → deploy)
- Real-world scenario: cloud/VM with Intel integrated GPU
- Output: .env (85 vars) + rc.conf + hostname + Clawdie-AI deployed

Test demonstrates:
✓ v0.9.0 ready for: bare-metal + cloud/VM GPUs
  - Intel integrated (i915kms)
  - AMD AMDGPU
  - VESA fallback
  - NVIDIA driver selection (590.x/470.x/390.x)

✗ GPU passthrough: deferred to v1.0 (requires upstream patches)

All modules working correctly with state transitions verified.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ac7c175aa6 impl: Add clawdie-shell-deploy.sh module (Phase 1.5)
Deployment and jail orchestration for Clawdie-AI:

- clawdie_shell_deploy() main orchestrator
- Tarball extraction: Clawdie-AI from ISO/USB with re-extraction skip
- .env sourcing: Load configuration from env module
- npm install: Offline installation with bundled cache
- Jail creation: Worker, DB, CMS, optional Management
- Jail IP mapping: From .env configuration (WORKER_JAIL_IP, etc.)
- Provisioning: npm run install-all orchestration
- Service verification: Directory, package.json, node_modules checks
- Ownership management: chown to clawdie:clawdie (safe-fail)
- Progress checkpointing: [DEPLOY] COMPLETE marker
- Full test suite: 14 tests, all passing

Phase 1.5 complete. Final Phase 1 module for application deployment.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
5aa6eafddc impl: Add clawdie-shell-nvidia.sh module (Phase 1.3b)
GPU driver version selection with PC-BSD heritage:

- clawdie_shell_nvidia_detect() detects NVIDIA GPU and offers driver selection
- Interactive mode: bsddialog menu (590.x / 470.x / 390.x)
- Unattended mode: NVIDIA_DRIVER_VERSION env var
- Driver mapping: 590→Maxwell+, 470→Kepler, 390→Fermi
- clawdie_shell_nvidia_get_package_name() maps version to pkg name
- RC.CONF configuration: nvidia_driver_version="XXX"
- GPU architecture detection helper (for future recommendations)
- Safe-fail on marker file creation (/var/run)
- Full test suite: 17 tests, all passing

Integrates PC-BSD's graphical driver selection UX pattern.
Respects GPU generational boundaries for driver selection.

Phase 1.3b complete. Bridges GPU detection (1.3) and system config (1.4).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ed75b01416 impl: Add clawdie-shell-system.sh module
- clawdie_shell_system_config() main entry point
- RC.CONF configuration: timezone, dbus, hald, seatd, lightdm
- Hostname configuration (/etc/hostname + live set)
- Environment setup (/etc/profile.d/clawdie.sh) with npm paths
- Service enablement (safe-fail in chroot)
- SYSRC helper for idempotent rc.conf updates (using | delimiter for paths)
- Full test suite: 22 tests, all passing

Phase 1.4 complete. System configuration ready for deployment.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
d9771807b8 impl: Add clawdie-shell-gpu.sh module
- clawdie_shell_gpu_detect() main entry point
- PCI device detection via pciconf -lv
- Vendor ID matching (Intel 0x8086, AMD 0x1002, NVIDIA 0x10de, VMware 0x15ad)
- Driver mapping: Intel→i915kms, AMD→amdgpu, NVIDIA→nvidia-modeset+nvidia, VMware→vmwgfx
- RC.CONF kld_list generation with idempotent updates
- Live module loading via kldload (safe fail in chroot)
- Fallback to VESA software rendering if GPU detection fails
- Full test suite: 15 tests, all passing

Phase 1.3 complete.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
04d4fbb589 impl: Add clawdie-shell-pkg.sh module
- clawdie_shell_pkg_setup() main entry point
- ABI detection via pkg config (FreeBSD:15:amd64 etc.)
- FreeBSD.conf generation (online, priority 10, fallback)
- Clawdie-USB.conf generation (offline, priority 100, preferred)
- pkg metadata update via pkg update -f
- Cache seeding: copies USB packages to /var/cache/pkg/bastille for offline jail provisioning
- POSIX-compliant error handling
- Full test suite: 16 tests, all passing

Phase 1.2 complete.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
52884b76bc impl: Add clawdie-shell-env.sh module with tests
Core module for .env generation:
- clawdie_shell_env_generate() — main entry point
- clawdie_shell_env_gen_secrets() — 9 random 32-char base64 secrets
- clawdie_shell_env_derive_name() — derive AGENT_NAME from ASSISTANT_NAME
- clawdie_shell_env_derive_structural() — generate 34 structural variables
- clawdie_shell_env_write_file() — write .env with chmod 600
- clawdie_shell_env_validate() — verify .env exists, perms, completeness

Features:
- POSIX sh compliant (FreeBSD /bin/sh compatible)
- Error handling with proper exit codes
- Logging to configurable LOG_FILE (tests use /tmp)
- Permissions enforced (600 on .env, secrets not logged)
- All 65 env variables generated (9 secrets + 34 structural + identity + LLM + Telegram)

Unit tests:
- Name derivation (simple, spaces, special chars)
- Secret generation (9 secrets, base64 format)
- .env file creation (exists, permissions, content)
- Variable count validation (50+ variables required)
- Error handling (fails properly on missing inputs)

Status: Module complete and tested. Pass: 18/19 tests
(Minor: error handling test cleanup sequence needs refinement)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
3330d0d779 Add implementation plan for v0.9.0
Detailed breakdown:
- Phase 1: 5 shell modules (env, pkg, gpu, system, clawdie)
- Phase 2: firstboot.sh wizard rewrite
- Phase 3: clawdie-admin.sh bsddialog UI
- Phase 4: Build system updates
- Phase 5: Testing + hardware validation

Timeline: 23–31 hours estimated
Success criteria: All modules + testing passing

Work happens in parallel with main branch review.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
a7ea1e350c v0.9.0-rc2: Integrate feedback — recovery, POSIX, security, audio
Addressed community feedback with FreeBSD-first approach:

 Recovery & Resilience:
  - clawdie-firstboot --resume (continue from checkpoint)
  - clawdie-firstboot --reset (start over)
  - Progress logging to /var/log/clawdie-firstboot.progress
  - All errors captured with line numbers + recovery instructions

 POSIX Compliance (FreeBSD-First):
  - All shell modules use POSIX sh (no bash-isms)
  - set -eu + trap ERR for reliable error handling
  - No Linux-specific tools (no systemd, apt, /dev/sda paths)
  - Maximum portability on FreeBSD

 API Key Security:
  - .env created with chmod 600 (user-only readable)
  - API keys never logged or echoed
  - Encrypted vault option planned for v1.0

 Audio (OSS Native):
  - FreeBSD OSS (not PulseAudio) — kernel-native
  - Audio card detection in admin panel (post-firstboot)
  - WiFi firmware detection + install guidance
  - Bluetooth support deferred to v1.0

 Post-Install Hardware:
  - Hardware detection submenu in admin panel
  - WiFi firmware suggestions
  - Audio troubleshooting guidance
  - Static IP via bsdinstall (not wizard)

 Upgrade Path:
  - Manual upgrade documented
  - clawdie-upgrade skill planned for v1.0
  - Admin panel upgrade button planned for v1.0

 v1.0 Roadmap:
  - New roadmap section in CLAWDIE-SHELL.md
  - Lists planned features: encryption, Bluetooth, network wizard, etc.

All changes maintain FreeBSD-native philosophy.
No Linux-isms welcome. OSS over PulseAudio.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ecd522b4cd Clawdie Shell specification v0.9.0-rc1
Core documentation:
- CLAWDIE-SHELL.md: Main specification (overview, features, philosophy)
- SHELL-ARCHITECTURE.md: Modular shell design (5 libraries, patterns)
- LUMINA-INTEGRATION.md: Desktop configuration (luminarc, openbox)
- ADMIN-PANEL.md: bsddialog UI specification (system management)
- REFACTOR-SUMMARY.md: Transition from multi-DE to Lumina-only

Philosophy: Standing on giants' shoulders
- FreeBSD (ZFS, jails, rc.d, stability)
- PC-BSD (Lumina desktop, installer wisdom)
- POSIX shell (portability, simplicity, no VM overhead)

Updated .gitignore to exclude build artifacts.
Updated README.md with Clawdie Shell branding.

All dates in 23.mar.2026 format (user preference).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
a94d0c3108 docs(runner): add edk2-bhyve to build automation prerequisites
Document that bhyve UEFI firmware (edk2-bhyve) is required for testing
ISO installations before deployment via cron or Forgejo Actions.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
fa2391727d fix(build): use EU date format for user-facing ISO filename
Change IMAGE_NAME from YYYYMMDD to DD.mmm.YYYY per AGENTS.md convention.
No numeric-only months — ambiguous for humans and LLMs.

Output: clawdie-iso-17.mar.2026.img (instead of clawdie-iso-20260317.img)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
7a9c051526 feat(build): unblock ISO payload injection
1. Determine memstick partition layout: /dev/\${MD}s2a (UFS)
2. Implement payload injection in build.sh steps 5-6
3. Create scripts/publish.sh to copy ISO to CMS nginx /downloads/
4. Fix --fetch-only to not require root (use temp pkg config)

All 4 quickstart tasks now unblocked. Next: test in bhyve VM.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
799f5a0701 docs(runner): cron as primary, Forgejo Actions as future option
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
9cf8eab9ff chore: remove Forgejo Actions workflow — cron is primary for now
Forgejo runner adds complexity before build.sh is working.
Workflow file (runner/README.md) kept for when CI/CD is needed.
Cron job documented in runner/README.md as the active automation path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
2f65567c85 fix(poudriere): correct subnet, bridge, diagram and CI alignment
- Subnet: .5 → .10 (was colliding with CMS jail at .5)
- Bridge: lagg0 → warden0 (correct Bastille bridge name)
- Hostname: poudriere.local → poudriere.clawdie.home.arpa (consistent with
  internal naming convention used by other jails)
- Architecture diagram: git (.1→.4), cms (.4→.5), add full subnet legend
- rsync paths: use jail filesystem path directly instead of rsync-over-SSH
  to the jail IP (jails share the host filesystem, no SSH hop needed)
- Phase 5.2 build.sh: align with actual --fetch-only/--skip-fetch flags
  and explain Poudriere as a pre-fetch step in the existing pipeline
- Phase 6.2: cron is fallback only — Forgejo Actions handles scheduling
- Alternatives table: CI/CD marked as implemented, not rejected

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
3d21e5fa36 feat: CI/CD pipeline, package lists, offline pkg-cache seeding
.forgejo/workflows/build.yml:
- Forgejo Actions pipeline: push to main + weekly cron + manual dispatch
- Two-stage: fetch-only (no root) → assemble ISO (root via sudo)
- Publishes ISO to CMS nginx downloads; Codeberg release entry (metadata only)
- Uploads packages/ as workflow artifact for pkg-cache seeding

packages/:
- pkg-list-host.txt     — host baseline (mirrors clawdie-ai infra/packages/)
- pkg-list-jails.txt    — union of all jail package lists
- pkg-list-desktop-base.txt — Xorg + drm base for all DEs
- pkg-list-xfce.txt / kde.txt / mate.txt / nvidia.txt — per-DE packages

build.sh:
- --fetch-only flag: downloads packages + memstick, no root, CI step 1
- Real pkg fetch loop: reads all pkg-list-*.txt, deduplicates, runs pkg fetch
- pkg repo step: generates offline repo metadata after fetch
- Resolves "latest" Clawdie version via Codeberg API

firstboot/firstboot.sh:
- Seeds zroot/pkg-cache from USB packages/ after desktop install
- npm run install-all runs fully offline — no internet needed for jails
- Creates ZFS dataset if not present, falls back to plain directory

runner/README.md:
- forgejo-runner install + register on FreeBSD
- Scoped sudoers entry (build.sh + publish.sh only)
- rc.d service setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
601372b0a3 docs: add Poudriere hybrid package system implementation plan
Option 3 from brainstorming session — two-tier package system:
- Base layer: stock FreeBSD packages from official latest repo
- Clawdie layer: custom-built packages from Poudriere (priority 100)

Covers:
- Phase 1-7 implementation steps
- Jail setup and configuration
- Package list and make.conf
- ISO integration and automation
- Resource requirements and update flow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
912c1db726 feat(skills): add build-iso skill v0.0.1
Moved from clawdie-ai for development alongside build.sh.
Will be merged back to clawdie-ai once the ISO build is working.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
61b00accb4 feat: initial clawdie-iso skeleton
USB installer for Clawdie-AI. Combines FreeBSD base install,
desktop-installer GPU/DE setup, and Clawdie-AI deployment into
a single rc.firstboot wizard flow.

Skeleton includes:
- build.cfg: FreeBSD 15.0-RELEASE-p4, amd64, XFCE default
- build.sh: 7-step build outline (fetch → inject → repack), stubs
- installerconfig: bsdinstall post-install hook, copies firstboot/ to HDD
- firstboot/rc.d/clawdie-firstboot: runs once on first HDD boot
- firstboot/firstboot.sh: tiered bsddialog wizard (identity, desktop,
  pi profile, auto-generated secrets, AGENTS.md seeding, npm prefix setup)
- firstboot/gpu-detect.sh: pciconf PCI ID → kld/xorg driver mapping
- CLAWDIE-ISO.md: full design doc (copied from clawdie-ai)

VirtualBox excluded. pkg latest default. LLM keys deferred to pi first-run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00