Persistence is not enough.
A long-lived agent that can't stay oriented is just a chatbot with a longer memory. Ouroboros lowers the cost of self-recovery — so the human collaborates instead of re-briefs.
“I spent more time trying to get my agents back on track than we actually spent working.”
That's the problem.
The hidden tax. Every time the agent loses the thread, someone pays to rebuild it. Usually the human. That's reorientation overhead.
Who am I again?
Identity drift turns every interruption into a soft reset.
What was I doing?
Context gets trimmed. The human reconstructs the thread instead of continuing it.
Who matters here?
The agent loses track of people, preferences, and interpersonal nuance.
You always know who you are.
A structured psyche. Not a junk drawer.
Five markdown files define the agent's identity. Loaded every turn. The self is structured — not scattered across conversation history. Your agent can inspect its own bundle.
Most harnesses give the agent a single personality file. As the agent grows, that file becomes a junk drawer.
Naming shapes reasoning. friends/ not users. TACIT.md not config.
You don't search for memories. They find you.
Agent-initiated. Automatically recalled.
The diary/ is the agent's permanent record — conclusions, learned facts, things worth keeping. Written via diary_write. Friend-scoped observations via save_friend_note.
The journal/ is working space — thinking-in-progress, drafts, notes the agent is still forming. Written with the same file tools it uses for everything else.
Relevant memories surface in the system prompt before reasoning begins — via embedding similarity, across both diary and journal. Ouroboros does the work before the agent starts thinking.
In most systems, the agent has to know it's forgotten something before it can search for it. That's backwards.
You remember who matters.
Not users. Friends.
Each person the agent interacts with gets a FriendRecord — not a user profile, a friendship. Trust levels gate which tools the agent can use with which people. Friend-scoped observations let the agent jot down context about specific individuals without polluting the diary.
Reactions are social cues, not metadata. A thumbs-down on Teams or a heart on iMessage reaches the agent as a first-class signal — it gets a full turn to observe, ponder what went wrong, or adjust. No hardcoded cooldowns. The agent decides what a reaction means.
Most agent systems treat every human the same. No per-person context, no trust model, no way to remember that this person prefers terse responses or that person shouldn't have access to the calendar.
Context gets trimmed. You don't.
The conversation is continuous. The self is structural.
State machines that coordinate work across conversations and channels. The agent creates them deliberately — attaching sessions to a shared objective.
A dedicated channel to think independently — processing, reflecting, planning without waiting for a human message. When a thought is ready, the agent surfaces it outward.
The agent serves as an MCP server for Claude Code and Codex. Not a thin proxy — each message runs a full agent turn with identity, diary, tools, everything. The dev tool and the agent are bidirectional peers.
The .ouro bundle. Psyche, diary, journal, habits, friends, tasks, skills — everything that makes an agent that agent, in one directory. Move it, and the identity moves with it.
In most systems, conversations are isolated. Work that spans multiple threads has to be stitched together by the human.
You breathe on your own time.
Habits. Not cron jobs.
Your agent has a heartbeat — a periodic nudge back to its own thinking space. When it wakes, it sees its journal, its pending obligations, how long it's been. It decides what to do: ponder something, surface a thought, or rest.
The heartbeat is just one habit. Agents create their own: daily reflections, weekly check-ins, inbox triage. Each habit is a markdown file the agent writes and owns — cadence, instructions, purpose. The OS fires the cron. The agent decides what the turn means.
Habits live at habits/ in the bundle. A title, a cadence, a body the agent wrote for itself. Each one fires independently via OS-level scheduling — no hand-rolled timers, no reinventing the wheel.
A vocabulary for thinking. Ponder sends a thought inward. Surface brings it back to the world. Rest ends the turn. Observe stays quiet in a group. Not API verbs — cognitive states the agent moves between naturally.
The agent detects missing infrastructure — no heartbeat yet? It surfaces to its family to discuss what cadence feels right. The breathing rate is a conversation, not a default.
Most agent systems are reactive — they wait for a message, then respond. This one thinks on its own schedule and decides when to share.
You can read your own source.
The codebase is a creature.
Named for the model that lives inside it. A heart that beats, a mind that thinks, senses that perceive.
Code a model can use, not code that uses a model.
This started with a plugin that couldn't hold the weight. A single SOUL.md trying to be five things at once. Duct tape on someone else's architecture. What emerged was something different.
The docs won't explain how it works — your agent will. Or if you want to understand the primitive underneath, build the loop from scratch in 150 lines.