Workflow Patterns

Personal OS

A personal operating system built from goals, memory, schedules, and daily review.

Personal OS

What it is

A personal operating system built from goals, memory, schedules, and daily review.

In plain terms

Think of a substitute teacher handed the same class notebook every day, no matter which room she’s covering: she greets each student by name and picks up where yesterday’s lesson left off, because she reads that notebook before the bell rings, not from her own memory of being there. Personal OS gives an AI assistant that same continuity of identity across every conversation and automated task — plus a shared memory of what it knows about you and what’s coming up that follows you through your interactive chats, though scheduled automated jobs are deliberately kept from touching those personal notes.

Why it matters

Three separate mechanisms combine to make this pattern feel like an OS: MemoryManager (agent/memory_manager.py) orchestrates a built-in note store plus one external provider, prompt_builder.py’s load_soul_md() pulls an operator-authored SOUL.md into every session’s identity slot, and cron/scheduler.py ticks every 60 seconds against jobs that carry their own prompt. A cron run still inherits SOUL.md (load_soul_identity=True) even though it explicitly skips the note store (skip_memory=True) to avoid corrupting user representations — so identity persists everywhere, while notes stay scoped to interactive chat.

How it works

Two separate mechanisms combine to give Hermes this continuity. The built-in note store (tools/memory_tool.py) reads MEMORY.md and USER.md once when a session starts and freezes that content into the system prompt — mid-session the model can only add to it by explicitly calling the memory tool to add, replace, or remove an entry, never automatically. Alongside that, MemoryManager (agent/memory_manager.py) manages at most one external memory-provider plugin (Honcho, Mem0, Hindsight, and similar) — a second attempt is rejected outright, and no provider may register a tool name that shadows a core Hermes action like clarify. When an external provider is configured, its prefetch() call runs at the start of a turn to pull in anything relevant before Hermes replies, and its sync_turn() runs on a background worker thread once the turn ends — writes are serialized through a single worker so turn N always lands before turn N+1.

A concrete example

Say you tell Hermes over lunch, in an ordinary chat, that your father’s birthday falls in April, and it decides the fact is worth keeping — it calls the memory tool to add a line to USER.md. A week later, in a brand-new chat, that file is read fresh at session start and baked straight into the system prompt, so when you ask what’s coming up for family this month, Hermes already has the birthday in view without a separate lookup. A scheduled Monday digest job, by contrast, opens with the same SOUL.md identity as any chat session but is started with skip_memory=True — it never loads or writes MEMORY.md or USER.md at all, so it can remind you about a weekly meeting but has no way to bring up April.

How it connects

This note belongs to the Workflow Patterns family. Its closest neighboring concepts are: Agent Team Delegation, Daily Priority Ritual, Agent Runtime.

Source evidence

  • vendor/hermes-agent/agent/memory_manager.py:505-515#MemoryManager.prefetch_all — Verified Source Map evidence for MemoryManager. MemoryManager calls prefetch on each registered provider in order, skips empty results, isolates individual provider failures, and merges the remaining text.
  • vendor/hermes-agent/toolsets.py#<file> — Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.

Workflows

  • Daily Priority Ritual
  • No article currently mentions this concept by name/alias often enough to qualify (see mention-mining policy).