Skip to main content

Framework-agnostic memory infrastructure for AI agents

Project description

memharness

Framework-agnostic memory infrastructure for AI agents

PyPI version Python 3.10+ License: MIT Tests

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


Download files

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

Source Distribution

memharness-0.5.0.tar.gz (88.4 kB view details)

Uploaded Source

Built Distribution

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

memharness-0.5.0-py3-none-any.whl (94.5 kB view details)

Uploaded Python 3

File details

Details for the file memharness-0.5.0.tar.gz.

File metadata

  • Download URL: memharness-0.5.0.tar.gz
  • Upload date:
  • Size: 88.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for memharness-0.5.0.tar.gz
Algorithm Hash digest
SHA256 51b409ed4f6837d955d5ba326008975c12891d3823a8625290bbfc71c5a05cda
MD5 149e7e0eae5ff857c04101b13adbd989
BLAKE2b-256 2a49d8de63d755fe6b06dfeed5ed2b385022184bd72efd86d174afceaa4e8435

See more details on using hashes here.

File details

Details for the file memharness-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: memharness-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 94.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for memharness-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81654b7ecb652baf5c3cba5d14cffaeb85a8b3197635dde4b404ffa1ff0d496c
MD5 8a590032677827b0bdaa0455475019ed
BLAKE2b-256 d5c8fbe8cbb51bb3ca93c23fca5c937da7a7d2dbb72c16d851c00a41f8d4f1f0

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