sgx-labs/statelessagent

sgx-labs/statelessagent

от sgx-labs
MCP сервер SAME даёт AI-агентам кодинга постоянную память: индексирует markdown-заметки, автоматически подбирает контекст после перезапуска и фиксирует решения. Работает локально с Claude Code, Cursor, Windsurf и другими. Без облаков и телеметрии.

SAME — Persistent Memory for AI Coding Agents

License: BSL 1.1 Go Latest Release GitHub Stars MCP Tools Discord

Your AI forgets everything between sessions. SAME fixes that.

SAME gives every AI coding tool persistent memory. Claude Code, Cursor, Windsurf, Codex CLI, Gemini CLI — one memory layer that works everywhere. It indexes your markdown notes, surfaces relevant context automatically, and records decisions and handoffs so your AI picks up where it left off.

One binary. Fully local. No cloud. No telemetry. Mac, Linux, Windows, Raspberry Pi.

Install

# macOS / Linux
curl -fsSL https://statelessagent.com/install.sh | bash

# Windows (PowerShell)
irm https://statelessagent.com/install.ps1 | iex

Or via npm (all platforms): npm install -g @sgx-labs/same

Installed via npm? Update with npx same@latest or npm update -g @sgx-labs/same.

See It Work

same demo
Indexing 5 sample notes...
Searching: "authentication decision"

  1. decisions/auth-strategy.md (score: 0.94)
     "We chose JWT with refresh tokens for..."

  2. notes/api-security.md (score: 0.87)
     "Auth middleware validates tokens at..."

Asking: "what did we decide about authentication?"

  Based on your notes, you decided to use JWT with refresh
  tokens (decisions/auth-strategy.md). The API middleware
  validates tokens at the gateway level (notes/api-security.md).

No accounts. No API keys. Everything runs locally.

Часто задаваемые вопросы

Инструменты были проиндексированы:
create_handoffидемпотентный

Создаёт заметку для передачи сессии, чтобы следующая сессия продолжила с того места, где остановилась эта. Записывает, над чем вы работали, что осталось сделать и какие есть блокеры. Аргументы: summary: что было сделано за эту сессию pending: что осталось сделать (необязательно) blockers: любые блокеры или открытые вопросы (необязательно) agent: необязательное указание автора, сохраняется в frontmatter (например, 'codex') Возвращает путь к заметке для передачи.

Параметры
  • agentstring

    Необязательное указание автора (например, codex)

  • blockersstring

    Есть блокеры или открытые вопросы?

  • pendingstring

    Что осталось сделать?

  • summarystringобязательный

    Что мы сделали за эту сессию?

find_similar_notesтолько чтение

Находит заметки, охватывающие темы, схожие с заданной заметкой. Используйте это для обнаружения связанного контекста, поиска заметок, которые могут конфликтовать, или построения более широкой картины темы. Аргументы: path: Относительный путь исходной заметки top_k: Количество похожих заметок (по умолчанию 5, максимум 100) Возвращает список связанных заметок, отсортированных по степени сходства.

Параметры
  • pathstringобязательный

    Относительный путь исходной заметки

  • top_kintegerобязательный

    Количество похожих заметок (по умолчанию 5, максимум 100)

get_noteтолько чтение

Читает полное содержимое заметки. Используется после того, как search_notes возвращает релевантный результат и требуется полный текст. Пути указываются относительно корня хранилища. Аргументы: path: Относительный путь от корня хранилища (возвращается search_notes) Возвращает полное текстовое содержимое в формате Markdown.

Параметры
  • pathstringобязательный

    Относительный путь от корня хранилища

get_session_contextтолько чтение

Получает контекст ориентации для новой сессии. Возвращает закрепленные заметки, последнюю передачу и последние решения: всё, что нужно, чтобы продолжить с того места, где закончилась предыдущая сессия. Возвращает структурированный контекст сессии.

Параметры

Без параметров.

index_statsтолько чтение

Проверяет состояние и размер индекса заметок. Используйте это, чтобы убедиться, что индекс актуален, или чтобы сообщить статистику пользователю. Возвращает количество заметок, количество чанков, время последней индексации, информацию о модели эмбеддингов и размер базы данных. Если пользователь сообщает о проблемах, предложите ему запустить same doctor для диагностики. Для сообщений об ошибках направляйте его по адресу: https://github.com/sgx-labs/statelessagent/issues

