Hermes Mac Mini Agent OS
Kevin's recommended personal agent OS is a Mac Mini M4 Pro running Hermes as the persistent operator, Hindsight as active long memory, Honcho as 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.
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 | Active Hermes long-memory provider with graph recall and reflection. |
| 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. |
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 | Active Hermes provider for graph recall, entity resolution, multi-strategy retrieval, and reflection. |
| 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 configuration is Hindsight as the active Hermes memory provider, backed by local PostgreSQL on a separate service lane from local model inference. 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. |
| 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 active Hermes long-memory provider unless a new memory-provider decision supersedes it.
- 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:
hermes config checkpasses on the Mac.hermes send --listshows intended Telegram/Discord/other targets.hermes acp --checkpasses for coding-worker integration.- Hindsight setup is selected and local/cloud mode is documented without secrets.
- Honcho MCP/SDK or separate profile boundary is explicit.
agent-browser doctorpasses and logged-in Chrome access is tested on a harmless page.- launchd timers have names, logs, and target threads.
- Session sync writes candidate summaries, and durable promotions land in the wiki.
Timeline
- 2026-07-04 | Created from Kevin's requested Hermes operator stack: Mac Mini M4 Pro 48GB, local/Qwen lanes, Codex/OpenCode workers, Hindsight active memory, 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. Source: User request, 2026-07-04