oterm CLI
oterm — терминальный чат с Ollama, OpenAI, Anthropic и другими провайдерами: сессии в SQLite, MCP-серверы, встроенные и собственные инструменты
- 2 446 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Встроенный инструмент `shell` выполняет команды оболочки по запросу модели без ограничения каталога
- Возможность `filesystem` читает и пишет файлы в каталоге запуска, а MCP-серверы запускаются как отдельные процессы
- Ключи облачных провайдеров берутся из окружения, а текст чатов уходит выбранному провайдеру, веб-поиск и загрузка адресов ходят в сеть
Установка
Ручная установка
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` репозитория.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыOllama запускает открытые нейросети на вашем компьютере и отдает их агентам через локальный API, совместимый с OpenAI и Anthropic.
Терминальный MCP-клиент для локальных моделей Ollama: инструменты, промпты и ресурсы MCP, режим агента и переключение моделей
CLI и Python-библиотека для работы с OpenAI, Claude, Gemini, локальными и другими моделями: промпты, чаты, инструменты, эмбеддинги и лог в SQLite
Персональный AI-агент в терминале с шеллом, Python, вебом и локальными моделями, один из первых агентных CLI
MCP-сервер отправляет один промпт сразу нескольким моделям OpenAI, Anthropic, Gemini, Groq, DeepSeek и Ollama и может собрать из ответов решение
Локальный ИИ-агент, который работает на своем железе через llama.cpp, водит браузер, правит файлы, выполняет разрешенные команды и помнит контекст между сессиям
Коротко о README
Главная страница репозитория короткая: одна строка о том, что это терминальный клиент для Ollama, OpenAI, Anthropic и провайдеров на pydantic-ai, анимация заставки, команда установки `uvx oterm`, ссылки на документацию и журнал изменений и лицензия MIT. Подробности вынесены в каталог docs: возможности, способы установки, настройка, MCP, инструменты, команды и сочетания клавиш, параметры моделей и пример RAG. В репозитории есть пример собственного инструмента, тесты приложения и агента и журнал изменений.