Hermes Mac Mini Agent OS

Kevin's intended personal agent OS is a Mac Mini M4 Pro running Hermes as the persistent operator, Hindsight as the selected external long-memory candidate after admission proof, Honcho as separately scoped profile modeling, qmd/Obsidian as canonical truth, agent-browser as the browser substrate, and ACP/SSH workers for software-factory execution.

Decision

Use the Mac Mini M4 Pro 48GB as the default always-on local operator box. The older M1 Mac Mini is only a prototype lane; the M4 Pro has the headroom for local models, browser sessions, embeddings, memory services, and continuous monitors without making every cron job fight the same resources. Source: User request, 2026-07-04

Hermes is the persistent runtime. Codex, Claude Code, OpenCode, local MLX models, browser tools, launchd timers, qmd, Raindrop, Last30Days, and messaging channels are subsystems around it. The architecture goal is not "one mega-agent does everything." The goal is a calm operator that knows when to use no-agent scripts, when to wake a reasoning model, when to delegate coding work, and when to write durable knowledge back to the wiki.

Agent Environment Setup Architecture now owns how this appliance differs from a managed work computer and an isolated cloud worker. Agent Environment Bootstrap Workflow owns reproducible installation, independent install/config/auth/health state, proof, recovery, and drift review. This page remains the runtime composition for the Mac mini profile.

Component Map

Layer Recommended component Role
Machine Mac Mini M4 Pro 48GB Always-on Apple ecosystem box with local model and browser capacity.
Persistent operator Hermes Agent (Nous Research) Gateway, cron, memory, skills, approvals, messaging, ACP/API entry points.
Main coding model GPT-5.5 High through Codex OAuth Highest-stakes coding and review lane when available.
Local long-context lane Qwen3.6-35B-A3B in LM Studio / MLX Private/background work and long-context local reasoning; verify local catalog before pinning automation.
Aux/local cheap lane Qwen3-8B Fast triage, transforms, summaries, and low-stakes helpers.
Fallback coding workers OpenCode Go with GLM/Kimi/DeepSeek-class providers Auxiliary workers and alternate model opinions.
Runtime memory Hindsight Memory Provider Selected external-memory candidate for hybrid recall and explicit reflection after pinned install, model/data-path, bank, doctor, leakage, usefulness, and recovery proof.
User/profile model Honcho Peer/user/project modeling via MCP/SDK or separate profile.
Canonical brain Obsidian + QMD - Local Wiki Search Engine / Kevin-Wiki Durable source of truth, search, links, logs, skills, routing, automations.
Browser substrate Browser Testing Skills with logged-in Chrome Default browser automation surface for agents.
Coding-worker protocol Agent Client Protocol over local/SSH paths Standard boundary for Codex/Claude/OpenCode-style workers.
Comms surface Telegram topic threads, Hermes Desktop over SSH tunnel Primary ops console plus rich local control.
Schedulers launchd timers + Hermes cron No-agent monitors first; agentic jobs only when reasoning is needed.

Herdr is an evaluation candidate for the terminal-session control surface, not a replacement for Hermes. If adopted, it can organize concern-based workspaces and expose persistent agent-session status while Hermes continues to own the operator, messaging, cron, memory, and delegation layers. Its license and overlap with tmux and the Agent Machines browser console require an explicit trial decision. Source: X/@KKohey4, 2026-07-16; ogulcancelik/herdr v0.7.4 review, 2026-07-16]

Hermes docs support this role split: one gateway process can connect messaging platforms, handle sessions, run cron jobs, and deliver voice/messages; cron can run fresh agent sessions or no-agent script jobs; Hermes also exposes ACP and API-server programmatic entry points. Source: Hermes messaging docs, 2026-07-04; Source: Hermes cron docs, 2026-07-04; Source: Hermes programmatic integration docs, 2026-07-04

Memory Architecture

Use four memory layers with explicit ownership:

Layer Owner Rule
Session/runtime recall Hermes built-in memory, session search, and Hindsight Fast operational recall inside Hermes.
Long-memory provider Hindsight Memory Provider Intended external provider for hybrid recall, entity/temporal relationships, and explicit reflection only after the admission gate passes.
User/profile modeling Honcho Separate peer/user model for preferences, identity, projects, and agent continuity.
Durable truth Kevin-Wiki + qmd + Obsidian Canonical facts, decisions, procedures, and links.

Hermes supports external memory providers such as Honcho and Hindsight for cross-session modeling and personalization. Hindsight specifically brings knowledge-graph recall, entity resolution, multi-strategy retrieval, and hindsight_reflect. Source: Hermes features overview, 2026-07-04; Source: Hermes memory providers docs, 2026-07-04

The recommended target configuration is Hindsight in the external Hermes memory slot, backed by a declared local or self-hosted service lane separate from local model inference. Do not call that target active until the exact database, model, embedding/reranker, harness wiring, bank map, doctor, leakage tests, fixed-corpus comparison, and fresh-target export/replay are recorded. Honcho should be attached as a profile/modeling layer through MCP/SDK, a separate Hermes profile, or a deliberate bridge. This avoids a split-brain profile where two memory systems both silently answer "who is Kevin?" with different derived models.

Durable writeback rule: Claude Code and Codex sessions syncing every 30 minutes should produce candidate memories or summaries, but only wiki pages, skills, automations, config, logs, and qmd embeddings are canonical. Runtime memory that changes future behavior must be promoted.

Browser Control

Use Browser Testing Skills with logged-in Chrome as the default browser automation surface. Agent-browser is designed for agent command loops: compact text output, ref-based snapshots, 50+ browser commands, session/profile/auth state, screenshots, network/storage/file/tab/frame/debugging commands, Chrome/Lightpanda engines, and compatibility with Codex, Claude Code, Cursor, Gemini, OpenCode, and shell agents. Source: agent-browser docs, 2026-07-04

