Skip to main content

OMPA

Universal AI Agent Memory Layer

Vault · Palace · Temporal Knowledge Graph

CI PyPI Downloads Python License Coverage Ruff MCP Tools


Obsidian-MemPalace-Agnostic — Give any AI agent persistent memory in one pip install. Works with Claude Code, OpenClaw, Codex, Gemini CLI, LangChain, or any custom agent.

pip install ompa
ao init && ao session-start

96.6% R@5 on LongMemEval using verbatim storage — no summarization loss, no API cost for search.


Why OMPA?

Every AI agent starts empty every session. Important decisions get lost. Context grows expensive. Summaries lose nuance.

OMPA solves all three:

Problem OMPA's Answer
Lost decisions Vault — every significant event persisted as markdown
Expensive context 5 lifecycle hooks with token budgets (~2K at start, ~100 per message)
Summarization loss Verbatim storage — proven 96.6% R@5 on LongMemEval
Framework lock-in Works with any Python agent, any LLM
API cost for search Local sentence-transformers — zero per-query cost

Three-Layer Architecture

flowchart TB
    agent(["🤖 AI Agent"])

    subgraph vault["Layer 1 · Vault"]
        v["brain/ · work/ · org/ · perf/\nhuman-navigable markdown notes"]
    end

    subgraph palace["Layer 2 · Palace"]
        p["wings → rooms → drawers\nhalls · facts · events · tunnels"]
    end

    subgraph kg["Layer 3 · Knowledge Graph"]
        k["subject → predicate → object\nSQLite · validity windows · timeline"]
    end

    agent <-->|"session_start · user_message · stop"| vault
    vault <--> palace
    palace <--> kg
Layer What it stores Who reads it
Vault Markdown notes — decisions, incidents, wins, learnings Humans + agents via ao search
Palace Structured metadata — wings, rooms, drawers, fact halls Agent retrieval acceleration
Knowledge Graph Temporal triples with validity windows ao kg-query — any entity, any point in time

Quick Start

1. Install

pip install ompa          # Core only
pip install ompa[all]     # Includes local semantic search

2. Initialize a vault

ao init              # Create vault structure
ao status            # Verify everything looks good

3. Use in a session

ao session-start                              # ~2K token context injection
ao classify "We decided to go with Postgres"  # Routes to right folder automatically
ao search "authentication decisions"          # Local semantic search, zero API cost
ao kg-query Kai                               # Query the knowledge graph
ao wrap-up                                    # Session summary + save to vault

4. Python API

from ompa import Ompa

ao = Ompa(vault_path="./workspace")

# Lifecycle
context = ao.session_start()              # Returns ~2K token context string
hint = ao.handle_message("We won the enterprise deal!")
ao.post_tool("write", {"file_path": "work/active/auth.md"})
ao.stop()

# Semantic search
results = ao.search("authentication decisions", wing="Orion")

# Knowledge graph
ao.kg.add_triple("Kai", "works_on", "Orion", valid_from="2025-06-01")
triples = ao.kg.query_entity("Kai")
timeline = ao.kg.timeline("Orion")

# Palace navigation
ao.palace.create_wing("Orion", type="project")
ao.palace.create_tunnel("Kai", "Orion", "auth-migration")

Features

5 Lifecycle Hooks

Hook Token Budget Fires When
session_start ~2,000 Session begins — full context injection
user_message ~100 Each incoming user message
post_tool ~200 After each tool call
pre_compact ~100 Before context compaction
stop ~500 Session ends — wrap-up and persist

15 Message Types

Auto-classified and routed to the right vault folder:

DECISION · INCIDENT · WIN · LOSS · BLOCKER · QUESTION · SUGGESTION · REVIEW · BUG · FEATURE · LEARN · RETROSPECTIVE · ALERT · STATUS · CHORE

ao classify "We decided to go with Postgres over MySQL"
# → MessageType.DECISION → vault/work/decisions/2026-05-07-postgres.md

MCP Server (15 Tools)

Plug directly into Claude Desktop, Cursor, or Windsurf with one command:

claude mcp add ompa -- python -m ompa.mcp_server
Tool Description
ao_session_start Inject full memory context (~2K tokens)
ao_classify Route a message to the right vault folder
ao_search Semantic search across vault
ao_kg_query Query knowledge graph for an entity
ao_kg_add Add a triple to the knowledge graph
ao_kg_stats Knowledge graph statistics
ao_palace_wings List all wings
ao_palace_rooms List rooms in a wing
ao_palace_tunnel Create/traverse cross-wing tunnel
ao_validate Validate vault structure
ao_wrap_up Session summary + persist
ao_status Vault health status
ao_orphans Detect orphaned notes
ao_init Initialize a new vault
ao_stop Clean session shutdown

Dual-Vault Mode

