Stop building memory systems
from scratch.
MemHouse gives you a production-ready, highly concurrent memory backend and pgvector database in a single deployable container. Build stateless agents; we handle state, extraction, and retrieval.
High-Concurrency Engine
Why MemHouse? Single-threaded memory pipelines stall under async lock contention. Process isolation gives MemHouse 10,000+ ingests/sec throughput with isolation fault protection.
Developer Web Console & CLI
Explore memory graphs visually, execute Mix tasks for operations, inspect raw JSON provenance payloads, and trigger re-indexations without restarting database nodes.
No Vendor Lock-In
Because MemHouse runs on standard PostgreSQL with pgvector, your memory state lives in relational tables. Export, dump, or query via standard SQL anytime.
Stateless agents, stateful engine.
Keep your agent prompts lightweight. Pass observation payloads to MemHouse, and query governed memories directly via native SDKs or Model Context Protocol (MCP).
# Install SDK: pip install memhouse-ai
from memhouse import MemHouseClient
# Initialize client pointing to your local node or VPC endpoint
client = MemHouseClient(
endpoint="https://memhouse.internal.company.com",
api_key="mh_live_982347812"
)
# 1. Ingest Observation with Account & Scope headers
observation = client.observations.create(
account_id="tenant_acme_corp",
scope="/support/tickets/INV-9042",
content="User Alice Vance confirmed Acme Corp upgraded to Enterprise SLA plan."
)
print(f"Ingested observation ID: {observation.id}")
print(f"Extracted facts count: {len(observation.extracted_facts)}")
# 2. Query Governed Context for Agent Prompt Construction
context = client.memory.retrieve(
account_id="tenant_acme_corp",
scope="/support/tickets/INV-9042",
query="What plan is Acme Corp on?",
min_confidence=0.85,
states=["active"] # Only retrieve human-approved or active facts
)
for fact in context.facts:
print(f"Fact: {fact.subject} {fact.predicate} {fact.object}")
print(f"Provenance: {fact.provenance.source_id} | State: {fact.lifecycle_state}")