Letta Code через RouterAI: CLI-агент с долгой памятью на Claude, GPT и DeepSeek
Letta Code
Letta Code — CLI-агент от создателей MemGPT (репозиторий letta-ai/letta-code, лицензия Apache 2.0). Это stateful-агент: у него есть постоянная идентичность и долговременная память, и он возвращается к ней из сессии в сессию, а не начинает с чистого листа. Память хранится в git-репозитории из обычных Markdown-файлов, которые агент сам читает и правит. Работать с ним можно в терминале, в браузере и через мессенджеры: Telegram, Slack, Discord.
Letta Code умеет подключать любой OpenAI-совместимый API, поэтому RouterAI добавляется как обычный провайдер. Вы получаете в одном агенте Claude, GPT, DeepSeek и GLM из каталога моделей, работу из России без VPN и оплату в рублях. Смена модели не стирает память: она принадлежит агенту, а не модели.
Что такое stateful-агент и память
Обычный coding-агент каждую сессию начинает заново: перечитывает проект и переспрашивает договорённости. У stateful-агента есть собственное состояние: имя, личность, системный промпт, настройки модели и инструментов, история разговоров и долговременная память (документация).
Память устроена как MemFS, git-репозиторий агента:
- файлы в корне памяти (
persona.md,human.mdи другие) целиком попадают в системный промпт на каждом ходу, поэтому в них хранят личность агента, предпочтения пользователя и важные факты о проекте; - каталоги со своим
MEMORY.mdостаются вне контекста, пока агент не откроет нужный файл по подсказкам из корневого индекса; - каждая правка памяти коммитится, так что у неё есть история.
Общая картина, виды памяти и риски описаны в статье Agent Memory. Letta Code реализует «блоки памяти» и «dreaming» (фоновую консолидацию заметок), о которых там идёт речь.
Требования
- macOS, Linux или Windows; Node.js 22.19 и новее
- Терминал с поддержкой цвета
- API-ключ из личного кабинета
Аккаунт Letta не нужен: в локальном режиме агенты, память и подключения к провайдерам хранятся на вашем компьютере (Self-hosting).
Установка
npm install -g @letta-ai/letta-code
Альтернатива, если Node.js нет: uv tool install letta или pipx install letta (Node.js входит в пакет, нужен Python 3.9+). Если npm install -g падает с EACCES, не используйте sudo: README рекомендует uv/pipx, npm-префикс в домашнем каталоге или nvm.
Проверьте установку:
letta --version
По умолчанию Letta Code работает с облаком Letta и при первом запуске предлагает войти. Чтобы хранить всё локально, выберите режим local:
letta backend local
Команда letta backend показывает текущий режим, а флаг --backend local меняет его для одного запуска. Мастер первого выбора можно вызвать снова командой letta setup.
Подключение к RouterAI
В списке провайдеров Letta Code есть универсальный пункт OpenAI-compatible API: ему нужны API key и base URL. Именно он подходит для RouterAI.
Из терминала
Задайте ключ в переменной окружения (например, в ~/.zshrc): export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx". Затем подключите провайдер:
letta connect openai-compatible \
--base-url https://routerai.ru/api/v1 \
--api-key "$ROUTERAI_API_KEY"
Команда проверяет ключ и сохраняет провайдера в локальном хранилище:
Validating OpenAI-compatible API API key...
Saving provider...
Connected OpenAI-compatible API (openai-compatible) in local storage.

Из интерактивной сессии
Запустите letta в каталоге проекта и введите /connect. Выберите OpenAI-compatible API и укажите те же значения:
-
Base URL:
https://routerai.ru/api/v1 - API Key: ключ из личного кабинета
Это та же процедура, что и letta connect: CLI-команда повторяет поток /connect.
Выбор модели
Введите /model и начните печатать id модели: список фильтруется. После подключения Letta Code запрашивает у RouterAI /v1/models и показывает весь каталог (в нашей проверке это 584 модели), id вида anthropic/claude-sonnet-5.5 отображаются как есть.

Для запуска с конкретной моделью и для скриптов используйте handle в формате openai-compatible/<id модели из каталога>:
letta --new-agent --model openai-compatible/anthropic/claude-sonnet-5.5
Документация предупреждает, что флаг --model ведёт себя нестабильно при возобновлении сессии, а в интерактивном режиме надёжнее /model. Для OpenAI-совместимых шлюзов в селекторе есть выбор уровня reasoning: Letta передаёт его в поле reasoning_effort, а значение Default это поле не отправляет. Если запрос падает только после выбора явного уровня, верните Default.
Anthropic Messages API
В списке провайдеров Letta Code есть и отдельный пункт Anthropic API, но в документации для него описан только ключ, а поля Base URL нет. Поэтому для RouterAI используйте OpenAI-совместимый провайдер выше: Claude через него работает так же, как остальные модели каталога. Переменные ANTHROPIC_BASE_URL и OPENAI_BASE_URL в документации Letta Code как способ подключения не описаны. В установленном пакете они нашлись только внутри SDK-зависимостей, поэтому рассчитывать на них не стоит.
Выбор модели
Идентификаторы проверены по каталогу RouterAI на момент написания; цены и актуальный список смотрите в каталоге. Документация Letta советует начинать с сильной frontier-модели: слабые модели чаще ведут себя непредсказуемо. Тулсет (набор инструментов) Letta Code переключает сам при смене модели через /model.
| Модель | Для чего |
|---|---|
anthropic/claude-sonnet-5.5 |
Основная модель: работа с кодом и ведение памяти. В наших проверках на ней же снят пример ниже |
anthropic/claude-opus-5.5 |
Сложные рефакторинги и долгие задачи |
openai/gpt-6.1-terra |
Альтернатива Claude от OpenAI |
deepseek/deepseek-v4.1-flash |
Дешёвые массовые правки и вспомогательные запросы |
z-ai/glm-5.3 |
Недорогая альтернатива для повседневных задач |
Мы отправили запрос через letta -p на anthropic/claude-sonnet-5.5, openai/gpt-6.1-terra, deepseek/deepseek-v4.1-flash и z-ai/glm-5.3: все четыре ответили.
Проверка подключения
Быстрая проверка без интерфейса. Флаг -p запускает один запрос, а --yolo отключает запросы на подтверждение, поэтому на чужом проекте его лучше не использовать:
letta -p "Ответь одним словом: pong" --new-agent \
--model openai-compatible/anthropic/claude-sonnet-5.5
Ответ pong значит, что ключ, Base URL и модель настроены верно. Для интерактивной проверки запустите letta в каталоге проекта и дайте агенту небольшую задачу.

