agent-memory
Provides integration with n8n workflow automation through the Hermes bridge, enabling memory access from various platforms like Slack.
Enables two-way synchronization of memories with an Obsidian vault, allowing management of memories as Markdown notes.
Allows agents or users to store and retrieve memories via Slack through the Hermes bridge and n8n workflow.
Allows agents or users to store and retrieve memories via a Telegram bot using the Hermes bridge.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-memoryremember that the API rate limit is 1000 requests per minute"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent Memory System
Persistent memory for AI agents using SQLite + FTS5.
Single-file core ยท Zero dependencies ยท Optional MCP server and Obsidian sync.
โจ Features
Feature | Description |
๐๏ธ Persistent | SQLite database survives process restarts |
๐ Full-text search | FTS5 engine with ranked results |
๐ Agent isolation | Each agent gets its own namespace automatically |
๐ ๏ธ MCP Server | 12 tools for Claude Code / Claude Desktop |
๐ Obsidian sync | Optional two-way Markdown bridge |
๐ค CLAUDE.md generator | Auto-inject context into every session |
๐ Cross-platform | macOS, Linux, WSL, Windows |
โก Zero dependencies | Core uses only Python standard library |
๐๏ธ Architecture
graph TB
subgraph Clients["๐ฅ๏ธ Clients"]
CLI["๐ป CLI\n(memory.py)"]
MCP["๐ MCP Server\n(memory_mcp.py)"]
HERMES["๐ Hermes Bridge\n(hermes/bridge.py)"]
end
subgraph Core["โ๏ธ Core Engine"]
STORE["๐ฅ Store\nmemory_store()"]
SEARCH["๐ Search\nFTS5 Engine"]
ISO["๐ Isolation\nNamespace Handler"]
CTX["๐ Context\nCLAUDE.md Gen"]
end
subgraph Storage["๐พ Storage"]
DB[("๐๏ธ SQLite DB\nmemory.db")]
FTS[("๐ FTS5 Index")]
end
subgraph External["๐ Integrations"]
OBS["๐ Obsidian Vault\n(Markdown)"]
N8N["โ๏ธ n8n Workflow"]
TG["๐ฑ Telegram Bot"]
end
CLI --> STORE
CLI --> SEARCH
MCP --> STORE
MCP --> SEARCH
HERMES --> STORE
HERMES --> SEARCH
STORE --> ISO
SEARCH --> ISO
ISO --> DB
DB --> FTS
FTS --> SEARCH
STORE --> OBS
OBS --> STORE
N8N --> HERMES
TG --> HERMES
CTX --> DB
style Clients fill:#1f3558,stroke:#58a6ff,color:#cdd9e5
style Core fill:#2d1f58,stroke:#bc8cff,color:#cdd9e5
style Storage fill:#1f3a2d,stroke:#3fb950,color:#cdd9e5
style External fill:#3a2d1f,stroke:#d29922,color:#cdd9e5๐ Memory Lifecycle
sequenceDiagram
actor Agent as ๐ค AI Agent
participant CLI as ๐ป CLI / MCP
participant ISO as ๐ Namespace
participant DB as ๐๏ธ SQLite
participant FTS as ๐ FTS5 Index
participant OBS as ๐ Obsidian
Agent->>CLI: memory store --type semantic --content "..."
CLI->>ISO: Resolve agent namespace (AGENT_NAME)
ISO-->>CLI: agent_id = "health" (or global)
CLI->>DB: INSERT INTO memories (agent_id, type, content, ...)
DB->>FTS: Auto-index content
DB-->>CLI: memory_id = 42
CLI-->>Agent: โ
Stored (id=42)
Agent->>CLI: memory search --query "rate limit"
CLI->>ISO: Resolve agent namespace
ISO-->>CLI: agent_id
CLI->>FTS: SELECT * FROM memories_fts WHERE content MATCH "rate limit"
FTS-->>CLI: Ranked results
CLI-->>Agent: ๐ Results (ranked by relevance)
Note over DB,OBS: Optional Obsidian Sync
DB->>OBS: Sync to Markdown vault
OBS->>DB: Sync from Markdown vault๐ง Memory Types
mindmap
root((๐ง Memory Types))
๐
episodic
Events and decisions
Switched to Postgres
Deployed v2 on Monday
๐ semantic
Facts and knowledge
Rate limit 1000 req/min
Max upload 50 MB
โ๏ธ procedural
Workflows and how-tos
Steps build test deploy
Auth flow OAuth2 JWT๐ Quick Start
Option 1: CLI (zero dependencies)
cp memory.py /usr/local/bin/memory
chmod +x /usr/local/bin/memory
# Store a memory
memory store --type semantic --content "Max upload: 50 MB" --project api --importance 5
# Search memories
memory search --query "upload"
# List recent
memory list --project api --recent 10
# View stats
memory statsOption 2: MCP Server (Claude Code / Claude Desktop)
pip install mcpAdd to ~/.claude/settings.json (Claude Code):
{
"mcpServers": {
"agent-memory": {
"command": "python",
"args": ["/path/to/memory_mcp.py"]
}
}
}Claude Desktop paths:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Restart and you'll see 12 tools available.
๐ ๏ธ MCP Tools
graph LR
subgraph Session["๐ Session"]
T1["memory_brief\nLoad context"]
T2["memory_who\nAgent identity"]
T3["memory_stats\nDB statistics"]
end
subgraph CRUD["โ๏ธ CRUD"]
T4["memory_store\nSave memory"]
T5["memory_update\nPatch memory"]
T6["memory_delete\nRemove by ID"]
end
subgraph Query["๐ Query & Export"]
T7["memory_search\nFTS5 full-text"]
T8["memory_list\nFilter and sort"]
T9["memory_export\nExport to JSON"]
T10["memory_generate_context\nBuild CLAUDE.md"]
end
subgraph Sync["๐ Sync"]
T11["memory_sync_to_vault\nSQLite to Obsidian"]
T12["memory_sync_from_vault\nObsidian to SQLite"]
end
style Session fill:#1f3558,stroke:#58a6ff,color:#cdd9e5
style CRUD fill:#2d1f58,stroke:#bc8cff,color:#cdd9e5
style Query fill:#1f3a2d,stroke:#3fb950,color:#cdd9e5
style Sync fill:#3a2d1f,stroke:#d29922,color:#cdd9e5๐ Agent Isolation
graph TD
ENV["๐ AGENT_NAME env var"]
ENV -->|"= 'health'"| HEALTH["๐ฅ health namespace\nWrite: own only\nRead: own + global"]
ENV -->|"= 'orchestrator'"| ORCH["๐ฏ orchestrator\nWrite: anywhere\nRead: everything"]
ENV -->|"not set"| GLOBAL["๐ global\nWrite: anywhere\nRead: everything"]
HEALTH --> DB1[("health::memories")]
HEALTH -.->|read only| DB2[("global::memories")]
ORCH --> DB1
ORCH --> DB2
ORCH --> DB3[("other::memories")]
GLOBAL --> DB2
style ENV fill:#21262d,stroke:#58a6ff,color:#cdd9e5
style HEALTH fill:#1f3558,stroke:#58a6ff,color:#cdd9e5
style ORCH fill:#2d1f58,stroke:#bc8cff,color:#cdd9e5
style GLOBAL fill:#1f3a2d,stroke:#3fb950,color:#cdd9e5export AGENT_NAME=health # Linux / macOS / WSL
$env:AGENT_NAME = "health" # Windows PowerShellRole | Write Access | Read Access |
Regular agent | Own namespace only | Own + global |
| Anywhere | Everything |
Not set | Anywhere | Everything |
๐ Hermes โ Cross-Platform Memory
Two agents collaborate on Slack. You ask on Telegram. The memory carries.
flowchart LR
SLACK["๐ฌ Slack Agent"] -->|POST| N8N["โ๏ธ n8n"]
N8N -->|HTTP| BRIDGE["๐ Hermes Bridge\nbridge.py :8765"]
BRIDGE <-->|SQLite| DB[("๐๏ธ memory.db")]
TG["๐ฑ Telegram Bot"] <-->|HTTP| BRIDGE
MCP["๐ MCP Server"] <-->|SQLite| DB
CLI["๐ป CLI"] <-->|SQLite| DB
style SLACK fill:#1f3a2d,stroke:#3fb950,color:#cdd9e5
style N8N fill:#3a2d1f,stroke:#d29922,color:#cdd9e5
style BRIDGE fill:#2d1f58,stroke:#bc8cff,color:#cdd9e5
style DB fill:#1f3558,stroke:#58a6ff,color:#cdd9e5
style TG fill:#1f3558,stroke:#58a6ff,color:#cdd9e5
style MCP fill:#2d1f58,stroke:#bc8cff,color:#cdd9e5
style CLI fill:#1f3a2d,stroke:#3fb950,color:#cdd9e5# 1. Start the bridge
python hermes/bridge.py
# 2. Import hermes/n8n_workflow.json into your n8n instance
# 3. Start the Telegram bot
TELEGRAM_TOKEN=xxx HERMES_URL=http://your-server:8765 python hermes/telegram_bot.pySee hermes/README.md for full setup, API reference, and VPS deployment.
๐ฆ Obsidian Integration (Optional)
export OBSIDIAN_VAULT=/path/to/your/vault
# Auto-mirrors every store/update/delete to Markdown
memory store --type semantic --content "API uses JWT" --project api
# Bulk sync
memory sync-to-vault # SQLite โ Markdown
memory sync-from-vault # Markdown โ SQLite๐ CLAUDE.md Generator
memory generate-context --output CLAUDE.mdCreates a Markdown file from your most important memories. Place it in your project root and Claude Code reads it automatically every session.
๐ File Structure
agent-memory/
โโโ memory.py # Core: CLI + library (1282 lines)
โโโ memory_mcp.py # MCP server (645 lines, requires: pip install mcp)
โโโ assets/
โ โโโ banner.svg # Repository banner image
โโโ hermes/ # Cross-platform memory layer
โ โโโ bridge.py # HTTP gateway (zero new deps)
โ โโโ telegram_bot.py # Telegram recall bot (requires: requests)
โ โโโ n8n_workflow.json # Ready-to-import Slack โ memory workflow
โ โโโ README.md # Hermes setup guide
โโโ README.md
โโโ LICENSE
โโโ .gitignore
โโโ requirements.txt # Runtime: empty (stdlib only)
โโโ requirements-dev.txt # Dev: pytest, black, mypy, ruff
โโโ tests/
โโโ __init__.py
โโโ test_memory.py # 58 tests across 8 classes๐๏ธ Database Location
Platform | Default Path |
macOS / Linux |
|
Windows |
|
Override: export AGENT_MEMORY_DIR=/custom/path
๐งช Testing
pip install -r requirements-dev.txt
python -m pytest tests/test_memory.py -v # 58 tests
python -m pytest tests/test_memory.py -v --cov=memory๐ License
MIT ยฉ khaled1174
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/khaled1174/agent-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server