oterm CLI

oterm — терминальный чат с Ollama, OpenAI, Anthropic и другими провайдерами: сессии в SQLite, MCP-серверы, встроенные и собственные инструменты

  • 2 446 ★ репозитория
  • Последний коммит
  • MIT
CLI

Широкий доступ

Почему такой уровень

  • Встроенный инструмент `shell` выполняет команды оболочки по запросу модели без ограничения каталога
  • Возможность `filesystem` читает и пишет файлы в каталоге запуска, а MCP-серверы запускаются как отдельные процессы
  • Ключи облачных провайдеров берутся из окружения, а текст чатов уходит выбранному провайдеру, веб-поиск и загрузка адресов ходят в сеть
Все причины и проверки

ggozad/oterm

Установка

Ручная установка

uvx oterm

Запускает oterm без установки. Обновить версию можно командой uvx oterm@latest.

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Встроенный инструмент `shell` выполняет команды оболочки по запросу модели без ограничения каталога
  • Возможность `filesystem` читает и пишет файлы в каталоге запуска, а MCP-серверы запускаются как отдельные процессы
  • Ключи облачных провайдеров берутся из окружения, а текст чатов уходит выбранному провайдеру, веб-поиск и загрузка адресов ходят в сеть

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

oterm запускается командой `oterm` (или `uvx oterm`) и открывает в терминале интерфейс для чата с языковыми моделями. Он находит провайдеров по окружению: запущенный Ollama на 127.0.0.1:11434 появляется без настройки, для облачных провайдеров достаточно задать ключ в переменной окружения. Список включает Ollama, OpenAI, Anthropic, Google, Groq, Mistral, Cohere, AWS Bedrock, DeepSeek, Cerebras, Grok, Hugging Face и любую конечную точку, совместимую с OpenAI, например vLLM, LM Studio, llama.cpp, OpenRouter и LiteLLM. Каждый чат хранится в SQLite вместе с системным промптом и параметрами, вкладок с чатами может быть несколько. Модели можно подключить инструменты. Встроенные: `think`, `date_time`, `shell` и `generate_image` (картинки через модель генерации Ollama). Собственный инструмент пишется как функция на Python и регистрируется в группе точек входа `oterm.tools`, после чего oterm подхватывает его при запуске. Любой MCP-сервер добавляется в ключ `mcpServers` файла `config.json`, схема совпадает с Claude Desktop и Cursor. Модель видит каждый инструмент под именем `{сервер}_{инструмент}`, а включать инструменты можно в каждом чате отдельно. Кроме инструментов, есть возможности из pydantic-ai: `web_search`, `web_fetch`, `memory` (общая записная книжка в `memory.db`), `filesystem` (чтение, запись и поиск файлов только внутри каталога запуска), `summarize` и `speak`. Когда разговор занимает 80% окна контекста, `summarize` заменяет старые сообщения сводкой от модели чата и оставляет последние 40% окна как есть. Команды вызываются через палитру по Ctrl+p: переименование и экспорт чата в Markdown, повторная генерация последнего ответа, история запросов, журнал. Картинки к сообщению добавляются по Ctrl+i.

Для кого. Для разработчиков и энтузиастов локальных моделей, которым нужен быстрый чат в терминале с несколькими провайдерами и проверкой MCP-серверов без редактора.

Подходит, если

  • На машине запущен Ollama, vLLM или LM Studio, и нужен чат в терминале без браузера и отдельного веб-интерфейса
  • Нужно проверить, как конкретная модель вызывает инструменты MCP-сервера, не подключая сервер к редактору или агенту
  • Вы переключаетесь между локальной моделью и облачной, например OpenRouter или Anthropic, и хотите хранить все чаты в одном месте с системными промптами и параметрами
  • Нужен собственный инструмент для модели: функция на Python, зарегистрированная через `oterm.tools`, подключается без правки кода oterm
  • Длинные разговоры упираются в окно контекста, и старые сообщения нужно автоматически сворачивать в сводку

Не подходит, если

  • Нужен агент, который редактирует репозиторий, запускает тесты и коммитит: oterm остается чатом, а файлы читает и пишет только в каталоге запуска
  • Ваш MCP-сервер доступен только по `ws://` или `wss://`: эти транспорты не поддерживаются, нужен HTTP или stdio
  • Нужны подсказки и шаблоны MCP: команда «Use MCP prompt» удалена, поддерживаются только инструменты
  • Вам нужен графический интерфейс с мышью: oterm рассчитан на терминал и сочетания клавиш

Пример запроса к агенту

Поставь oterm, подключи мой локальный Ollama и добавь в config.json MCP-сервер для git, чтобы модель могла смотреть историю коммитов