Проверка памяти между сессиями
Чтобы убедиться, что память работает, попросите агента запомнить факт в одном запуске и спросите о нём в другом:
letta -p "Запомни: суммы счетов в проекте хранятся в копейках, тесты запускаются командой npm test" \
--new-agent --model openai-compatible/anthropic/claude-sonnet-5.5
letta -p "Как в проекте хранятся суммы и чем запускать тесты?"
В нашей проверке агент записал заметку в файл project-conventions.md и закоммитил её, а второй запуск, без подсказок, ответил: суммы хранятся в копейках целыми числами, тесты запускаются npm test. Второй запуск без --new-agent продолжает работу с тем же агентом.
Файлы памяти лежат на диске: в локальном режиме это каталог ~/.letta/lc-local-backend/memfs/<id агента>/memory/ с обычным .git внутри. Их можно открыть редактором и посмотреть историю через git log. В интерактивной сессии пригодятся команды /memory (посмотреть память), /remember (попросить запомнить), /init (заново изучить проект), /sleeptime (настроить фоновое обновление памяти) и /agents (переключиться между агентами).
Память принадлежит агенту. Агент, созданный с --new-agent, начинает с пустой памяти, а общие знания о проекте для разных агентов лучше держать в AGENTS.md.
Расход токенов
Память не бесплатна: файлы из корня памяти попадают в системный промпт на каждом ходу и оплачиваются как входные токены. Это общий риск памяти агента, о нём подробнее в статье Agent Memory.
Мы замерили самый короткий запрос («Ответь одним словом: pong») на агенте с одной заметкой в памяти: letta -p ... --output-format json вернул prompt_tokens: 6467 и completion_tokens: 4, кэшированных входных токенов в ответе не было. Основная часть этих токенов приходится на системный промпт и описания инструментов, поэтому у вашей установки цифры будут другими. Что делать с расходом:
- держите в корне памяти только важное, а справочные материалы убирайте в каталоги со своим
MEMORY.md: они подгружаются по запросу; - смотрите расход командами
/usageи/context, а лимит окна задавайте через/context-limit; - для длинных сессий используйте
/compact, а вспомогательную работу поручайте дешёвым моделям вродеdeepseek/deepseek-v4.1-flash; - стоимость токенов смотрите в каталоге моделей: она зависит от модели и объёма контекста.
Каналы: Telegram, Slack, Discord
В локальном режиме агента можно подключить к мессенджерам: letta server --backend local --channels slack запускает отдельный процесс с каналами, а пошаговые инструкции есть в документации для Telegram, Slack и Discord. Модель в этом случае берётся из подключённых провайдеров, то есть работает и через RouterAI.
Решение проблем
Ошибка при установке через npm
EACCES означает, что глобальный каталог npm принадлежит root. Не используйте sudo: от этого ломается самообновление CLI. Поставьте через uv tool install letta или pipx install letta, настройте npm-префикс в домашнем каталоге или используйте nvm. Если падает сборка нативного модуля node-pty (например, в окружении без доступа к nodejs.org), у нас сработала установка npm install -g --ignore-scripts @letta-ai/letta-code.
Ключ не принимается или 401
Команда letta connect проверяет ключ при сохранении. Убедитесь, что ROUTERAI_API_KEY экспортирована в том же терминале, а ключ скопирован из личного кабинета целиком.
404 или модель не найдена
Base URL должен быть https://routerai.ru/api/v1, с /v1. В --model перед id из каталога ставится префикс провайдера: openai-compatible/anthropic/claude-sonnet-5.5. Если сомневаетесь, выберите модель через /model.
Ошибка только после выбора уровня reasoning
Letta отправляет выбранный уровень в поле reasoning_effort. Если запрос падает именно после этого, выберите в селекторе Default: поле перестанет отправляться.
Агент «забыл» проект
Скорее всего, запущен новый агент (--new-agent) или вы вошли в другой режим. Проверьте режим командой letta backend, выберите нужного агента через /agents и откройте /memory. Агенты локального режима не видны в облачном веб-приложении и не копируются автоматически.
Оплата и баланс
Код 402 означает нехватку средств: пополните баланс в разделе Биллинг.
Что дальше
- Agent Memory — как устроена память агента и чем она отличается от RAG
- Каталог моделей — подберите модель под задачу
- Аутентификация — управление API-ключами
- Hermes Agent и nanobot — другие агенты с памятью через RouterAI
- Документация Letta Code