OmniNode document ingestion and semantic retrieval
Project description
OmniMemory
Memory persistence, recall, and semantic retrieval for the OmniNode platform. OmniMemory provides ONEX-compliant nodes and handlers for storing agent context, indexing embeddings, querying intent graphs, and managing the full memory lifecycle across distributed omni agents.
Architecture
Follows the ONEX Four-Node Architecture (EFFECT, COMPUTE, REDUCER, ORCHESTRATOR) applied to memory operations.
What This Repo Provides
- Memory nodes —
memory_storage_effect,memory_retrieval_effect,intent_storage_effect,intent_query_effect,intent_event_consumer_effect - Compute nodes —
semantic_analyzer_compute,similarity_compute - Reducer nodes —
memory_consolidator_reducer,statistics_reducer - Orchestrator nodes —
memory_lifecycle_orchestrator,agent_coordinator_orchestrator - Intent handlers —
handler_intent,handler_subscriptionwith protocol-driven adapters - Protocol interfaces — embedding provider, intent graph adapter, secrets provider
- Audit layer — I/O audit logging via
audit/ - Runtime plugin — registered as
onex.domain_pluginsentry point (PluginMemory)
Infrastructure Ownership
OmniMemory's docker-compose.yml owns the memory-layer data services. These are the services you need to run omnimemory locally:
| Service | Container | Default Port | Purpose |
|---|---|---|---|
| Qdrant | omnimemory-qdrant |
6333 (HTTP), 6334 (gRPC) | Vector database for semantic memory |
| Memgraph | omnimemory-memgraph |
7687 (Bolt), 7444 (HTTP) | Graph database for relationship/intent queries |
| Valkey | omnimemory-valkey |
6379 | In-memory cache and session storage |
| Kreuzberg | omnimemory-kreuzberg-parser |
8090 | Document text extraction service |
Not owned here — these services are managed by other repositories:
| Service | Owner Repository | Why |
|---|---|---|
| Kafka / Redpanda | omnibase_infra |
Platform-wide event bus, shared by all services |
| PostgreSQL | omnibase_infra |
Platform-wide relational database, shared by all services |
If you need Kafka or Postgres, start the omnibase_infra stack first:
docker compose -f /path/to/omnibase_infra/docker/docker-compose.infra.yml up -d
Quick Start
Memory services only
To run just the omnimemory data services (Qdrant, Memgraph, Valkey, Kreuzberg):
git clone https://github.com/OmniNode-ai/omnimemory.git
cd omnimemory
# Start memory data services
docker compose up -d
# Verify all services are healthy
docker compose ps
Default service ports (all configurable via .env):
- Qdrant REST:
localhost:6333 - Memgraph Bolt:
localhost:7687 - Valkey:
localhost:6379 - Kreuzberg parser:
localhost:8090
Install and run tests
uv sync
uv run pytest tests/ -m unit
For configuration options see docs/environment_variables.md.
Minimal example using the intent handler:
import asyncio
from uuid import uuid4
from omnibase_core.container import ModelONEXContainer
from omnimemory.handlers.adapters.models import ModelIntentClassificationOutput
from omnimemory.handlers.handler_intent import HandlerIntent
async def main() -> None:
container = ModelONEXContainer()
handler = HandlerIntent(container)
await handler.initialize(connection_uri="bolt://localhost:7687")
# Store an intent
result = await handler.store_intent(
session_id="session_123",
intent_data=ModelIntentClassificationOutput(
intent_category="debugging",
confidence=0.92,
keywords=["error", "traceback"],
),
correlation_id=str(uuid4()),
)
# Query session intents
query_result = await handler.query_session(
session_id="session_123",
min_confidence=0.5,
)
await handler.shutdown()
asyncio.run(main())
Directory Structure
src/omnimemory/
├── audit/ # I/O audit logging
├── enums/ # Domain enumerations (memory types, operation types, lifecycle states)
├── errors/ # Structured error types
├── handlers/ # HandlerIntent, HandlerSubscription + adapters
├── models/ # Pydantic models (core, memory, intelligence, service, container, contracts)
├── nodes/ # EFFECT, COMPUTE, REDUCER, ORCHESTRATOR node implementations
├── protocols/ # Protocol interfaces (embedding, intent graph, secrets)
├── runtime/ # Plugin registration, wiring, dispatch, introspection
├── tools/ # Contract linter and stubs
└── utils/ # Shared utilities (audit logger, PII detection, retry, health)
Development
Uses uv for package management.
uv sync
uv run pytest tests/ -m unit
uv run mypy src/omnimemory/ --strict
uv run ruff check src/ tests/
uv run ruff format src/ tests/
Documentation
Reference: docs/
Open an issue or email contact@omninode.ai.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omninode_memory-0.12.0.tar.gz.
File metadata
- Download URL: omninode_memory-0.12.0.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4d00fc77ad5500c3d6f622c06f5d0884817c71a79d528b2e8c490dad70fc98f
|
|
| MD5 |
71cd2c5d30005efd266304bc4ad372c7
|
|
| BLAKE2b-256 |
620988feeffdbd1056a7952ade344c613dac102106943378b10545002c275fb4
|
File details
Details for the file omninode_memory-0.12.0-py3-none-any.whl.
File metadata
- Download URL: omninode_memory-0.12.0-py3-none-any.whl
- Upload date:
- Size: 655.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d2aa98d301c69c924033d36c07beeedc1ed722e3da3510ce3f9c69f95d6b822
|
|
| MD5 |
418d32f1d8e25804f115b05365a17a3c
|
|
| BLAKE2b-256 |
7265a5a5058e5e31835b670424c40ddc8e710edf076e978048c8a5305307c2e9
|