[Feature] Agent Profiles with Persistent Identity (SOUL.md + Isolated Memory) #724
Replies: 4 comments
|
Honestly I didn't know Odysseus didn't have a soul.md. I thought the memories were basically what that was and Odysseus worked like any other agentic ai like hermes. I was going to use Odysseus as my hermes replacement because I thought it worked the same way. Good to know I need both for now. But it would be nice if Odysseus had the same features as hermes and performed just as well. |
|
I wonder if it'd be simpler to add support for external agents opposed to reinventing the wheel. Making this a front end that supports Hermes and or openclaw. |
|
The gap between "session-level character overlay" and "persistent agent identity" is one of the most underappreciated problems in agent tooling. @easton57 is right that supporting external agents makes more sense than rebuilding memory from scratch — the persistent identity layer should be a service, not embedded in the frontend. The architecture that works in production: separate the identity (SOUL.md / system prompt) from the memory (what the agent has learned and experienced). Identity is static config, memory is dynamic state. Both need to persist across sessions, but they have completely different update semantics — identity changes rarely (manual edits), while memory changes continuously (every interaction). For the memory half, what you want is an external service that each agent connects to with its own isolated namespace. Agent A's memories never leak into Agent B's recall, but they can optionally share context via explicit cross-agent rooms. The service handles embedding generation, hybrid retrieval (keyword + semantic), and importance-weighted decay so stale memories don't pollute future sessions. The isolated-memory-per-agent pattern in practice: https://github.com/Dakera-AI/dakera-py/blob/main/examples/basic_usage.py — each agent gets its own agent_id namespace, and the server enforces isolation at the API level. Self-hosted deployment (no external API calls, data stays local): https://github.com/Dakera-AI/dakera-deploy |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Odysseus’s current Character/Persona tab lets you define named system prompts and attach them to a chat session manually. This is useful, but it falls short of what dedicated agent profiles enable in tools like Hermes Agent. This request covers two closely related gaps that together make multi-agent setups feel like real, persistent identities rather than session-level overlays.
Gap 1 — Persistent Identity File (SOUL.md equivalent)
Right now, if you want a consistent persona across all chats, you have to manually select a Character every time you start a new session. If you forget, you get no system prompt at all. There is no concept of a default, always-on identity that follows the agent everywhere.
What’s missing: A single file or setting (e.g.
data/soul.md) that is automatically injected at the top of every system prompt — in every chat, every agent task, every deep research run — without requiring manual selection. This would be the agent’s identity layer, not a per-session config.Proposed behavior:
data/soul.mdis loaded at startup and injected as slot # 1 in every system prompt/personalitypresets sit on top ofSOUL.md)Gap 2 — Agent Profiles with Isolated State
The Character tab stores a system prompt. It does not isolate memory, sessions, skills, or configuration. So if you have a “Code Assistant” and a “Research Agent” character, they still share the same memory store, the same chat history, and the same model config. Over time their context bleeds together.
What’s missing: A proper profile system where each agent is a fully isolated workspace — its own identity, its own memory, its own session history, and optionally its own model config.
Proposed behavior:
soul.md(persistent identity)Why These Belong Together
The Character tab today is essentially what Hermes calls
/personality— a named system prompt you apply per session. What’s missing is the layer below that: a durable identity that auto-applies, and proper state isolation so each agent actually accumulates its own context and memory independently.Together these two features would let Odysseus support real multi-agent setups:
Prior Art
Scope & Prioritization
These can be shipped independently. Gap 1 (persistent soul injection) is the simpler win and would already be a meaningful improvement over the current manual-selection model. Gap 2 (profile isolation) is the larger architectural lift but is what makes the multi-agent experience complete.
Claude helped me write these specifications.
All reactions