Skip to main content

Hebbian memory for AI agents — memories that fire together wire together.

Project description

hebbmem

hebbmem

Hebbian memory for AI agents — memories that fire together wire together.

Install

pip install hebbmem

For higher-quality semantic embeddings:

pip install hebbmem[ml]

Quick Start

from hebbmem import HebbMem

mem = HebbMem()

# Store memories
mem.store("Python is great for data science", importance=0.8)
mem.store("JavaScript runs in the browser", importance=0.5)
mem.store("Neural networks learn from data", importance=0.7)

# Time passes, memories decay
mem.step(5)

# Recall activates related memories through the graph
results = mem.recall("machine learning with Python", top_k=3)
for r in results:
    print(f"{r.content} (score={r.score:.3f})")

How It Works

hebbmem replaces flat vector storage with three neuroscience mechanisms:

Three mechanisms

Decay — Memories fade over time unless reinforced, following the Ebbinghaus forgetting curve. Recent and frequently accessed memories stay strong.

Hebbian Learning — Memories recalled together strengthen their connections. "Neurons that fire together wire together." Over time, the graph learns which memories are related through usage, not just embedding similarity.

Spreading Activation — Recalling one memory activates related ones through the graph, surfacing connections that keyword or vector search alone would miss.

Persistence

Save and restore memory state across sessions:

mem.save("agent_memory.hebb")

# Later...
mem = HebbMem.load("agent_memory.hebb", encoder="hash")

Uses SQLite internally — single file, zero dependencies, crash-safe.

Configuration

from hebbmem import HebbMem, Config

config = Config(
    activation_decay=0.9,    # how fast activation fades (0-1)
    strength_decay=0.999,    # how fast long-term strength fades (0-1)
    hebbian_lr=0.2,          # learning rate for co-activation (0-1)
    spread_factor=0.5,       # energy spread per hop (0-1)
    max_hops=3,              # BFS depth for spreading activation
    scoring_weights={        # recall ranking formula
        "activation": 0.4,
        "similarity": 0.35,
        "strength": 0.15,
        "importance": 0.1,
    },
)
mem = HebbMem(encoder="hash", config=config)

Batch Store

ids = mem.store_batch(
    ["memory one", "memory two", "memory three"],
    importances=[0.9, 0.5, 0.3],
)

Thread Safety

All public methods are thread-safe (protected by threading.RLock). Safe to use from multiple threads in agent frameworks.

Logging

hebbmem uses stdlib logging. Enable debug output:

import logging
logging.basicConfig(level=logging.DEBUG)

Benchmark

Benchmark results

hebbmem outperforms flat vector search (pure cosine similarity) on key scenarios:

Scenario Metric hebbmem Baseline Delta
Associative Precision@5 0.56 0.44 +27.3%
Associative Assoc. Hit Rate 0.13 0.00
Noise Precision@5 0.60 0.56 +7.1%
Contradiction Precision@1 0.50 0.00
Contradiction MRR 0.75 0.50 +50.0%
Temporal Precision@5 0.36 0.36 tied

Key wins: contradiction handling (50% MRR improvement — newer memories rank higher) and associative recall (finds indirectly connected memories that baseline misses entirely). Results use HashEncoder; advantages are larger with semantic embeddings.

Run yourself: uv run python benchmarks/run_benchmark.py — see benchmarks/ for methodology.

Visualization

Interactive D3.js demo showing spreading activation, Hebbian reinforcement, and decay in real-time. Dark theme with glowing nodes — neurons firing.

uv pip install fastapi uvicorn
uv run python demo/server.py
# Open http://localhost:8765

See demo/ for walkthrough.

Examples

See examples/ for runnable scripts:

Integrations

hebbmem works with any agent framework. See examples/integrations/ for runnable demos:

  • Ollama — Local chatbot with persistent memory, no API keys
  • LangChain — Drop-in replacement for ConversationBufferMemory
  • OpenAI — Persistent memory layer for stateless GPT calls
  • CrewAI — Shared memory between multiple agents
  • smolagents — HuggingFace lightweight agent with memory tools

The integration pattern is always the same:

mem = HebbMem()
mem.store(user_input)
context = mem.recall(query)
mem.step()

Links

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

hebbmem-0.4.1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

hebbmem-0.4.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file hebbmem-0.4.1.tar.gz.

File metadata

  • Download URL: hebbmem-0.4.1.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hebbmem-0.4.1.tar.gz
Algorithm Hash digest
SHA256 137230fa37df5cda47d7bf13ec6aeb463d89d1abeb09bf9e28c90eed7546030f
MD5 ae79955ab17b474f861c7c455a65b7be
BLAKE2b-256 dab330a39c8efd00e8041589487f51e3cd9a7c651fa16672a01eb098bc7f9076

See more details on using hashes here.

Provenance

The following attestation bundles were made for hebbmem-0.4.1.tar.gz:

Publisher: publish.yml on codepawl/hebbmem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hebbmem-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: hebbmem-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hebbmem-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7a510c12e8555173abd3ff293973f642ce793361e426b2ae858a0fed8f91c4ac
MD5 c85e8062a962b083befd8624c4c8afad
BLAKE2b-256 17c5ed214872d24d73ea4ee4a9ec511ff78d12b8d79f9af80bd301c17b99e330

See more details on using hashes here.

Provenance

The following attestation bundles were made for hebbmem-0.4.1-py3-none-any.whl:

Publisher: publish.yml on codepawl/hebbmem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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