Framework-agnostic memory infrastructure for AI agents
Project description
memharness
Framework-agnostic memory infrastructure for AI agents
Overview
memharness is a complete memory infrastructure layer for AI agents. It provides:
- 10 Memory Types: Conversational, Knowledge Base, Entity, Workflow, Toolbox, Summary, Tool Log, Skills, File, Persona
- Multiple Backends: PostgreSQL + pgvector, SQLite + sqlite-vss, In-memory
- Framework Agnostic: Works with LangChain, LangGraph, CrewAI, or any custom agent
- Deterministic + AI Operations: Simple ops are deterministic, complex ops use embedded agents
- Self-Exploration Tools: Agents can explore and manage their own memory
- Fully Configurable: All thresholds, schedules, TTLs configurable via YAML or code
Installation
# Core (SQLite backend)
pip install memharness
# With PostgreSQL support
pip install memharness[postgres]
# With embedding support
pip install memharness[embeddings]
# Everything
pip install memharness[all]
Quick Start
from memharness import MemoryHarness
# Initialize with SQLite (development)
memory = MemoryHarness("sqlite:///memory.db")
# Or PostgreSQL (production)
memory = MemoryHarness("postgresql://user:pass@localhost/db")
# Write conversational memory (deterministic)
await memory.add_conversational(
thread_id="chat_001",
role="user",
content="How do I deploy to Kubernetes?"
)
# Write knowledge base (deterministic)
await memory.add_knowledge(
content="Kubernetes deployment guide...",
source="k8s-docs",
metadata={"category": "devops"}
)
# Search knowledge base (semantic search)
results = await memory.search_knowledge(
query="container orchestration",
k=5
)
# Get curated context for LLM
context = await memory.assemble_context(
query="deploy my app",
thread_id="chat_001",
max_tokens=4000
)
Memory Types
| Type | Storage | Purpose |
|---|---|---|
| Conversational | SQL | Chat history per thread |
| Knowledge Base | Vector | Documents, facts, reference material |
| Entity | Vector | People, organizations, systems, concepts |
| Workflow | Vector | Reusable step-by-step patterns |
| Toolbox | Vector | Tool definitions with VFS discovery |
| Summary | Vector | Compressed conversations (expandable) |
| Tool Log | SQL | Tool execution audit trail |
| Skills | Vector | Learned agent capabilities |
| File | Hybrid | Document references |
| Persona | Vector | Agent identity blocks |
Embedded Agents
memharness includes specialized agents for complex memory operations:
from memharness import MemoryHarness
from memharness.agents import AgentConfig
memory = MemoryHarness(
backend="postgresql://...",
llm=your_llm, # Optional: for AI-powered operations
agents=AgentConfig(
summarizer={"enabled": True, "triggers": [{"condition": "age > 7d"}]},
entity_extractor={"enabled": True, "on_write": True},
consolidator={"enabled": True, "schedule": "0 3 * * *"},
gc={"enabled": True, "schedule": "0 4 * * 0"},
)
)
Memory Tools (Self-Exploration)
Agents can explore their own memory using built-in tools:
# Get tools for your agent
tools = memory.get_memory_tools()
# Tools include:
# - memory_search: Search across memory types
# - memory_read: Read specific memory by ID
# - memory_write: Write new memory
# - memory_stats: Get memory statistics
# - toolbox_tree: Explore tool VFS
# - toolbox_grep: Search tools by pattern
Configuration
# memharness.yaml
backend: postgresql://localhost/memharness
summarization:
enabled: true
triggers:
- condition: "age > 7d"
memory_type: conversational
keep_originals: true
originals_ttl: 365d
consolidation:
enabled: true
schedule: "0 3 * * *"
similarity_threshold: 0.9
gc:
enabled: true
schedule: "0 4 * * 0"
archive_after: 90d
delete_after: 365d
memory = MemoryHarness.from_config("memharness.yaml")
Framework Integrations
LangChain
from memharness.integrations.langchain import MemharnessMemory
memory = MemharnessMemory(backend="postgresql://...")
chain = ConversationChain(llm=llm, memory=memory)
LangGraph
from memharness.integrations.langgraph import MemharnessCheckpointer
checkpointer = MemharnessCheckpointer(backend="postgresql://...")
graph = builder.compile(checkpointer=checkpointer)
Documentation
Full documentation: https://ayushsonuu.github.io/memharness
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please read our Contributing Guide.
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 memharness-0.4.4.tar.gz.
File metadata
- Download URL: memharness-0.4.4.tar.gz
- Upload date:
- Size: 100.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
777f32d07bea0d1796f63d2f1b23d30a55516de493ac8d5e723e237b4b36a051
|
|
| MD5 |
02609a1257f631bb53159a3b8dc0b291
|
|
| BLAKE2b-256 |
8b1b90a6eabe3a43d295b01d42683cb1285224602f3cf43c0c3d608dca8c6d64
|
File details
Details for the file memharness-0.4.4-py3-none-any.whl.
File metadata
- Download URL: memharness-0.4.4-py3-none-any.whl
- Upload date:
- Size: 109.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cd995cabaf2318957a0ccc0f3d0953da435fe48cb63d28c5c2a1d5c01539afa
|
|
| MD5 |
9b86831b4912cad05c7066cbb0d70a7d
|
|
| BLAKE2b-256 |
22c88fdb028cb216020f981570120ef80af78f4211a7591c0b83ff72a01e289a
|