Skip to main content

Memory infrastructure for AI agents. Give your AI a brain.

Project description

Neurogram Banner

Memory infrastructure for AI agents.
Give your AI a brain.

PyPI npm License Stars


โšก Give your AI agents real memory in 3 lines

from neurogram import Agent

adam = Agent("adam")
adam.remember("User prefers concise, technical responses")
context = adam.think("How should I explain this API?")

That's it. Your agent now has persistent, searchable, evolving memory.


๐Ÿง  What is Neurogram?

Most AI agents today are stateless โ€” they forget everything after each conversation. Neurogram changes that.

Neurogram is an AI Memory OS that gives agents human-like memory:

Memory Type Human Analogy Neurogram Feature
Semantic Knowing what a router is agent.remember("Docker is a containerization platform")
Episodic Remembering yesterday's meeting agent.learn(topic="API design", outcome="User liked REST")
Procedural Knowing how to ride a bicycle agent.learn_procedure("Deploy", steps=[...])
Importance Important memories persist Automatic scoring + decay
Forgetting Unused memories fade agent.decay() โ€” Ebbinghaus curve

Unlike simple vector stores, Neurogram implements a complete cognitive memory architecture.


๐Ÿš€ Installation

# Core (zero dependencies beyond numpy)
pip install neurogram

# With sentence-transformers (better embeddings)
pip install neurogram[embeddings]

# With FastAPI server
pip install neurogram[server]

# Everything
pip install neurogram[all]

JavaScript/TypeScript:

npm install neurogram-js

๐Ÿ“– Quick Start

Single Agent

from neurogram import Agent

# Create an agent โ€” memories persist across sessions
agent = Agent("Nova", description="Coding assistant")

# Store memories
agent.remember("User's project uses FastAPI + PostgreSQL")
agent.remember("User prefers type hints in Python code")

# Learn from experience
agent.learn(
    topic="Code review",
    action="Suggested type hints",
    outcome="User appreciated it",
    lesson="Always suggest type hints"
)

# Get context for LLM prompts
context = agent.think("How should I help with this Python code?")
# โ†’ "Relevant memories:
#    - User's project uses FastAPI + PostgreSQL
#    - User prefers type hints in Python code"

# Search specific memories
results = agent.recall("user preferences")
for r in results:
    print(f"[{r.relevance_score:.2f}] {r.memory.content}")

Multi-Agent System

from neurogram import Neurogram

brain = Neurogram()

# Each agent has isolated memory
adam = brain.create_agent("Adam", description="Researcher")
nova = brain.create_agent("Nova", description="Coder")

adam.remember("Transformers are the dominant NLP architecture")
nova.remember("User's stack: FastAPI, Docker, K8s")

# Memories don't leak between agents
adam.think("NLP")   # โ†’ finds transformer memory
nova.think("NLP")   # โ†’ empty (Nova doesn't know about NLP)

Memory-Augmented LLM

from neurogram import Agent
from openai import OpenAI

agent = Agent("assistant")
client = OpenAI()

def chat(user_message: str) -> str:
    # Get relevant memories
    context = agent.think(user_message, format_style="structured")

    response = client.chat.completions.create(
        model="gpt-4",
        messages=[
            {"role": "system", "content": f"You have memory:\n{context}"},
            {"role": "user", "content": user_message},
        ]
    )

    answer = response.choices[0].message.content

    # Learn from this interaction
    agent.learn(topic=user_message[:50], action="answered", outcome="responded")
    return answer

๐Ÿ—๏ธ Architecture

User Input
    โ†“
AI Agent
    โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         NEUROGRAM MEMORY OS         โ”‚
โ”‚                                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ Episodic  โ”‚  โ”‚   Semantic    โ”‚   โ”‚
โ”‚  โ”‚  Memory   โ”‚  โ”‚   Memory     โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚Procedural โ”‚  โ”‚  Importance   โ”‚   โ”‚
โ”‚  โ”‚  Memory   โ”‚  โ”‚   Engine     โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ Embedding โ”‚  โ”‚   Storage     โ”‚   โ”‚
โ”‚  โ”‚  Engine   โ”‚  โ”‚   Backend    โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ†“
LLM Reasoning
    โ†“
Response

๐Ÿ”Œ Pluggable Backends

Embedding Engines

Engine Quality Speed Dependencies
NumpyEmbeddingEngine โญโญ โšกโšกโšก None (default)
LocalEmbeddingEngine โญโญโญโญ โšกโšก sentence-transformers
OpenAIEmbeddingEngine โญโญโญโญโญ โšก openai + API key
from neurogram import Agent
from neurogram import LocalEmbeddingEngine

# Use sentence-transformers for better quality
agent = Agent("nova", embedding_engine=LocalEmbeddingEngine())

Storage Backends

Backend Best For
SQLiteBackend Development, single-agent (default)
Custom backends Implement StorageBackend interface

๐Ÿงช Memory Server (REST API)

Run the Neurogram server for multi-language access:

pip install neurogram[server]
neurogram server --port 8000

API docs at http://localhost:8000/docs

# Create agent
curl -X POST http://localhost:8000/agents \
  -H "Content-Type: application/json" \
  -d '{"name": "adam"}'

# Store memory
curl -X POST http://localhost:8000/agents/adam/remember \
  -H "Content-Type: application/json" \
  -d '{"content": "User prefers dark mode"}'

# Search memory
curl -X POST http://localhost:8000/agents/adam/recall \
  -H "Content-Type: application/json" \
  -d '{"query": "UI preferences"}'

JavaScript/TypeScript Client

import { Neurogram } from "neurogram-js";

const brain = new Neurogram("adam", { serverUrl: "http://localhost:8000" });

await brain.create("Research assistant");
await brain.remember("User studies machine learning");

const memories = await brain.recall("user interests");
const context = await brain.think("What should I recommend?");

๐Ÿงฌ Importance & Forgetting

Neurogram uses biologically-inspired memory dynamics:

Importance Score = ฮฑร—Frequency + ฮฒร—Recency + ฮณร—Emotion + ฮดร—Feedback

  • Frequency: Memories accessed more often strengthen
  • Recency: Recent memories are naturally more vivid
  • Emotion: Emotionally charged memories persist longer
  • Forgetting: Ebbinghaus exponential decay curve
agent = Agent("nova")

# Frequently accessed memories become stronger
for _ in range(10):
    agent.recall("important topic")

# Run decay โ€” low-importance memories get pruned
forgotten = agent.decay()
print(f"Forgot {forgotten} faded memories")

๐Ÿ“ Project Structure

neurogram/
โ”œโ”€โ”€ neurogram/                  # Python SDK
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ agent.py               # Primary developer API
โ”‚   โ”œโ”€โ”€ neurogram.py            # Multi-agent manager
โ”‚   โ”œโ”€โ”€ memory_manager.py       # Central orchestrator
โ”‚   โ”œโ”€โ”€ embedding_engine.py     # Pluggable embeddings
โ”‚   โ”œโ”€โ”€ importance_engine.py    # Scoring & decay
โ”‚   โ”œโ”€โ”€ episodic_memory.py      # Experience memory
โ”‚   โ”œโ”€โ”€ semantic_memory.py      # Factual knowledge
โ”‚   โ”œโ”€โ”€ procedural_memory.py    # Skills & procedures
โ”‚   โ”œโ”€โ”€ cli.py                  # CLI interface
โ”‚   โ”œโ”€โ”€ types.py                # Core data types
โ”‚   โ””โ”€โ”€ storage/
โ”‚       โ”œโ”€โ”€ base.py             # Storage interface
โ”‚       โ””โ”€โ”€ sqlite_backend.py   # Default SQLite storage
โ”œโ”€โ”€ server/
โ”‚   โ””โ”€โ”€ app.py                  # FastAPI REST server
โ”œโ”€โ”€ neurogram-js/               # NPM package
โ”‚   โ””โ”€โ”€ src/index.ts            # TypeScript SDK
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ quickstart.py
โ”‚   โ”œโ”€โ”€ chatbot_memory.py
โ”‚   โ””โ”€โ”€ multi_agent.py
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

๐Ÿ›ฃ๏ธ Roadmap

  • Core memory engine (semantic, episodic, procedural)
  • Importance scoring & decay
  • SQLite storage backend
  • FastAPI REST server
  • TypeScript/JS SDK
  • Knowledge graph connections
  • PostgreSQL + pgvector backend
  • Memory consolidation (short-term โ†’ long-term)
  • Memory visualization dashboard
  • Hosted cloud platform

๐Ÿค Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

# Setup development environment
git clone https://github.com/neurogram-ai/neurogram.git
cd neurogram
pip install -e ".[dev]"
python -m pytest tests/ -v

๐Ÿ“„ License

MIT License โ€” see LICENSE for details.


Neurogram โ€” Because AI agents deserve to remember. ๐Ÿง 

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

neurogram-0.2.0.tar.gz (46.9 kB view details)

Uploaded Source

Built Distribution

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

neurogram-0.2.0-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

Details for the file neurogram-0.2.0.tar.gz.

File metadata

  • Download URL: neurogram-0.2.0.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for neurogram-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d0ea12a72be67e176230160a99c7ecb5f650f70370a29b85c134e1229a262c8d
MD5 75f8aada89d2afc2a6518d255422bc59
BLAKE2b-256 ade9e02d96a9fda7eb874e056c2646ceae7c438353352cea9460066cebda2641

See more details on using hashes here.

File details

Details for the file neurogram-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: neurogram-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 48.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for neurogram-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c661c5dd8338e9ccdbfbf39a7b4001aca1ffa89260c0f02f76d3e535cdc2e0b4
MD5 776a20f6eceda5cdf06d7a2a41b22c27
BLAKE2b-256 309f66b9f55b1ab584ea3c013a8fd2d42220c5f0b5bafafd65dc160ba4e7ed03

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