Playwright stays in the stack as the regression ratchet: write committed tests when a behavior should gate every PR. Puppeteer stays only for legacy repos, browser-rendering substrates, or vendor APIs that require it. For day-to-day agent browsing, form fills, screenshots, site checks, web app QA, LinkedIn/FT/Economist/YouTube flows, and logged-in Chrome work, start with agent-browser.

Security defaults:

export AGENT_BROWSER_CONTENT_BOUNDARIES=1
export AGENT_BROWSER_ALLOWED_DOMAINS="example.com,*.example.com"
export AGENT_BROWSER_MAX_OUTPUT=50000

Use domain allowlists and explicit confirmation for account-mutating actions such as posting, deleting, purchasing, emailing, or sending messages.

Interfaces

Telegram topic threads should be the primary operator console because they map cleanly to ongoing work lanes: monitors, source feeds, project loops, social intake, finance/news, coding queues, and personal reminders. Hermes supports Telegram bots with text, voice, images, files, group chats, scheduled results, and voice transcription. Source: Hermes Telegram docs, 2026-07-04

Hermes Desktop over an SSH tunnel is the rich local control surface. Discord and WhatsApp stay useful secondary channels; WhatsApp is personal-account convenient but carries the usual bridge/session risk. Terminal and hermes send are the scripting surface: hermes send can deliver script output to platform targets and usually does not need the gateway running for bot-token platforms. Source: Hermes pipe-script docs, 2026-07-04

Information Intake

Default rule: summaries are enough for most items. Delete most buffer items on first encounter. Deeply engage with a few things that are new, useful, or genuinely enjoyable. Source: User request, 2026-07-04

Source Handling
Feeds, blogs, Substacks, HN, repos Poll regularly, add interesting items to Raindrop, summarize, keep last-30-day view.
Internet articles Kevin adds to Raindrop; Hermes summarizes and triages.
YouTube Watch Later agent-browser/Chrome summarizes and updates the review site.
Economist / Financial Times agent-browser/Chrome browses periodically, adds likely-interesting articles to Raindrop, summarizes daily.
X BirdClaw + Last30Days digest every few hours: interesting items, reply candidates, durable captures.
LinkedIn agent-browser/Chrome digest twice daily: stats, notifications, messages, and response candidates.

The intake pipeline should delete aggressively. The buffer is optionality, not homework.

Orchestration

Use launchd timers for standalone monitors when the script can decide whether to post. Hermes no-agent cron has the same principle: a script runs, stdout is delivered, empty stdout stays silent, and no LLM call happens. Source: Hermes no-agent cron docs, 2026-07-04

Use agentic Hermes cron only when summarization, ranking, judgment, drafting, or decomposition is the job. For the software factory loop, Hermes should triage requests into a Kanban lane, decompose them, start coding workers over ACP/SSH, collect receipts, and write reusable lessons back to the wiki or skills.

Invariants

  • qmd/Obsidian/Kevin-Wiki is canonical; runtime memory is not.
  • Hindsight is the selected external-memory default after its admission gate passes; architecture intent alone never proves it active.
  • Honcho is profile modeling, not a silent second canonical user profile.
  • agent-browser is the default browser work surface; Playwright is the committed regression-test surface.
  • launchd/no-agent jobs should not spend tokens when a deterministic script can decide.
  • Every monitor posts into a named thread or writes a durable output; no silent "maybe it ran" state.
  • Any worker that changes files, posts publicly, mutates accounts, or spends money needs proof and a cancel/approval path.

Proof Checklist

Before calling the stack operational:

  1. hermes config check passes on the Mac.
  2. hermes send --list shows intended Telegram/Discord/other targets.
  3. hermes acp --check passes for coding-worker integration.
  4. Hindsight setup is pinned; API/database, extraction/reflect model, embeddings, reranker, and local/cloud egress are documented without secrets; per-user/repo banks, strict tags, leakage tests, fixed-corpus usefulness, and fresh-target export/replay pass.
  5. Honcho MCP/SDK or separate profile boundary is explicit.
  6. agent-browser doctor passes and logged-in Chrome access is tested on a harmless page.
  7. launchd timers have names, logs, and target threads.
  8. Session sync writes candidate summaries, and durable promotions land in the wiki.

Timeline

  • 2026-08-11 | Reconciled the intended Mac mini composition with actual machine state after the Hindsight v0.9.0 replay. Hindsight remains the selected external-memory default but is no longer called active without pinned install, independent model/data-path declaration, bank scope, doctor, leakage/usefulness comparison, and fresh-target recovery proof. Source: X/@itsharmanjot; vectorize-io/hindsight@d7c33fde; local capability audit
  • 2026-07-16 | Linked the Mac mini runtime to the three-profile setup architecture and bootstrap workflow; added Herdr as a bounded terminal-session evaluation candidate rather than a Hermes replacement. Source: User request; Private Discord message 1527365865501229176; X/@KKohey4, 2026-07-16
  • 2026-07-04 | Created from Kevin's requested Hermes operator stack: Mac Mini M4 Pro 48GB, local/Qwen lanes, Codex/OpenCode workers, Hindsight as the intended external-memory provider, Honcho profile modeling, Telegram topic gateway, Hermes Desktop over SSH, launchd/no-agent monitors, agent-browser as default browser substrate, and qmd/Obsidian as canonical memory. The 2026-08-11 replay added the admission proof required before calling Hindsight active. Source: User request, 2026-07-04