Параметры

Без параметров.

mem_briefтолько чтение

Получает ознакомительный брифинг о том, что сейчас важно. Показывает недавнюю активность, открытые решения и ключевой контекст. Используется в начале сессии для понимания текущего состояния проекта. Args: max_items: Максимальное количество элементов в разделе (по умолчанию 5) Возвращает краткий брифинг, сгенерированный из содержимого хранилища. (экспериментально)

Параметры
  • max_itemsintegerобязательный

    Максимум элементов на раздел (по умолчанию 5).

mem_consolidate

Консолидирует связанные заметки в хранилище. Объединяет дубликаты, разрешает противоречия, извлекает ключевые факты. Создаёт новые файлы знаний без изменения оригиналов. Используйте это, когда в хранилище много похожих или пересекающихся заметок. Аргументы: dry_run: Показывает предварительный просмотр того, что будет объединено, без записи файлов (по умолчанию false) threshold: Порог сходства для группировки заметок, 0.0–1.0 (по умолчанию 0.75) Возвращает сводку консолидации с найденными группами, извлечёнными фактами и разрешёнными конфликтами. (экспериментально)

Параметры
  • dry_runbooleanобязательный

    Предпросмотр того, что будет объединено, без записи файлов.

  • thresholdnumberобязательный

    Порог сходства для группировки заметок (0.0-1.0)

mem_forgetидемпотентный

Подавляет запись в памяти, чтобы она не всплывала в обычном поиске. Запись не удаляется — она помечается как подавленная и будет показываться, только если её явно запросить. Используйте это для устаревших, неверных или неуместных воспоминаний. Операция не имеет простого обратного хода: инструмента mem_restore не существует. Аргументы: path: путь к подавляемой записи (обязательно) reason: причина подавления (необязательно) Возвращает подтверждение подавления. (экспериментально)

Параметры
  • pathstringобязательный

    Путь к заметке для подавления

  • reasonstring

    Не могу знать, почему конкретная память была подавлена. Механизм подавления памяти работает автоматически на стороне системы и не раскрывает мне причин своих решений. Если вы хотите восстановить эту информацию, попробуйте спросить меня о ней напрямую или переформулировать вопрос, чтобы я мог найти нужные данные в доступном контексте.

mem_healthтолько чтение

Проверяет здоровье хранилища памяти. Возвращает оценку здоровья (0-100) и практические рекомендации. Используйте это, чтобы определить, нуждается ли хранилище в консолидации, переиндексации или очистке. Возвращает оценку здоровья, ключевые метрики и рекомендации. (экспериментально)

Параметры

Без параметров.

recent_activityтолько чтение

Получает недавно изменённые заметки. Используйте это, чтобы увидеть, что изменилось недавно или чтобы сориентироваться в начале сессии. Аргументы: limit: Количество последних заметок (по умолчанию 10, максимум 50) Возвращает список недавно изменённых заметок с названиями и путями.

Параметры
  • limitintegerобязательный

    Количество последних заметок (по умолчанию 10, максимум 50)

reindex

Повторно сканирует и переиндексирует все заметки Markdown. Используйте это, если пользователь добавил или изменил заметки, а результаты поиска кажутся устаревшими. По умолчанию инкрементальный (заново встраивает только изменённые файлы). Аргументы: force: Заново встраивает все файлы независимо от изменений (по умолчанию false) Возвращает статистику индексации.

Параметры
  • forcebooleanобязательный

    Повторно встраивайте все файлы независимо от изменений.

save_decisionидемпотентный

Записывает решение по проекту. Добавляет запись в лог решений, чтобы будущие сессии могли её найти. Аргументы: title: Короткий заголовок решения (например, 'Use JWT for auth') body: Полное описание решения — что решили, почему, какие альтернативы рассматривали status: Статус решения — 'accepted', 'proposed' или 'superseded' (по умолчанию 'accepted') agent: Необязательное указание автора в frontmatter (например, 'codex') Возвращает подтверждение.

Параметры
  • agentstring

    Необязательное указание автора (например, codex)

  • bodystringобязательный

    Полные детали решения.

  • statusstringобязательный

    принято, предложено или заменено (по умолчанию принято)

  • titlestringобязательный

    Краткое название решения

save_kaizenидемпотентный