Ограничения

  • Интеграцию с MCP переписали на поддержке MCP из pydantic-ai. Старое поле `auth` с типом bearer больше не читается, и такая запись молча теряется, пока сервер не начнет отвечать 401. Токен теперь задается через заголовок `Authorization`.
  • Процессы stdio-серверов не наследуют окружение, кроме `HOME`, `LOGNAME`, `PATH`, `SHELL`, `TERM` и `USER` на Linux и macOS. Остальные переменные нужно объявить в блоке `env`. Имя сервера может содержать только буквы, цифры, подчеркивание и дефис, иначе сервер не загрузится.
  • Вызывать инструменты умеют не все модели, у маленьких это получается хуже: если вызовы не идут, уменьшите число инструментов в чате или возьмите модель побольше.
  • Возможность `speak` требует дополнительного пакета с `piper-tts` под GPL-3.0 и читает ответ единственным голосом GLaDOS, сменить его нельзя.
  • Пакеты для Arch, NixOS и FreeBSD ведут участники сообщества, они могут отставать от релиза. Лицензия MIT.

Как отключить. Закройте oterm сочетанием Ctrl+q. Запуск через `uvx` ничего не устанавливает, для `pip` выполните `pip uninstall oterm`, для Homebrew `brew uninstall oterm`. Чаты и настройки лежат в каталоге данных, путь покажет `oterm --data-dir`, этот каталог можно удалить вручную.

Частые вопросы

Какие провайдеры моделей поддерживает oterm?

Ollama, OpenAI, Anthropic, Google, Groq, Mistral, Cohere, AWS Bedrock, DeepSeek, Cerebras, Grok, Hugging Face и любая конечная точка в формате OpenAI, локальная (vLLM, LM Studio, llama.cpp) или облачная (OpenRouter, LiteLLM). Ollama на 127.0.0.1:11434 подхватывается сам, для остальных задают ключ в переменной окружения, а свои конечные точки перечисляют в блоке `openaiCompatible`.

Как добавить MCP-сервер в oterm?

Впишите его в ключ `mcpServers` файла `config.json` в формате Claude Desktop и Cursor: для локального сервера `command`, `args` и `env`, для удаленного `url`. Адрес, оканчивающийся на `/sse`, считается SSE, остальные — потоковым HTTP. Токен передается заголовком `Authorization` в поле `headers`. Включают сервер в списке инструментов чата.

Чем возможность filesystem отличается от инструмента shell?

`filesystem` читает, пишет и ищет файлы только внутри каталога, из которого запущен oterm, а пути вне него отклоняет. Файлы `.git`, `.env`, ключи и секреты доступны только для чтения. `shell` запускает команды оболочки и отдает их вывод модели, ограничения на каталог у него нет, поэтому автор советует осторожность.

Где oterm хранит чаты и память модели?

В каталоге данных: на Linux это `~/.local/share/oterm`, на macOS `~/Library/Application Support/oterm`, на Windows `AppData/Roaming/oterm`. Чаты лежат в SQLite вместе с системным промптом и параметрами, общая память модели в `memory.db`. Каталог меняют переменной `OTERM_DATA_DIR`, а `oterm --data-dir` печатает текущий путь.

Как написать собственный инструмент для модели?

Напишите функцию Python: имя, строка документации и аннотации типов превращаются в описание инструмента для модели. Зарегистрируйте ее в `pyproject.toml` в группе `oterm.tools`, установите пакет в то же окружение, что и oterm, и выберите инструмент при создании чата. Пример `oracle` лежит в папке `docs/oracle` репозитория.

Обсуждение

Вопросов и отзывов пока нет.

Официальный

Ollama запускает открытые нейросети на вашем компьютере и отдает их агентам через локальный API, совместимый с OpenAI и Anthropic.

CLIРасширенный доступ184,5 тыс.Звезды репозитория

Терминальный MCP-клиент для локальных моделей Ollama: инструменты, промпты и ресурсы MCP, режим агента и переключение моделей

CLIРасширенный доступ832Звезды репозитория

CLI и Python-библиотека для работы с OpenAI, Claude, Gemini, локальными и другими моделями: промпты, чаты, инструменты, эмбеддинги и лог в SQLite

CLIРасширенный доступ12,7 тыс.Звезды репозитория
Официальный

Персональный AI-агент в терминале с шеллом, Python, вебом и локальными моделями, один из первых агентных CLI

CLIРасширенный доступ4,5 тыс.Звезды репозитория
Нужен VPN

MCP-сервер отправляет один промпт сразу нескольким моделям OpenAI, Anthropic, Gemini, Groq, DeepSeek и Ollama и может собрать из ответов решение

MCP-серверРасширенный доступ739Звезды репозитория

Локальный ИИ-агент, который работает на своем железе через llama.cpp, водит браузер, правит файлы, выполняет разрешенные команды и помнит контекст между сессиям

CLIШирокий доступ3,4 тыс.Звезды репозитория

Коротко о README

Главная страница репозитория короткая: одна строка о том, что это терминальный клиент для Ollama, OpenAI, Anthropic и провайдеров на pydantic-ai, анимация заставки, команда установки `uvx oterm`, ссылки на документацию и журнал изменений и лицензия MIT. Подробности вынесены в каталог docs: возможности, способы установки, настройка, MCP, инструменты, команды и сочетания клавиш, параметры моделей и пример RAG. В репозитории есть пример собственного инструмента, тесты приложения и агента и журнал изменений.

Бейдж для README

Сообщить о проблеме

Foxx AIoterm
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.