Skip to main content

Cross-agent observational memory and local search for Claude Code, Codex CLI, Cowork, and Hermes Agent

Project description

Observational Memory

Observational Memory header showing local agent memory moving through Codex hooks, Claude, ChatGPT Memory, Claude Cowork, and Hermes.

PyPI version PyPI downloads CI GitHub stars

Local memory for the agents you already use.

Observational Memory, or om, gives Claude Code, Codex, Claude Cowork, and Hermes one shared memory on your machine. It watches agent transcripts, writes useful notes into local Markdown files, and gives new sessions a compact startup context. You can search that memory later, export reviewed memory bundles for hosted platforms, or opt in to encrypted multi-machine sync with OM Cluster.

The current release is v0.6.2. It includes:

  • budgeted startup context through om context
  • compact startup profile projection for long-running memory corpora
  • project-level active context routing so large active files still fit
  • first-class recall through om recall
  • richer reflection metadata and host-memory controls
  • OM Cluster relay operations and health checks
  • public-safe cluster validation docs
  • Windows, macOS, and Linux install paths

Quick Install

macOS with Homebrew:

brew install intertwine/tap/observational-memory
om install
om doctor

Linux, macOS, or Windows with uv:

uv tool install observational-memory
om install
om doctor

Install the optional enterprise auth extras if you use Anthropic through Vertex AI or Bedrock:

uv tool install "observational-memory[enterprise]"

What It Does

om keeps four main memory files under your local data directory:

File Purpose
observations.md Recent notes from sessions and checkpoints.
reflections.md Longer-term facts, preferences, decisions, and active work.
profile.md Compact stable context for startup.
active.md Compact current context for startup.

Those files are plain Markdown. You can read them, back them up, and search them.

Default paths:

Platform Memory directory Config directory
macOS / Linux ~/.local/share/observational-memory/ ~/.config/observational-memory/
Windows %LOCALAPPDATA%\observational-memory\ %APPDATA%\observational-memory\

How Memory Flows

flowchart LR
    A["Claude Code, Codex, Cowork, Hermes logs"] --> B["om observe"]
    C["Claude auto-memory files"] --> D["search index"]
    B --> E["observations.md"]
    E --> F["om reflect"]
    D --> F
    F --> G["reflections.md"]
    G --> H["profile.md + active.md"]
    H --> I["om context startup pack"]
    G --> J["om recall / om search"]

First Week Workflow

  1. Install om.
  2. Run om install and answer the provider questions.
  3. Run om doctor.
  4. Start using Claude Code or Codex normally.
  5. Search memory when you need it:
om recall --query "current project status"
om search "release checklist"
  1. Check generated startup context:
om context --for codex --cwd "$PWD" --task "finish docs"

Guides

Start here:

Agent Support

Host Current support
Claude Code Hooks for startup context and checkpoints.
Codex Hooks-first startup and Stop checkpoints, with an AGENTS fallback.
Claude Cowork Local plugin on macOS with hooks and /recall.
Hermes Manual session-log ingestion. A first-class Hermes plugin is planned in plans/hermes-first-class-plugin.md.
ChatGPT / Claude Managed Agents Reviewed export bundles through om export; om does not silently write hosted memory.

Common Commands

om status
om doctor
om observe --source codex
om reflect
om recall --query "what was decided about sync?"
om recall --handle startup:active
om search "preferences" --json
om export --target chatgpt
om export --target claude-managed-agents --output ./om-claude-memory

OM Cluster is off until you initialize or join a cluster:

om cluster init --name "Personal Memory" --transport filesystem:~/Sync/om-cluster --import-existing
om cluster invite --expires 10m
om cluster join "omc1:..."
om cluster requests
om cluster approve join_...
om cluster sync
om cluster status

Do not sync ~/.local/share/observational-memory/ directly with Dropbox, iCloud, Syncthing, rsync, or a NAS. Use the cluster transport directory instead.

Architecture At A Glance

Observational Memory system diagram showing Claude Code and Codex hooks feeding shared local markdown memory, search, and reflection.

The short version:

  • om observe turns transcripts into recent notes.
  • om reflect turns recent notes into durable memory.
  • om context gives agents a bounded startup pack.
  • om recall and om search retrieve more when the startup pack is not enough.
  • om export prepares reviewed memory seed bundles for hosted systems.
  • om cluster syncs encrypted records across machines when you opt in.

Release State

v0.6.2 is the current release. It tunes startup context for large real-world memory corpora by emitting a compact working profile, splitting active context by project, and keeping full generated memory available through recall.

Before the next release, maintainers should run:

make check
uv run ruff check .
uv run ruff format --check .
uv run pytest

See docs/MAINTAINERS.md for the full release workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

observational_memory-0.6.2.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

observational_memory-0.6.2-py3-none-any.whl (145.7 kB view details)

Uploaded Python 3

File details

Details for the file observational_memory-0.6.2.tar.gz.

File metadata

  • Download URL: observational_memory-0.6.2.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for observational_memory-0.6.2.tar.gz
Algorithm Hash digest
SHA256 c1e63be2f33e8d714f0324e28309e3e0859d76d1388f124adf36022a9dbcd3ed
MD5 123064b80bf05d21f9f3d6e82b28014c
BLAKE2b-256 b541cc41cec681bd14d0b8029c8b034fe69f90f9889c68265c41e6ba1586d96b

See more details on using hashes here.

File details

Details for the file observational_memory-0.6.2-py3-none-any.whl.

File metadata

File hashes

Hashes for observational_memory-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a4ec484985d0a136250569f0b759a5d396b7564934a7fb9ea5c497d31e9c8c1e
MD5 5e342ea0fc1c63f5efd51837d0042dc4
BLAKE2b-256 0a1d98d83d4b9cc8d59b7b4ae3492053e9abf10771c203045e33aa066739e2e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page