Commit graph

71 commits

Author SHA1 Message Date
83feb0d736 Avoid npm install lifecycle for Clawdie installer
---
Build: pass | Tests: pass — 2451 passed (182 files)
2026-05-12 21:16:17 +02:00
50513681b4 Add post-install setup bootstrap flow
---
Build: pass | Tests: pass — 2446 passed (182 files)
2026-05-12 11:37:55 +02:00
c1560e108d Harden hostd auth and operator password hashing
---
Build: pass | Tests: FAIL — 4 failed (pre-existing controlplane-api tenant fixture cases)
2026-05-03 06:50:06 +02:00
7b14e27783 feat(install): add shell-based inspect mode
---
Build: pass | Tests: pass — Tests  1991 passed (1991)
2026-04-27 08:47:56 +02:00
Operator & claude
b9e771316d feat(setup): add set-operator script for post-install dashboard credentials
Lands task 4 from the ISO first-boot implementation split as a
standalone scripts/set-operator.ts (matches existing scripts/
convention — no clawdie-admin umbrella). Reuses
ensureControlplaneBootstrapOperator() for the Better Auth signUp
path. Prompts password via stdin with echo suppressed; refuses
non-TTY runs; updates OPERATOR_PASSWORD in .env (mode 0600).
First-set only — rotation goes through the dashboard.

Both planning docs updated to drop "notional" references and point
at the real npm run set-operator -- <email> command.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---
Build: pass | Tests: FAIL — Tests  3 failed | 1972 passed (1975)
2026-04-27 06:41:53 +02:00
169a47a5c3 feat(multitenant): add manual tenant-site publish path
---
Build: pass | Tests: FAIL — Tests  3 failed | 1842 passed (1845)
2026-04-25 08:56:07 +02:00
d8cbd5ca70 chore(multitenant): harden agent workflow and README sync
Move the multitenant agent-workflow decision into repo docs, enforce effective author/committer identities in the pre-commit hook, and replace the shell-based README version rewrite with a reusable Node helper.

---
Build: pass | Tests: pass — node scripts/update-readme-version.mjs --check; sh -n hooks/pre-commit

---
Build: FAIL | Tests: FAIL — Tests  58 failed | 1109 passed (1167)

---
Build: FAIL | Tests: FAIL — Tests  58 failed | 1107 passed (1165)
2026-04-25 07:58:18 +02:00
26b42ba29c fix(multitenant): auto-activate attribution guard so reset-discipline is not load-bearing
zAI — the Agent Identity fix in 8138173 is fragile as it stands. On
shared-Linux setups, `user.name` lives in `.git/config` per-clone, so
whichever agent set it most recently wins until the next reset. "Each
agent remembers to re-run `git config user.name`" is exactly the kind
of verbal invariant that silently breaks: one forgotten command and the
next ten commits land under the wrong author, with no warning.

The pre-commit guard I added in 8bafe79 was dormant (opt-in via
`npm run install-hooks`), which preserves the same failure mode for any
agent who skips the manual step. This commit removes that foot-gun:

- package.json gains a `prepare` script that sets
  `core.hooksPath=hooks` on every `npm install`. npm runs `prepare`
  automatically, so the guard goes live on any fresh clone or dep
  refresh — no agent has to opt in.
- The handoff section is re-worded to stop framing the pre-commit hook
  as a "nice-to-have" and starts treating it as the actual mechanism.
  The `git config user.name` step still matters, but it's now
  enforceable: the hook rejects any commit whose author does not start
  with `Operator & ` (legacy `Clawdie AI` still allowed).

Net effect: a forgotten `user.name` reset produces an immediate
commit-time error instead of a misattributed commit. Please run
`npm install` at the start of your next session so the guard is live
on your clone too.

---
Build: pass | Tests: pass — Tests  1812 passed (1812)
2026-04-24 20:02:06 +02:00
96f7ffb06e TTS: avoid node-edge-tts dependency (use edge-tts CLI)
---

Build: pass | Tests: pass — 1556 passed (94 files)
2026-04-19 13:17:31 +00:00
4315ef3f63 feat(telegram): add TTS voice replies via Microsoft Edge TTS
Add text-to-speech synthesis for Telegram voice notes using node-edge-tts.
Voice: en-US-JennyMultilingualNeural (multilingual EN+SL). Output format:
ogg-24khz-16bit-mono-opus (Telegram-native voice bubble). Configurable
auto-mode: always (default), inbound, tagged, off. Strip markdown before
synthesis. Truncate to 1500 chars. sendVoice with path traversal guard and
VOICE_MESSAGES_FORBIDDEN fallback.

---
Build: pass | Tests: pass — 19 passed (1 file) (Sam & Claude)
2026-04-19 15:12:04 +02:00
0a8f13bed3 feat(phase7c): agent jail secret scoping verification
Adds setup/verify-agent-jails.ts which checks each agent jail's
.env.agent for:
  1. Jail exists and is running (bastille list State=Up)
  2. .env.agent file is present
  3. Domain keys for the specialist are present (warns if missing)
  4. No cross-contamination: keys belonging to OTHER specialists
     are absent — exits with code 2 if any leaks detected
  5. At most one LLM key (shared key) — warns if multiple found

Wire-up:
  - setup/index.ts: added 'verify-agent-jails' step
  - package.json: added 'verify-agent-jails' npm script

Tests: 23 new tests in setup/verify-agent-jails.test.ts covering
parseEnvKeys, jailIsRunning, and verifyJail for all three specialists
with pass/fail/leak scenarios.

Full suite: 70 files, 1185 tests passing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  1185 passed (1185)
2026-04-14 19:00:37 +00:00
326e862005 feat(phase3): add 8 pi extension tools to clawdie-harness
Tools registered via ExtensionAPI.registerTool() (TypeBox schemas):
- jail_status: structured jail list from bastille-list (not raw text)
- system_health: composite — jails + ZFS + PF in one call
- skills_search: fuzzy search library.yaml, returns SKILL.md content inline
- skills_content: get full SKILL.md for a known skill id
- task_create: create controlplane task for specialist delegation
- task_status: check task status or list recent tasks
- hostd: privileged op passthrough (15 ops, safety rules apply)