Isolate team/org content from personal or private notes:

from ompa import Ompa, DualVaultConfig, IsolationMode

config = DualVaultConfig(
    shared_vault="./team-vault",
    personal_vault="./private-vault",
    mode=IsolationMode.AUTO,
)
ao = Ompa(config=config)

CLI Reference

ao init              Initialize a new vault
ao status            Health check and stats (shows installed vs latest version)
ao session-start     Inject memory context (use at session start)
ao classify <msg>    Classify and route a message
ao search <query>    Semantic search
ao orphans           Detect orphaned notes
ao wrap-up           Session summary and save
ao wings             List palace wings
ao rooms <wing>      List rooms in a wing
ao tunnel            Create/traverse cross-wing tunnel
ao kg-query <entity> Query knowledge graph
ao kg-timeline <e>   Entity timeline
ao kg-stats          Knowledge graph statistics
ao validate          Validate vault structure
ao rebuild-index     Rebuild the semantic index
ao upgrade           Upgrade ompa to the latest version from PyPI
ao doctor            Full health check table (version, vault, KG, index, orphans)
ao migrate-vault     Apply pending vault schema migrations

Framework Compatibility

Agent Framework Integration Method
Claude Code Python API + MCP server
OpenClaw Python API + MCP server
Codex Python API + MCP server
Gemini CLI Python API + MCP server
LangChain Python API
Custom agents Python API

Comparison

Feature OMPA MemPalace obsidian-mind
Framework support Any Claude Code only Claude Code only
Memory layers Vault + Palace + KG Palace + KG Vault only
Semantic search Local (free) ChromaDB API QMD (paid)
Temporal KG SQLite ✓ SQLite ✓ ✗
MCP server 15 tools 15 tools ✗
CLI 14 commands ✗ ✗
Lifecycle hooks 5 3 3
Message types 15 15 5
Verbatim storage ✓ ✓ ✗
Multi-agent ✓ ✗ ✗
Dual-vault isolation ✓ ✗ ✗

Installation Options

# Core (vault + palace + KG + CLI + MCP server)
pip install ompa

# With local semantic search (adds sentence-transformers + numpy)
pip install ompa[all]

# Development
pip install ompa[dev]

# From source
git clone https://github.com/jmiaie/MicapAiLabs && cd MicapAiLabs/ompa
pip install -e ".[all]"

Requires Python 3.10+.


Package Structure

ompa/
├── core.py              # Ompa main class — lifecycle, hooks, dual-vault
├── vault.py             # Vault management (brain/work/org/perf)
├── palace.py            # Palace metadata (wings/rooms/drawers/halls/tunnels)
├── knowledge_graph.py   # Temporal KG (SQLite triples + validity windows)
├── hooks.py             # 5 lifecycle hooks + HookManager
├── classifier.py        # 15 message types with auto-routing
├── semantic.py          # Local semantic search (lazy model loading)
├── mcp_server.py        # MCP protocol server (15 tools)
├── config.py            # Dual-vault configuration
└── cli.py               # typer CLI (14 commands)

Credits & Attribution

OMPA is a synthesis of ideas from the AI agent memory community:

  • MemPalace by Kyle Corbitt — palace metaphor (wings/rooms/drawers), temporal KG design, and verbatim storage approach (96.6% R@5 on LongMemEval)
  • obsidian-mind — vault structure (brain/work/org/perf), wikilink conventions, frontmatter validation, session lifecycle patterns
  • Claude Code / Anthropic — hook patterns and agent-tool interaction models
  • OpenClaw — framework-agnostic agent runtime that inspired the "universal" design goal

License

MIT — Micap AI

Metadata

Release files for ompa 1.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ompa 1.0.8
File Size Uploaded
ompa-1.0.8.tar.gz 78.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ompa 1.0.8
File Interpreter ABI Platform
ompa-1.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 155.2 kB

Release files / ompa-1.0.8.tar.gz

Download URL ompa-1.0.8.tar.gz
Size 78.5 kB
Tags Source
SHA-256 checksum
How to use checksums
62e7f2f366b5c52df985d3966bf9c1bd0d421baec1ff6f4f9fd3b4889f595da2
BLAKE2b-256 checksum
How to use checksums
cef5b601e2f98e89e9d5db070da82ff2b730277baf0beb6e7b5fffc8a831da75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 9, 2026.

Transparency log

Release files / ompa-1.0.8-py3-none-any.whl

Download URL ompa-1.0.8-py3-none-any.whl
Size 76.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
642214c80c975b2cd1b444ae6f5f99ab37f97c1b4c4e767993dfba25bc99b22d
BLAKE2b-256 checksum
How to use checksums
b1877fe1d5884ecc381525e9a1d564b63777004c6a19ba5339ebf30a5baf77cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.8 This release

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page