steelmem
Exports the memory store to Apple Embedding Atlas, an interactive 2D map with clusters, search and filters by status, type and date, or as a standalone app that opens without Python.
Supports any OpenAI-compatible LLM endpoint such as Ollama (plus vLLM or proxies) for fact extraction, sleep-agent decisions and optional embedding model, configured through base URL and model environment variables.
Uses an OpenAI (or OpenAI-compatible) API key to extract atomic facts, plans and events from raw text, resolve relative dates, and drive the sleep agent's judgments about what is completed, cancelled, superseded or duplicated.
Imports Telegram chat exports (single chat or all chats) via a dedicated command, splitting conversations into pauses, marking the owner, preserving forwards and avoiding duplicates on re-import.
Generates vectors.tsv and metadata.tsv files for TensorFlow Embedding Projector, so memories can be explored with PCA, t-SNE and UMAP in 3D with built-in search.
Click on "Deploy 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., "@steelmemremember that I moved to Moscow from Kazan last month"
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.
SteelMem 🧠⚙️
Живая векторная память для ИИ-агентов. Подключается как MCP-плагин за минуту — и у любого агента появляется память, которая сама себя актуализирует.
Трек «Open Source × AI» · Вайбкодинг ФКН, 25 октября 2026 · команда SteelRework
Проблема
Память у агентов сегодня — «мешок фактов»: сохранили «планирую поехать на море» — и через полгода агент всё ещё спрашивает, как подготовка к поездке. Устаревшее не вычищается, дубли копятся, противоречия («живу в Казани» / «переехал в Москву») агент разруливать не умеет.
Related MCP server: RecallMCP
Решение
SteelMem хранит воспоминания со статусами во времени (ПЛАН → СДЕЛАНО / ОТМЕНЕНО / УСТАРЕЛО) и добавляет сонного агента — фоновый процесс, который пока основной агент «спит», редактирует память:
Действие | Пример |
COMPLETE | «Планирую поехать на море в июле» + позже «Съездил на море в Сочи» → план помечен выполненным, оба связаны |
CANCEL | «Собираюсь на концерт» + «Передумал идти на концерт» → план отменён |
SUPERSEDE | «Живу в Казани» → «Переехал в Москву»: старое уходит в архив |
MERGE | Дубли склеиваются |
STALE | План висит 60+ дней без новостей → «уточнить у пользователя» |
Каждое изменение пишется в журнал history — видно, кто, когда и почему поменял память. Ничего не удаляется молча.
Быстрый старт
git clone https://github.com/TimXa/SteelMem.git && cd SteelMem
pip install -e .
steelmem --user demo demo # загрузить демо-историю
steelmem --user demo sleep # 💤 сонный агент наводит порядок
steelmem web # дашборд: http://localhost:8765🌌 Галактика памяти
steelmem web → http://localhost:8765/galaxy — вся память в 3D: звёзды-воспоминания, близкие по смыслу притягиваются в созвездия, оранжевые нити с частицами — связи, которые проставил сонный агент. Крути мышью, колесо — зум, наведи — прочитать, клик — перелёт к звезде и карточка с историей правок и соседями. Поиск подсвечивает нужные звёзды. Страница сама обновляется каждые 8 секунд — новые воспоминания появляются на лету.
steelmem galaxy --out galaxy.html — выгрузить галактику в один автономный HTML, чтобы отправить кому угодно.
Визуализация на 3d-force-graph (MIT).
🎙 Любые данные в память
Формат заранее знать не нужно. Кидай что угодно, SteelMem сам разберётся:
steelmem --user me ingest ./что-угодно --watch # файл, папка или архив; --watch следит за папкой
cat расшифровка.txt | steelmem --user me ingest - # текст из stdin / вебхука кулона
steelmem --user me tg ./result.json --me "Имя" # экспорт Telegram с опциями (--since, --chat, --dry-run)Или перетащи файл в дашборд (steelmem web).
Что кидаешь | Что происходит |
| распаковывается (с защитой от zip-slip), содержимое разбирается рекурсивно |
Экспорт Telegram ( | разговоры по паузам 30 мин, владелец помечен «Я», пересылки, без дублей при повторной загрузке |
Любой другой JSON/JSONL (Slack, Discord, WhatsApp, ваши выгрузки) | автоматически находятся «ленты» записей с текстом, временем и автором; без лент структура разворачивается в «ключ: значение» |
txt, md, логи, код, srt, vtt | как текст; строки |
csv / tsv / xlsx | строки как «колонка: значение» |
eml / mbox, ics, vcf | письма, события календаря, контакты |
html / xml | теги убираются |
pdf, docx | текст (pdf: |
mp3, wav, m4a, ogg… | расшифровка речи: локально |
png, jpg… | описание и распознавание текста через модель с vision |
незнакомое | если это текст, он уходит модели как есть; бинарники пропускаются |
Одно и то же содержимое второй раз не добавляется (даже из другого файла или архива). Один испорченный файл не роняет весь импорт.
С LLM-ключом (рекомендуется) жёстких правил нет. Модель сама читает сырой текст, выделяет факты, планы, события, людей, идеи, понимает время («вчера», «в 15:20», «в следующем месяце») и ставит дату. Сонный агент тоже решает моделью: что выполнено, что отменено, что устарело, что дубль. Достаточно одного ключа: OPENAI_API_KEY или OPENROUTER_API_KEY, либо свой endpoint через STEELMEM_LLM_BASE_URL / STEELMEM_LLM_MODEL (Ollama, vLLM, российские модели через совместимый прокси).
Без ключа работает запасной режим на простых правилах RU/EN. Он годится для демо, но текст режет грубо, поэтому для кулона нужен LLM.
Пайплайн кулона: микрофон → сервер (Whisper) → текст в папку → ingest --watch → память → любой агент читает через MCP, человек смотрит в галактике.
🗺 Apple Embedding Atlas
pip install 'steelmem[atlas]' → steelmem atlas — вся память на интерактивной карте (кластеры, поиск, фильтры по статусу/типу/дате). steelmem atlas --export atlas.zip соберёт автономное приложение, которое можно открыть без Python. Это 2D-карта; 3D-галактика со связями сонного агента — steelmem web → /galaxy.
🔭 Чистые векторы в TensorFlow Embedding Projector
steelmem projector --out projector → открыть projector.tensorflow.org → Load → vectors.tsv + metadata.tsv. PCA, t-SNE и UMAP в 3D, поиск и наведение готовые.
Подключить как плагин к агенту (MCP)
Claude Desktop / Claude Code / Cursor / Cline — добавь в конфиг MCP-серверов:
{
"mcpServers": {
"steelmem": {
"command": "steelmem",
"args": ["mcp"],
"env": { "STEELMEM_USER": "me", "STEELMEM_SLEEP_EVERY": "30" }
}
}
}Агент получает инструменты remember, recall, forget, sleep, timeline. STEELMEM_SLEEP_EVERY=30 — сонный агент сам просыпается каждые 30 минут.
Как библиотека
from steelmem import SteelMem
mem = SteelMem()
mem.add("Планирую поехать на море в июле", user_id="vasya")
mem.add("Съездил на море, было круто", user_id="vasya")
mem.sleep(user_id="vasya")
print(mem.context("отпуск", user_id="vasya")) # готовый блок для system promptLLM — по желанию
Без ключей всё работает локально: свои эмбеддинги (char n-граммы, 512 dim) + правила для RU/EN. С LLM качество растёт: реплики разбиваются на атомарные факты, а сонный агент подтверждает связи «план ↔ событие» моделью. Подходит любой OpenAI-совместимый endpoint — OpenAI, Ollama, vLLM, российские модели через совместимый прокси.
export STEELMEM_LLM_BASE_URL=http://localhost:11434/v1 # например Ollama
export STEELMEM_LLM_MODEL=qwen2.5:7b
export STEELMEM_EMBED_MODEL=nomic-embed-text # опциональноАрхитектура
агент ──MCP──► remember / recall ──► SteelMem (SQLite + векторы + статусы + history)
▲
сонный агент ────────┘ COMPLETE · CANCEL · SUPERSEDE · MERGE · STALE
(по таймеру / по кнопке / по вызову sleep)steelmem/store.py— хранилище, поиск (косинус + бонус за свежесть, архив скрыт)steelmem/sleep.py— сонный агентsteelmem/rules.py— классификация план/событие/факт/предпочтение без LLMsteelmem/mcp_server.py— MCP-плагинsteelmem/web.py+dashboard.html— REST API и дашбордsteelmem/galaxy.py+galaxy.html— 3D-галактика памятиsteelmem/ingest.py— автоиндексация папок и транскриптов
Чем отличаемся
Идея сонных агентов — из исследований sleep-time compute (Letta, Apache-2.0); подход «память как отдельный слой» — как у Mem0 (Apache-2.0). SteelMem берёт лучшее из обоих, но остаётся крошечным: один pip install, SQLite, работает без интернета и без ключей, а у каждого воспоминания есть жизненный цикл, а не только вектор.
Лицензия
Apache-2.0
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Cross-tool persistent memory and context for AI assistants over MCP.
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
- LogRackOAuthai.lograck
Shared memory for your AI tools: tasks, notes and context every tool can read and write over MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides persistent, causal memory for AI agents with semantic recall, causal tracking, and importance-based forgetting through MCP tools.-
- AlicenseNot gradedqualityBmaintenanceProvides persistent semantic memory for AI agents via MCP, enabling them to remember, recall, list, update, and forget memories with vector-based similarity search.ISC
- AlicenseCqualityAmaintenanceProvides AI agents with a human-inspired memory layer via MCP, enabling episodic and semantic memory recall, forgetting curves, consolidation, and contradiction detection. It integrates with MCP clients to offer local-first, dependency-free memory management.981MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to store and semantically retrieve durable memories across sessions via MCP or REST, with tools for remembering, recalling, asking, updating, and forgetting memories.6 npmMIT