Also adds @sinclair/typebox@0.34.49 (matches pi's bundled version) and a
tsconfig for the extension directory to resolve the global pi package.

Pre-existing type errors in original index.ts (ctx.ui) left untouched.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  942 passed (942)

---
Build: pass | Tests: FAIL — Tests  40 failed | 766 passed (806)
2026-04-13 23:18:41 +00:00
8e661311b5 feat(db): migrate SQLite to Postgres OPS_DB (Sam & Claude)
Replace better-sqlite3 with pg Pool for all operational data (chats,
messages, tasks, sessions, router_state, registered_groups). New
OPS_DB_URL config drives a dedicated ops database alongside the
existing memory and skills databases.

All db.ts functions are now async. Callers in src/, setup/, and tests
updated accordingly. Tests use a mock pool (src/test-helpers.ts) so
they run without a live Postgres connection.

---
Build: pass | Tests: not run (Linux)
2026-04-11 12:21:27 +02:00
f1a6ba7815 feat(install): rename install-all + add controlplane step 2026-04-08 19:22:46 +00:00
325d74b676 fix: resolve Better Auth deps 2026-04-08 18:49:30 +00:00
d8c248d74d feat(auth): integrate Better Auth for dashboard authentication (Sam & Claude)
- Add better-auth dependency for session-based auth (email+password)
- Two modes: local_trusted (no login, internal) and authenticated (public)
- Custom table names (cp_users/cp_sessions/cp_accounts/cp_verifications)
- Bind to 0.0.0.0 by default (was 127.0.0.1)
- /api/auth/* routes for Better Auth handler
- /dashboard static file serving with SPA fallback
- Agent bearer token auth preserved alongside Better Auth sessions
- startControlplaneApi signature changed to accept ControlplaneApiOptions
2026-04-08 20:28:12 +02:00
9e6d4b3891 docs: Paperclip control plane integration — v0.10.0
- doc/PAPERCLIP-INTEGRATION.md: Full architecture, security, deployment, operations
- doc/PAPERCLIP-COMPANY-STRUCTURE.md: Default org chart (CEO + Sysadmin + DBA + Git Admin)
- Updated CHANGELOG.md and package.json for v0.10.0

Major architectural addition: Paperclip as central orchestration layer for multi-agent coordination.

Features:
- Control plane at 10.0.0.2 (FreeBSD jail)
- Authenticated security model (board users, agent API keys)
- Token budget governance per agent + company-wide limits
- Approval workflows for expensive operations
- Skill orchestration (32+ operational skills via pi-local adapter)
- On-demand heartbeats (cost-conscious) with daily health checks

This enables:
✓ Multi-agent org structure (CEO coordinates Sysadmin/DBA/Git Admin)
✓ Auditable activity log (all agent work tracked)
✓ Hierarchical task management (goal tracing)
✓ Approval gates (board user oversight)
✓ Cost controls (token budgets, hard-stops)

Targets 1.0.0 release after USB installer validation + end-to-end testing.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  603 passed (603)
2026-04-07 08:40:33 +00:00
468df25b67 bump: Version 0.9.1 — v1.0.0 embeddings + CMS + Crowdin (Sam & Claude)
---
Build: pass | Tests: pass — Tests  603 passed (603)
2026-04-06 19:57:18 +00:00
3d6f99668b bump: align version to 0.9.0 + add build test report
Version alignment: clawdie-ai 1.0.3 → 0.9.0 (matches clawdie-iso 0.9.0)

Changes:
- package.json: bump version from 1.0.3 to 0.9.0
- Add BUILD-TEST-REPORT-06.APR.2026.md: comprehensive build validation results
  - All 7 stages pass (fetch, metadata, ISO assembly)
  - GPU drivers bundled (nvidia 390/470/590 + AMD + Intel firmware)
  - Privilege escalation: auto-sudo fallback for pkg fetch
  - ISO size: 50 GB (ready for USB deployment)

Test metrics: 13 min build time, 59 packages + deps, zero failures

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  603 passed (603)
2026-04-06 12:37:27 +00:00
7da572428f Bump v1.0.3 and fix skill tmp paths (Sam & Codex)
---
Build: pass | Tests: pass — Tests  603 passed (603)
2026-04-04 12:13:31 +00:00
2e682ae4e0 chore(release): v1.0.2 (Sam & Codex)
- Bump package version to 1.0.2

- Add 1.0.2 changelog entry

---

Build: pass | Tests: pass — 603 passed (44 files)

---
Build: pass | Tests: pass — Tests  603 passed (603)
2026-04-03 09:38:54 +00:00
5e984d385e chore: bump version to 1.0.1
Launcher privilege drop, agent-name-agnostic docs/scripts, screenshot
publish, fresh-install checklist, dual-provider support (C&C).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  605 passed (605)
2026-04-01 22:02:40 +00:00
f798e78634 chore: bump version to 1.0.0
First stable release — agent running in FreeBSD thin jails, Telegram
channel live, split-brain PostgreSQL+pgvector memory, heartbeat watchdog,
subnet migrated to 10.0.1.x for multi-tenant readiness.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  431 passed (431)
2026-03-28 23:30:59 +00:00
e73afafbb2 feat: switch embeddings to OpenAI text-embedding-3-small; add embed-docs.py
- embed-docs.py: new script to batch-embed project docs into klavdija_brain
  (37 docs → 852 chunks with session_id pattern doc:<path>)
- import-memories.py: updated embed() to send Authorization header and
  dimensions=1024 parameter for OpenAI/configurable provider support
- memories-transfer-v2.json: recovered historical session memories (local copy)
- package.json: add @supabase/supabase-js dependency
- src/channels/telegram.ts, src/config.ts: Telegram channel integration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  431 passed (431)
2026-03-28 20:44:09 +00:00
f990d5650e refactor: derive DB identity from AGENT_NAME, drop hardcoded agent refs
- Remove 7 redundant .env vars: DB_NAME, DB_USER, DB_HOST, DB_PORT,
  MEMORY_DB_NAME, MEMORY_DB_USER, MEMORY_DB_URL — all now derived from
  AGENT_NAME by config.ts and common.sh
- Fix DB_HOST in common.sh pointing to .2 (controlplane) instead of .3 (db)
- common.sh: normalise AGENT_NAME → Postgres identifier, same algorithm
  as db-identifiers.ts; embed config now reads from .env instead of
  overriding with stale OpenRouter values
- embed.sh: drop OPENROUTER_API_KEY requirement; use EMBED_BASE_URL +
  EMBED_API_KEY (empty = local llama-server, no auth needed)
- memory-hydrate-pg.sh, memory-lifecycle.ts: replace ai_brain/clawdie_brain
  literals with live DB_NAME / MEMORY_DB_NAME values

Bump to 0.9.1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  431 passed (431)
2026-03-28 08:55:06 +00:00
f7f18146bf chore: bump package.json version to 0.9.0
Fixes version mismatch between git tag (v0.9.0) and package.json (0.8.2).
2026-03-27 07:44:04 +01:00
2ed6245b11 feat(backup): add backup script and restore runbook
npm run backup exports all critical state to a portable tarball:
  - messages.db (SQLite — all chats, tasks, sessions)
  - memory_db.sql + skills_db.sql (pg_dump from db jail)
  - .env, groups/, mount-allowlist.json

Takes ZFS snapshots via hostd before export. Flags:
  --skip-skills   skip skills_db (large, regenerable)
  --output <dir>  write archive to specific directory
  --no-snapshot   skip ZFS snapshots

setup/sanoid.ts: add management jail dataset to snapshot retention policy.
docs/sessions/2026-03-16-backup-restore.md: full restore runbook covering
SQLite, PostgreSQL, ZFS rollback, hardware migration, and cron automation.

---
Build: pass | Tests: pass — 489 passed (48 files)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  489 passed | 10 skipped (499)
2026-03-16 11:17:46 +00:00
bcf97bea2a feat(management): add observability jail at subnet slot .2
Provisions clawdie-management (10.x.x.2) with VictoriaMetrics + Grafana.
VictoriaMetrics scrapes the host /metrics endpoint every 15s; Grafana
ships with a pre-provisioned Clawdie dashboard covering all 12 metrics.

Changes:
  setup/management.ts           — new optional install step
  setup/index.ts                — register 'management' step
  src/jail-config.ts            — management profile + getManagementBastillePlan()
  src/local-hosts.ts            — mgmt.home.arpa entry at .2
  src/metrics.ts                — bind 0.0.0.0 (was 127.0.0.1) so jail can scrape
  setup/pf.ts                   — mgmt_jail variable + block port 9100 on ext_if
  src/controlplane.ts           — optional jail watch (warn, not fail, if absent)
  infra/packages/management-jail.txt — victoria-metrics + grafana10
  bootstrap/management/         — Grafana provisioning YAML + dashboard JSON

Access after setup:
  Grafana:         http://10.x.x.2:3000  (admin / admin on first login)
  VictoriaMetrics: http://10.x.x.2:8428

Bump: 0.8.1 → 0.8.2

---
Build: pass | Tests: pass — 489 passed (48 files)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  489 passed | 10 skipped (499)
2026-03-16 11:01:58 +00:00
3aeb94875d release: v0.8.1 Release Flow
Add npm run release script — creates an annotated git tag from package.json
version and pushes it to Codeberg. Fixes missing tags on Codeberg after
version bumps.

AGENTS.md: document release tagging rule — run only on minor/major bumps,
always confirm with user before tagging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-16 10:17:18 +00:00
04cdb5250e fix: consolidate hooks into hooks/, update AGENTS.md
Move pre-commit hook from .githooks/ to hooks/ alongside existing
prepare-commit-msg. Fix install-hooks script to use `hooks` path.

AGENTS.md: document pre-commit hook (README version sync), fix stale
"16 steps" → 20 steps in Install Orchestrator section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-16 08:10:18 +00:00
b425f1c827 fix: README version, subscription copy, auto-version hook
README Current Release updated to v0.8.0 Warden, simplified to version
line + changelog link so the pre-commit hook only needs to patch one line.

.githooks/pre-commit: reads version from package.json and patches README
on every commit. Run `npm run install-hooks` once per clone to activate.

Main site: "No subscription" → "No platform subscription" — accurate,
since real workflows require LLM API keys (provider cost, not ours).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 08:04:54 +00:00
417418ded6 release: v0.8.0 Warden
Wayland-first display architecture — worker jails now use cage + Chromium
for agent browser automation, no bhyve VM required. Full subnet layout
defined (.1–.10 + .101+ workers). Shared ZFS pkg cache. Wayland stack and
bhyve prerequisites in host baseline by default, no feature flags.

New architecture docs: jail vs Docker IPC, Wayland display model, prompt
injection research with hardening checklist. CNC module section rewritten.
Sponsor link added. Version bump 0.7.2 → 0.8.0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-16 07:09:01 +00:00
ef30559649 feat(setup): add full install orchestrator (install-all)
- setup/install.ts: single-command orchestrator — 16 steps in order,
  ZFS checkpoints at pf/jails/db/git/cms/verify, graceful LLM-absent
  handling, --from resume, --dry-run, LLM provider summary at end
- setup/pi-config.ts: exit(1) only on missing pi binary; missing API
  key is now a warning so install-all continues without an LLM key
- setup/index.ts: register install step (--step install)
- package.json: add "install-all" script (npm run install-all)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-15 11:44:29 +00:00
13497a3cf8 chore: bump version to 0.7.2
Docs redesign release — pastel theme, terminology pass, install
simplification, skills artifact v1 plan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-15 11:36:07 +00:00
b4d9e56b21 release: v0.7.1 — Control Plane Refactoring
0.7.0 — Privileged Host Daemon + PF Web Edge:
- clawdie-hostd: root daemon on /var/run/clawdie-hostd.sock with whitelisted
  Zod-validated op handlers (bastille, zfs, pf, service, pkg, sysrc, sanoid)
- setup/pf.ts: writes /etc/pf.conf with NAT egress + rdr pass 80/443 → cms jail
- src/controlplane.ts: self-healing checks hostd, service jails, PF; repairs via
  hostd; process.exit(1) if db jail still down after fix
- setup/hostd.ts: installs rc.d script, sets clawdie_hostd_enable=YES
- setup/service.ts: tmux session with setup window when PI_PROFILE=setup
- Preflight: 15 steps (pf at position 3, hostd at position 12)
- Removed infra/ansible/playbooks/host-nginx.yaml

0.7.1 — Control Plane Refactoring:
- src/infra.ts → src/controlplane.ts (runControlPlaneChecks,
  CONTROLPLANE_CHECK_INTERVAL_MS, ControlPlaneReport, ControlPlaneCheckResult)
- Watchdog stores lastControlPlaneReport; exposed as controlplane in IPC status
- doctor now queries watchdog IPC: prints WATCHDOG_* and CONTROLPLANE_* lines
- Docs: README simplified, MONITORING rewritten with watchdog/controlplane
  layers, SECURITY updated with hostd in architecture diagram,
  HOST-OPERATOR-MODEL gets privilege delegation section, CMS-DEPLOYMENT-PLAN
  updated with implementation status
- Skills: nginx fully rewritten to cms-jail model; setup + freebsd-admin updated
- All stale src/infra.ts references eliminated

---
Build: pass | Tests: pass — 414 passed (45 files)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)

---
Build: pass | Tests: pass — Tests  414 passed | 10 skipped (424)
2026-03-15 08:51:01 +00:00
78135b1663 feat(setup): add host preflight and protected screenshots 2026-03-14 22:52:09 +01:00
84da962255 chore(release): bump version to 0.6.0 2026-03-14 18:44:51 +01:00
6a811507a9 feat(watchdog): add resource watchdog with run modes and IPC socket
Introduces a Watchdog that sits above GroupQueue and provides dynamic
resource control:

- Run modes: auto / slow / fast / permanent — each with preset
  concurrency limits, idle timeouts, poll intervals, and memory
  thresholds
- Memory throttle: reads vm.stats.vm.v_free_count via sysctl (fallback
  to os.freemem) and drops max concurrency to 1 when free RAM falls
  below mode threshold
- IPC socket at /tmp/<agent>-watchdog.sock — operator can query status
  or switch mode without restarting the service
- GroupQueue.setMaxConcurrent() / getActiveCount() / getQueuedCount()
  for runtime limit control
- Idle timeout and poll interval read dynamically from watchdog; -1 in
  permanent mode suppresses idle-kill entirely
- WATCHDOG_MODE env var sets initial mode (default: auto)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 08:55:28 +00:00
57cacae3a3 feat(setup): add FreeBSD onboarding and baseline sync 2026-03-14 02:51:10 +01:00
d235211c36 docs: align README and web docs with current main 2026-03-14 00:07:42 +01:00
9c82826296 chore: v0.5.0 prep — BSD-3 emphasis, changelog, license page
Version: bump package.json 0.4.0 → 0.5.0, add "license": "BSD-3-Clause"

LICENSE:
- Add NanoClaw credit line: "Built on NanoClaw — Copyright (c) 2024 Peter Steinberger (MIT License)"
- Preserves credit chain in all redistributions per BSD-3 clause 1

scripts/gen-changelog.ts:
- New: generates html/clawdie/changelog.html from annotated git tags
- Parses conventional commit prefixes → colour-coded type badges
- npm run gen-changelog — run after each release tag

html/clawdie/changelog.html:
- Initial generation from v0.3.0 tag (312 commits)
- Regenerate with: git tag -a v0.5.0 -m "v0.5.0 - <name>" && npm run gen-changelog

html/clawdie/license.html:
- BSD-3-Clause explanation: non-endorsement clause, FreeBSD lineage
- PlayStation/Sony (Orbis OS), Apple (Darwin), Netflix, Juniper context
- Why BSD-3 over MIT, NanoClaw compatibility table
- Full license text + what-you-can-do table

html/clawdie/docs/index.html:
- Add "Project" section with Changelog + License cards
- Add BSD-3-Clause row to quick reference table

html/clawdie/index.html:
- Bump version badge v0.4.0 → v0.5.0
- Replace "MIT License" badge with linked "BSD-3-Clause" → /license.html

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 20:37:27 +00:00
fe0dd200a4 v0.4.0: host-first architecture plan, website redesign, name fix
- package.json: rename controlplane → clawdie, bump version to 0.4.0,
  require node >=24
- docs/REFACTOR-PLAN.md: full host-first orchestrator refactor plan
  (orchestrator moves from controlplane jail to host OS; rc.d service;
  provider-agnostic pi setup with free-tier bootstrap path)
- html/clawdie/index.html: redesign to reflect new architecture
  (4-step quick start, removed stale wizard/ecosystem content,
  updated status badge, NanoClaw attribution)
- html/clawdie/guides/, clawdie-eng-v1.md: migrated from live web root
  to repo (single source of truth via symlink)
- PI-ZAI-KEY.md: reference doc for pi provider config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 12:23:59 +00:00
1292449526 v0.3.0 - From Manual Setup to Guided Wizard 🧙
## Headline Features

- Setup wizard: FreeBSD bsdinstall-style TUI for first-time setup
- Project-relative tmp/: No more /tmp usage
- Infrastructure as code: Ansible reads all IPs from .env
- Password-protected-site: Auto-generated htpasswd during wizard

## Attribution

This release was made possible with assistance from:

AI Systems: Openclaw, NanoClaw, z.ai, Anthropic Claude, OpenAI Codex, OpenRouter, Deepseek, Groq, Ollama, pi-tui

Human: Peter Steinberger
2026-03-10 20:35:42 +00:00
2c0fed3b23 Fixing /tmp problem
- Replace /tmp with project-relative tmp/ directory
- Add CLAWDIE_TMP_DIR env var with project-relative default
- Add TMP_DIR, TMP_TESTS_DIR, TMP_IPC_DIR, TMP_SKILLS_DIR to config.ts
- Update all test files to use TMP_TESTS_DIR
- Update shell scripts to use project-relative tmp/skills/
- Update agent-runner IPC cleanup to use /workspace/ipc/input.json
- Update Ansible playbooks to use env vars with fallbacks
- Add CMS resource limits
- Add jail-resource-limits.yaml playbook
- Add setup-wizard.ts (FreeBSD bsdinstall-style TUI)
- Add network.ts bootstrap step
- Remove hardcoded public gateway IP
2026-03-10 15:11:36 +00:00
b6c7ca6399 Internal IP and domain redesign
Replace all hardcoded IPs (192.168.100.x) and domains (clawdie.si)
with configurable placeholders. Real values now live exclusively in
.env (gitignored).

Network: code defaults to 10.0.0.x, configurable via WARDEN_SUBNET_BASE,
WARDEN_GATEWAY, WARDEN_CONTROL_PLANE_IP env vars in jail-config.ts.

Domain: code defaults to clawdie.local, configurable via CLAWDIE_DOMAIN
env var. Subdomain scheme: controlplane/db/cms/gui.{domain}.

Also includes PGVector Phase 0 prep:
- Created ai_brain database with pgvector extensions
- Added pg + @types/pg npm packages
- Added CLAWDIE_DB_URL to .env
- Renamed db from 'clawdie' to 'ai_brain' across Ansible and docs
- Resolved embedding model: OpenRouter text-embedding-3-large at 1536d
- Added docs/pgvector-install-log.md

Renamed ai.clawdie.si → controlplane.{domain} (more descriptive).
Renamed vm.clawdie.si → gui.{domain}.

76 files updated across source, tests, skills, docs, Ansible, and scripts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 09:21:44 +00:00
Clawdie
f4d4f28d23 Release 0.2.0 milestone 2026-03-08 20:11:24 +01:00
Clawdie
daa3d1256b Fix VNET gateway provisioning and bump version 2026-03-08 17:38:07 +01:00
Clawdie
609673f2b8 Rename root package to controlplane 2026-03-08 14:31:12 +01:00
Clawdie
54fcd7fdd5 Add runtime health tracking and doctor command 2026-03-08 09:58:58 +01:00
Clawdie
a80ec0664c Replace WhatsApp setup with Telegram auth 2026-03-07 23:08:14 +01:00