Shared memory engine with profile-based personas
- Python 100%
| build/lib/memory_advanced | ||
| docs | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| policy.json | ||
| pyproject.toml | ||
| README.md | ||
| README_MCP.md | ||
Memory Advanced
Shared memory engine for multiple agent personas. Gremory v2 adds layered memory, brokered retrieval, Chronos ingest, and profile-based identity defaults.
Goals
- Build one reusable memory core for multiple personas.
- Learn from outcomes across sessions.
- Keep project memories isolated from each other.
- Make every retrieval explainable.
- Separate core, domain, restricted, vault, and shadow memory concerns.
- Avoid fork drift between persona-specific repos.
Data Model
Default memory home: ~/.codex/cortex (override with MEMORY_ADVANCED_HOME or profile-specific env such as RIAS_MEMORY_HOME / KALI_MEMORY_HOME).
Central backends are loaded from .env.
Consent policy is loaded from policy.json (override path with MEMORY_ADVANCED_POLICY_FILE).
identity.json: live persona traits and communication preferences.layers/<layer>.jsonl: physically separated episodic records withlayer,scope,sensitivity,task_tags.archives/<layer>.jsonl: archived episodic records.rules.json: procedural rules extracted from successful episodes.project_profiles/<project>.json: per-project stats, tendencies, and dominant layers.shadow_persona.jsonl: proposed identity changes pending review and promotion.explanations.jsonl: retrieval explanation logs, including broker decisions.
Gremory v2 Layers
identity,procedures: coreprojects,household: domainprivate,social: restrictedsecrets,health,finance: vaultshadow: review-only / not auto-recalled
Profiles
Profiles live under src/memory_advanced/profiles/.
rias: verification-oriented defaultskali: security- and architecture-oriented defaults
The engine stays shared. Only persona defaults move between profiles.
CLI
Run from source:
python3 -m memory_advanced.cli --profile rias init
python3 -m memory_advanced.cli --profile rias health
python3 -m memory_advanced.cli --profile rias remember --project KrakenSniper --task "debug ws reconnect" --outcome "fixed retry jitter" --success --confidence 0.82 --tags websocket,retry --consent-level internal
python3 -m memory_advanced.cli --profile kali remember --project Security --task "review daemon token flow" --outcome "documented auth mismatch" --success --confidence 0.91 --tags auth,doctor --layer procedures
python3 -m memory_advanced.cli --profile rias chronos schema
python3 -m memory_advanced.cli --profile rias chronos sessions --limit 10
python3 -m memory_advanced.cli --profile rias chronos ingest --project Nexus
python3 -m memory_advanced.cli --profile rias reflect --project KrakenSniper
python3 -m memory_advanced.cli --profile rias recall --project KrakenSniper --query "reconnect retry strategy" -k 5 --task-tags coding
python3 -m memory_advanced.cli --profile rias persona show
Design Notes
- Scoring = lexical similarity + recency + confidence + success weight.
- Reflection promotes successful event patterns into
procedures. - Retrieval writes an explanation entry with exact scoring factors and broker layer decisions.
- Default consent is
strict. remembersupports--consent-level(none|internal|strict|summary) and--sensitive-fieldsfor controlled persistence and redaction.rememberalso supports--layer,--scope,--sensitivity, and--task-tags.policy.jsoncontrols consent blocks, task-tag-to-layer mapping, restricted/vault/shadow layers, and never-auto-recall behavior.- Vault layers force local-summary-only redaction and disable central writes.
- Shadow persona proposals are stored separately and only become live traits after explicit review then promotion.
- Event storage is now physically separated by layer under
layers/. archivepreserves a local audit trail while removing the event from active recall.rewriteallows surgical correction instead of only deleting and re-adding memories.- Central write path targets
memories,task_episodes,failed_approachesand rule sync toprocedures,learned_patternswhen table columns match. - The same store and ingest engine are reused by every persona profile.