--- source: raw/personal-os-state-2026-04-27.md content_hash: 1640cb63145b49263b9476e2c39fe443ac561fdf6c27faccc50cfc8568552614 namespace: work last_synced: 2026-05-29 confidence: 0.8 tags: [personal-os, state, architecture, hermes, executor] --- # Personal OS — State Snapshot (2026-04-27) Supersedes `state-2026-04-27.md` and `personal-os-plan-v3.md`. Reflects the catch-up plan executed on 2026-04-27. See [[personal-os-catchup-plan-2026-04-27]] for the deliverables that produced this state. ## What's built ### Infrastructure - **PostgreSQL** on Mac — see [[personal-os-schema]] for tables. - **`sync.js`** — 4-source Asana fetch (`my_tasks`, `following`, `delegated`, `project:*`), incremental deltas, `sweepRecentlyCompleted()`. - **`generate-status.js`** — DB → `status.md` + `asana_context.md`. `possibly_deleted` filter fixed; now also writes advisor + visibility + executor queue blocks, and the quadrant column on `activity_daily`. - **ActivityWatch** — DDG browser watcher + Xcode watcher running. - **Hermes v0.11.x** — launchd daemon `ai.hermes.gateway`, Claude Code OAuth, model `claude-sonnet-4-6`. - **Discord bot Орёл#0898** — no @-mention needed. Channels: `#daily-brief #inbox #focus #executor #projects #journal #retrospector`. ### Hermes cron schedule | Job | Schedule | Channel | |-----|----------|---------| | data-pipeline | */30 7–21 workdays | silent | | morning-brief | 08:30 workdays | #daily-brief | | eod-summary | 18:00 workdays | #daily-brief | | inbox-check | */30 9–19 workdays | #inbox | | weekly-plan | Mon 08:00 | #daily-brief | | weekly-review | Fri 17:00 | #daily-brief | | retrospector | Fri 17:30 | #retrospector | | commit-vault | 23:00 daily | silent | ### launchd agents (fire on wake) - `personal.os.heartbeat` — `:05` hourly. Reads `jobs.json`, fires any missed once-per-day Hermes jobs. - `personal.os.wiki-ingest` — 22:00 daily. `claude -p` subprocess writes `~/obsidian/wiki/`. See [[wiki-ingest-process]]. ### Scripts - `run-pipeline.sh`, `run-wiki-ingest.sh`, `commit-vault.sh`, `hermes-heartbeat.sh`. ### Vault layout (`~/obsidian/`) - `wiki/` — mix of LLM-generated and `confidence: 1.0` human notes. - `raw/` — symlinks to source files for ingest. - `work/`, `personal/` — Eagle write-allowed; `family/` exists. - Git remote on ZFS data pool: `ssh://truenas_admin@mallexxx.duckdns.org/mnt/RED_2TB/storage/git/obsidian-vault.git`. ### Agent prompts (`~/Developer/personal-os/agent/prompts/`) `daily-brief.md`, `weekly-plan.md`, `weekly-review.md`, `inbox-triage.md`, `generate-status.md`, `wiki-ingest.md`, `executor-bug-fix.md`, `executor-td-review.md`. ### Retrospector (Phase 3 — live) Friday-only. Surfaces: correction patterns (3+ times), velocity vs scope, vault git activity, exactly one decision question. ## What's not done | Item | Status | |------|--------| | Phase 2-family (VPS, family Hermes, iCloud sync) | Deferred until after Phase 4 | | `work/projects/` notes | Empty — Eagle fills on first use | | Executor v2 end-to-end live run | Prompt written, not tested on real task | | MS365 MCP in Hermes | Cloud connector works in Claude Code; no local npm package | Catch-up plan 2026-04-27 items 1, 3–10 ✅; item 2 (MS365) 🟡. ## Executor v2 — architecture summary User-initiated in `#executor` ("fix [task]"), scheduled via Friday weekly-review, or status-driven via `## ⚡ Executor Queue`. Worker spawns in a Discord thread, streams progress, opens a **draft** PR assigned to Alex (never tags humans), runs a CI polling loop (every 10 min, max 3 auto-fix attempts). Full state machine in `executor_runs` table. See [[personal-os-catchup-plan-2026-04-27]] for design rationale. Worktrees live at `~/DuckDuckGo/apple-browsers.git/.claude/worktrees/executor-{gid}-{slug}/`. Scheme: `DuckDuckGo macOS` in `.xcworkspace`, `xcbeautify` required. UI tests via `ddg-vm` MCP (VirtualBuddy). ## Decisions divergent from plan v3 1. Wiki-ingest moved from Hermes cron → launchd subprocess (needs local FS access). 2. `personal-wiki` MCP replaced with `obsidian-mcp` — DB tables dropped. 3. Single `personal.os.heartbeat` instead of per-job launchd plists. 4. Retrospector extracted from weekly-review → own prompt, cron, channel. 5. NAS git path moved to `/mnt/RED_2TB/storage/git/` (ZFS data pool, not boot pool). 6. Phase 2-family deferred until after Phase 4. 7. Executor v1 prompts manual-only with STOP gates (v2 adds autonomy). 8. wiki-ingest rewritten file-based (SHA256 in frontmatter) — DB tables superseded. ## Known issues / tech debt - Morning brief never smoke-tested (medium). - Executor v1 prompts manual-only — replace with v2 (medium). - `wiki-ingest` uses `claude -p` without `--allowedTools` (low). - NAS SSH key still in boot pool `/home/` — must move to `/mnt/RED_2TB/` before next TrueNAS update (**high**). - Hermes memory `~/.hermes/memory/` not backed up. ## Key Points - Postgres + Hermes + launchd + Obsidian vault are the four pillars; everything extends one of those. - All 10 catch-up items shipped except MS365 MCP in Hermes (cloud-only). - Executor v2 = single STOP gate at Analysis, then autonomous draft PR + CI loop. - Boot-pool-vs-data-pool distinction matters: persistent data must live under `/mnt/RED_2TB/`. ## Related [[personal-os-catchup-plan-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]]