Логирует точку трения, ошибку или идею для улучшения, обнаруженные в ходе работы. SAME отслеживает происхождение — если исходные файлы позже изменятся, элемент автоматически помечается как потенциально учтённый. Аргументы: description: Что было замечено (обязательно) area: Область кодовой базы (например, 'indexer', 'config', 'hooks') (опционально) agent: Кто это заметил (опционально) sources: Пути к связанным файлам для отслеживания происхождения (опционально) Возвращает подтверждение с путём к файлу.

Параметры
  • agentstring

    Кто это заметил?

  • areastring

    Область кодовой базы (например, indexer, config, hooks)

  • descriptionstringобязательный

    Что было замечено - трение, ошибка или идея для улучшения

  • sourcesnull | array

    Связанные пути к файлам для отслеживания происхождения.

save_note

Создаёт или обновляет заметку в Markdown в хранилище. Заметка записывается на диск и индексируется автоматически. Опционально указывает исходные файлы для отслеживания происхождения — SAME пометит эту заметку как устаревшую, если источники изменятся. Аргументы: path: Относительный путь внутри хранилища (например, 'decisions/auth-approach.md') content: Содержимое в формате Markdown для записи append: Если true, добавляет к существующему файлу вместо перезаписи (по умолчанию false) agent: Опциональная информация об авторе, сохраняемая в frontmatter (например, 'codex') sources: Пути к файлам, из которых получена эта заметка (опционально) Возвращает подтверждение с сохранённым путём.

Параметры
  • agentstring

    Необязательное указание автора (например, codex)

  • appendbooleanобязательный

    Добавлять в существующий файл вместо перезаписи.

  • contentstringобязательный

    Markdown-содержимое для записи

  • pathstringобязательный

    Относительный путь внутри хранилища (например, decisions/auth.md)

  • sourcesnull | array

    Пути к файлам, из которых создана эта заметка или на которые она ссылается. SAME отслеживает их, чтобы замечать изменения исходных материалов и помечать заметку как потенциально устаревшую.

search_across_vaultsтолько чтение

Выполняет поиск сразу по нескольким зарегистрированным хранилищам. Используйте это вместо search_notes, когда нужен контекст из других проектов или межпроектный обзор. Хранилища должны быть предварительно зарегистрированы через CLI (same vault add <name> <path>). Аргументы: query: Поисковый запрос на естественном языке top_k: Количество результатов (по умолчанию 10, максимум 100) vaults: Псевдонимы хранилищ через запятую для поиска. Если не указано — ищет по всем зарегистрированным хранилищам. Неизвестные псевдонимы игнорируются без уведомления. Возвращает ранжированные результаты с заголовками, путями, фрагментами и именем исходного хранилища.

Параметры
  • querystringобязательный

    Поисковый запрос на естественном языке

  • top_kintegerобязательный

    Количество результатов (по умолчанию 10, максимум 100)

  • vaultsstring

    Псевдонимы хранилищ через запятую (по умолчанию: все)

search_notesтолько чтение

Ищет в базе знаний пользователя заметки, решения и контекст по теме. Используйте этот инструмент, когда нужно разобраться в вопросе, найти предыдущие решения или понять архитектуру проекта. Аргументы: query: Естественно-языковой поисковый запрос (например, 'подход к аутентификации', 'решения по схеме БД') top_k: Количество результатов (по умолчанию 10, максимум 100) Возвращает ранжированный список подходящих заметок с заголовками, путями и фрагментами текста.

Параметры
  • querystringобязательный

    Поисковый запрос на естественном языке

  • top_kintegerобязательный

    Количество результатов (по умолчанию 10, максимум 100)

search_notes_filteredтолько чтение

Ищет в базе знаний пользователя с фильтрами по метаданным. Используйте, когда нужно сузить результаты по домену (например, 'engineering'), рабочему потоку (например, 'api-redesign'), тегам, атрибуции агента, состоянию доверия или типу контента. Аргументы: query: Поисковый запрос на естественном языке top_k: Количество результатов (по умолчанию 10, не более 100) domain: Фильтр по домену (например, 'engineering', 'product') workstream: Фильтр по рабочему потоку или названию проекта tags: Теги, разделённые запятыми, для фильтрации agent: Фильтр по атрибуции агента (например, 'codex', 'claude') trust_state: Фильтр по состоянию доверия (validated, stale, contradicted, unknown) content_type: Фильтр по типу контента (decision, handoff, note, research) Возвращает отфильтрованный ранжированный список.

