openlocal
openlocal
Открытые инструменты. Локальный интеллект. Никакого облака.
Набор инструментов, с которым действительно могут работать маленькие локальные модели — и доказательства этому.
pip install openlocal
openlocal quickstartВот и всё. quickstart находит сервер модели, который у вас уже запущен — ollama, LM Studio,
llama.cpp, vLLM — записывает вашу конфигурацию, измеряет, какой протокол вызова инструментов ваша модель
действительно может использовать, и запускает реальную задачу, чтобы вы увидели, как это работает:
$ openlocal quickstart
openlocal quickstart - looking for a model server...
found ollama at http://127.0.0.1:11434/v1 with 6 model(s)
wrote ~/.openlocal/models.toml
default model: qwen3-4b (served as qwen3:4b)
measuring which tool protocol this model can drive...
-> native tool calling
demo: Read notes.md and tell me how many lines it has.
tool file_read
final
The file notes.md has 3 lines.
You are set up. Try:
openlocal run "list the files here and summarise what this project is"
openlocal eval # score this model on 15 deterministic tool tasks
openlocal mcp # serve these tools to Claude Code over MCPЗачем нужен openlocal
🪶 Ноль зависимостей | Чистая стандартная библиотека. Устанавливается за секунды, работает на Raspberry Pi и не может быть сломана чьим-то релизом. |
🔌 Работает с тем, что у вас есть | Всё, что говорит на API OpenAI |
📊 Измерено, не заявлено | 10 моделей от 9 вендоров, оценённых по 17 детерминированным задачам. Никакого LLM-судьи — каждая проверка это diff файлов или регулярное выражение. |
🧰 Один реестр, два интерфейса | Те же 8 инструментов работают как MCP-сервер (Claude Code, любой MCP-клиент) и как агентский цикл для локальной модели. |
🩹 Настроено на реальных ошибках | Каждое эргономическое правило здесь оплачено сбоем модели. Таблица уроков — то, чего вы больше нигде не найдёте. |
🧩 Добавьте вендора, отредактировав TOML | Новая семья моделей? Отредактируйте |
Related MCP server: Hermes MCP Server
Таблица лидеров
Одни и те же задачи, одни и те же инструменты, по одной модели за раз, по два запуска каждая. tools — это протокол, который измерено использует модель — не тот, что заявлен в её документации.
модель | вендор | инструменты | пройдено | процент прохождения | плохой json | ток/с |
| Alibaba | нативные | 17/17 | 100% | 0 | 40.4 |
| z.ai | нативные | 17/17 | 100% | 0 | 39.9 |
| Alibaba | нативные | 17/17 | 100% | 0 | 16.6 |
| NVIDIA | нативные | 16/17 | 94% | 0 | 54.9 |
| нативные | 16/17 | 94% | 0 | 50.3 | |
| OpenAI | нативные | 16/17 | 94% | 2¹ | 45.3 |
| IBM | нативные | 15/17 | 88% | 4 | 66.0 |
| Meta | нативные | 14/17 | 85% | 2 | 33.4 |
| Mistral | нативные | 14/17 | 82% | 0 | 11.1 |
| Microsoft | нативные | 13/17 | 79% | 0 | 61.5 |
¹ Парсер гармонии gpt-oss отклоняет некоторые из его собственных вызовов инструментов (llama.cpp отвечает 500).
Лестница повторных попыток клиента восстанавливает каждый из них — столбец retries в
RESULTS.md отражает это честно.
Воспроизведите: openlocal leaderboard --repeat 2
Почему ваша маленькая модель не справляется с инструментами
Модель на 3B параметров терпит неудачу не потому, что она глупая. Она терпит неудачу, потому что вывод инструмента — это промпт, а большинство выводов инструментов написаны для людей. Всё ниже было измерено — оставлено, когда оценка росла, и отменено, когда нет.
что сломалось | исправление | измеренный эффект |
«Что в строке 300?» → модель ответила про строку 311 | нумеровать каждую строку: | исправлено за один раз, на всех моделях |
Модель проходила файл на 500 строк по одной строке за шаг | нижние колонтитулы сообщают факты, а не команды («файл продолжается» ≠ «вызови снова…») | phi: 12 потраченных шагов → 2 |
Проза вместо вызова инструмента | проза без инструмента = окончательный ответ (только нативные) | phi: 51 некорректных ответов → 5 |
…но «Конечно, я использую file_grep» — это план | обнаружение намерений: планы подталкиваются, ответы принимаются | запуски перестали заканчиваться на намерениях |
| синтаксис прозаического вызова разбирается и выполняется | устранены потраченные впустую ходы |
| восстановление JSON: поиск скобок, закрытие хвоста, литералы Python, слияние фрагментов | phi плохой_json 5 → 0 |
Модель записала файл до того, как прочитала исходник | обнаружение устаревшей записи в момент завершения | llama: 13 → 15 / 15 |
Модель угадала «44» и повторяла это при подсказке | один ход | granite восстановил задачу |
Идеально прочитала CSV из 4 строк, сказала, что сумма равна 40 | инструмент | granite: +2 задачи |
Записала выходной файл, ни разу не прочитав исходник | обнаружение записи «из воздуха» в момент завершения | qwen-4b через MCP восстановлен |
Скопировала префиксы ссылок |
| edit_code: 10/10 моделей проходят |
Один и тот же вызов, бесконечно (A→B→A→B) | защита от повтора воспроизводит кэшированный результат | пагинационный цикл llama исчез |
Сервер выдаёт 500 на свой же синтаксис вызова инструментов | лестница повторных попыток: как запрошено → теплее → тот же ход без | gpt-oss: 11/15 → 14/15 |
Отменено: ещё одно правило в системном промпте | — | granite 12/15 → 11/15. Меньше правил — лучше. |
MCP — полноправный участник, а не обёртка
openlocal eval --via-mcp перезапускает весь набор тестов с инструментами, предоставляемыми через реальный
stdio MCP-сервер — схемы, передаваемые по проводу, результаты в виде блоков контента, подпроцесс на
задачу. Результаты совпадают с внутрипроцессными числами, в этом и суть: то, что видит
Claude Code, было измерено.
Используйте из Claude Code (или любого MCP-клиента)
pip install "openlocal[mcp]"
claude mcp add openlocal -- openlocal mcpТе же 10 инструментов, которые использует ваша локальная модель, теперь в Claude Code. finish остаётся позади — это
управление циклом, а не возможность.
Команды
openlocal quickstart # find a server, configure, probe, demo
openlocal run "goal" # agent loop over your tools
openlocal run "goal" --url http://host:1234/v1 # no config at all
openlocal chat "hello" # one plain turn, no tools
openlocal tools # what the model can call
openlocal probe # measure native vs JSON tool calling
openlocal eval # 17 deterministic tasks, pass/fail
openlocal eval --via-mcp # same tasks, tools served over a REAL MCP server
openlocal leaderboard --repeat 2 # every configured model, one table
openlocal mcp # stdio MCP server
openlocal models / serve / stop / status / pull # local llama-server managementsmol — более короткий псевдоним для той же CLI.
Конфигурация
Ваша рабочая область — ~/.openlocal (или любая директория, содержащая models.toml, или
$OPENLOCAL_HOME). Она содержит models.toml, state.json, логи, загрузки и результаты тестов —
никогда не устанавливаемый пакет.
[engine.ollama]
type = "external"
base_url = "http://127.0.0.1:11434/v1"
[[model]]
id = "qwen"
engine = "ollama"
family = "qwen" # tells openlocal this vendor's tool-calling quirks
served_model = "qwen3:4b" # the exact name the backend knows
default = trueпеременная окружения | значение по умолчанию | значение |
|
| рабочая директория |
| – | направить каждую команду на один сервер |
| текущая рабочая директория | корневая песочница для файловых и шелл-инструментов |
| 8000 | жёсткое ограничение на один результат инструмента |
| команды разработчика | список через запятую, или |
| 120 | секунд до отмены вызова MCP-инструмента |
Инструменты
file_list(path=".") list files and folders
file_read(path, start_line=1, limit=200) read a file, one page at a time
file_write(path, content) write a file
file_edit(path, find, replace) replace text exactly, leave the rest alone
file_append(path, content) add to the end without touching what exists
file_grep(pattern, path=".") search files
web_search(query, limit=5) search the web (DuckDuckGo, or Tavily via key)
web_read(url, offset=0, max_chars=4000) read a page as text
shell_run(command, timeout=60) run one allowlisted command
calc(expression) exact arithmetic - models cannot count
finish(answer) agent loop only: end the taskВнутренние правила, подкреплённые тестами: плоские аргументы со значениями по умолчанию, пример вызова в каждом
описании, однострочные заголовки результатов, вывод с жёстким ограничением и правдивой подсказкой о продолжении,
и ошибки, которые называют следующий шаг — нет такого файла: x - вызовите file_list("."), чтобы увидеть существующие файлы.
Архитектура
tools/ one registry → mcp_server.py (Claude Code speaks MCP to it)
→ agent.py (a local model calls the same tools)
_http.py the entire network layer, on urllib (this is why deps = 0)
runner.py external servers, or llama-server processes it starts and owns
protocol.py native tool_calls → loose JSON → repair → symptom-specific nudge
families.toml per-vendor quirks as DATA - the file contributors edit
evals/ 17 deterministic tasks + a leaderboard across modelsУчастие в разработке
Добавление семейства моделей не требует Python: отредактируйте families.toml, добавьте
свою модель в models.toml, затем
openlocal probe --model your-model
openlocal eval --model your-modelи вставьте полученную строку в PR. См. CONTRIBUTING.md.
Запуск локальных моделей GGUF на оборудовании AMD (ROCmFP4 + MTP спекулятивное декодирование) описан в docs/ENGINE.md — опционально и не требуется для всего вышеперечисленного.
Лицензия
MIT © DevXV3
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA lightweight and fast MCP server that enables AI agents to efficiently discover and execute tools through progressive disclosure, minimizing context consumption while supporting safe code execution in external environments.12
- FlicenseNot gradedqualityBmaintenanceA lightweight Node.js MCP server with zero dependencies offering 9 built-in tools for system info, web fetching, GitHub search, file operations, shell execution, and key-value memory, enabling AI agents to perform these tasks via the Model Context Protocol.
- AlicenseNot gradedqualityBmaintenanceA plug-and-play MCP server that adds zero-boilerplate tools like file search, reliability scoring, and prompt injection detection to any MCP-compatible agent.MIT
- FlicenseBqualityCmaintenanceA lightweight MCP server that enables AI assistants to interact with the local machine through terminal, filesystem, and Python execution tools.91
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevXV3/openlocal'
If you have feedback or need assistance with the MCP directory API, please join our Discord server