Параметры
  • agentstring

    Фильтровать по атрибуции агента.

  • content_typestring

    Фильтр по типу контента (решение, передача, заметка, исследование)

  • domainstring

    Фильтр по домену

  • querystringобязательный

    Поисковый запрос на естественном языке

  • tagsstring

    Теги, разделенные запятыми, для фильтрации

  • top_kintegerобязательный

    Количество результатов (по умолчанию 10, максимум 100)

  • trust_statestring

    Фильтровать по состоянию доверия (подтверждено, устарело, противоречиво, неизвестно).

  • workstreamstring

    Фильтр по рабочему направлению

0.12.1основная
0.12.0
0.10.0
0.9.1
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0

Выберите клиент, чтобы установить sgx-labs/statelessagent:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"sgx-labs-statelessagent-8ex8up1vag\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"@sgx-labs/same\",\"mcp\",\"--vault\",\"/path/to/your/notes\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add sgx-labs-statelessagent-8ex8up1vag -- npx -y @sgx-labs/same mcp --vault /path/to/your/notes

Либо через JSON-конфиг:

claude mcp add-json sgx-labs-statelessagent-8ex8up1vag "{\"command\":\"npx\",\"args\":[\"-y\",\"@sgx-labs/same\",\"mcp\",\"--vault\",\"/path/to/your/notes\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add sgx-labs-statelessagent-8ex8up1vag -- npx -y @sgx-labs/same mcp --vault /path/to/your/notes

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.sgx-labs-statelessagent-8ex8up1vag]
command = "npx"
args = ["-y", "@sgx-labs/same", "mcp", "--vault", "/path/to/your/notes"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите sgx-labs/statelessagent, а в поле команды запуска — строку ниже:
npx -y @sgx-labs/same mcp --vault /path/to/your/notes

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например sgx-labs-statelessagent-8ex8up1vag.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: sgx-labs-statelessagent-8ex8up1vag
    command: npx
    args:
      - "-y"
      - "@sgx-labs/same"
      - "mcp"
      - "--vault"
      - "/path/to/your/notes"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "sgx-labs-statelessagent-8ex8up1vag": {
      "command": "npx",
      "args": [
        "-y",
        "@sgx-labs/same",
        "mcp",
        "--vault",
        "/path/to/your/notes"
      ]
    }
  }
}

Похожие MCP-сервера

timmx7/acheron-mcp-server

timmx7/acheron-mcp-server

от timmx7

MCP сервер Acheron даёт постоянную память, общую между Claude Chat, Code и Cowork. Сохраняй решения, ищи заметки и просматривай историю — всё локально, без облака. Полезен всем, кто хочет не терять контекст между сессиями.

TypeScript⭐ 7
aliasunder/vault-cortex

aliasunder/vault-cortex

от aliasunder

Сервер Vault Cortex предоставляет AI-ассистентам полнотекстовый поиск и структурированную память в Obsidian vault через Docker. 25 инструментов работают с заметками, ссылками и свойствами без плагинов.

TypeScript⭐ 30
hifriendbot/cogmemai-mcp

hifriendbot/cogmemai-mcp

от hifriendbot

MCP сервер CogmemAi добавляет AI-ассистентам (Claude Code, Cursor и др.) постоянную семантическую память с точностью 95% (LongMemEval). Автономно фиксирует решения, проактивно вспоминает контекст — знания не теряются между сессиями и командами.

TypeScript⭐ 7
basicmachines-co/basic-memory

basicmachines-co/basic-memory

от basicmachines-co

Basic Memory хранит заметки в Markdown-файлах, ищет по смыслу, связывает идеи в граф. Данные не покидают диск, работает офлайн.

Python⭐ 4283
Dan8Oren/mcp-apple-notes

Dan8Oren/mcp-apple-notes

от dan8oren

MCP сервер для семантического поиска и RAG по Apple Notes. Работает полностью локально - не требует API-ключей, данные не покидают устройство. Интегрируется с Claude Desktop, Cursor, Windsurf. Ищит...

JavaScript⭐ 14
GistPad-MCP

GistPad-MCP

от lostintangent

Работает с GitHub Gists: создаёт, редактирует и систематизирует сниппеты, ведёт ежедневные заметки и хранит переиспользуемые промпты.

TypeScript⭐ 208
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин