Skip to main content
Glama

openlocal

열린 도구. 로컬 두뇌. 제로 클라우드.

작은 로컬 모델이 실제로 사용할 수 있는 도구 벨트 — 그리고 이를 증명하는 증거.

CI PyPI Python Dependencies License


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을 사용하는 이유

🪶 제로 종속성

순수 표준 라이브러리. 몇 초 만에 설치되고, 라즈베리 파이에서 실행되며, 다른 사람의 릴리스로 인해 깨지지 않습니다.

🔌 가지고 있는 것과 함께 작동

OpenAI /v1 API를 사용하는 모든 것. 하나의 URL, 어댑터 불필요, 계정 불필요.

📊 측정되었고, 주장되지 않음

9개 공급업체의 10개 모델, 17개의 결정론적 작업에서 점수 측정. LLM 판정자 없음 — 모든 검사는 파일 diff 또는 정규식입니다.

🧰 하나의 레지스트리, 두 가지 표면

동일한 8개 도구가 MCP 서버(Claude Code, 모든 MCP 클라이언트)와 로컬 모델 에이전트 루프를 지원합니다.

🩹 실제 실패에 맞춰 조정됨

여기 있는 모든 인체공학적 규칙은 모델이 고장난 대가로 얻어졌습니다. 교훈 표는 다른 곳에서는 얻을 수 없는 부분입니다.

🧩 TOML 편집으로 공급업체 추가

새로운 모델 제품군? families.toml을 편집하고, openlocal probe를 실행한 후, PR을 보내세요. Python이 필요하지 않습니다.

Related MCP server: Hermes MCP Server

리더보드

동일한 작업, 동일한 도구, 한 번에 하나의 모델, 각각 두 번 실행. tools는 각 모델이 측정된 구동 프로토콜입니다 — 문서에 명시된 것이 아닙니다.

model

vendor

tools

passed

pass rate

bad json

tok/s

qwen3.8-4b

Alibaba

native

17/17

100%

0

40.4

glm-4.7-flash

z.ai

native

17/17

100%

0

39.9

qwen3.8-27b

Alibaba

native

17/17

100%

0

16.6

nemotron-nano-4b

NVIDIA

native

16/17

94%

0

54.9

gemma-4-e4b

Google

native

16/17

94%

0

50.3

gpt-oss-20b

OpenAI

native

16/17

94%

45.3

granite-4.1-3b

IBM

native

15/17

88%

4

66.0

llama-3.1-8b

Meta

native

14/17

85%

2

33.4

mistral-small-3.2

Mistral

native

14/17

82%

0

11.1

phi-4-mini

Microsoft

native

13/17

79%

0

61.5

¹ gpt-oss의 하모니 파서는 자체 도구 호출 중 일부를 거부합니다(llama.cpp가 500 응답). 클라이언트의 재시도 사다리가 모든 호출을 복구합니다 — RESULTS.mdretries 열이 이를 정직하게 유지합니다.

재현: openlocal leaderboard --repeat 2

작은 모델이 도구에서 실패하는 이유

3B 모델은 멍청해서 실패하는 것이 아닙니다. 도구 출력이 프롬프트이기 때문이며, 대부분의 도구 출력은 사람을 위해 작성되었습니다. 아래 모든 내용은 측정되었습니다 — 점수가 올라가면 유지되고, 그렇지 않으면 되돌려졌습니다.

무엇이 깨졌는가

수정 방법

측정된 효과

"300번째 줄이 뭐야?" → 모델이 311번째 줄을 답변함

모든 줄에 번호 매기기: 300| row 300

한 번의 턴으로 수정, 모델 전반에 걸쳐

모델이 500줄 파일을 한 번에 한 줄씩 탐색함

바닥글은 사실을 명시하고 명령을 내리지 않음("file continues" ≠ "call again with…")

phi: 12번의 낭비된 단계 → 2번

도구 호출 대신 산문

도구 없는 산문 = 최종 답변 (네이티브 전용)

phi: 51개의 잘못된 응답 → 5개

…하지만 "Sure, I'll use file_grep"은 계획입니다

의도 감지: 계획은 안내를 받고, 답변은 수락됨

의도에서 끝나는 실행 제거

file_read(notes.md)를 텍스트로 입력함

산문 호출 구문을 파싱하여 실행함

낭비된 턴 제거

{"limit": None}, 후행 쓰레기, 분할된 객체

JSON 복구: 중괄호 스캔, 꼬리 닫기, Python 리터럴, 조각 병합

phi bad_json 5 → 0

모델이 소스를 읽기 전에 파일을 작성함

완료 시점의 오래된 쓰기 감지

llama: 13 → 15 / 15

모델이 "44"를 추측하고 안내를 받아도 반복함

한 번의 턴 tool_choice: "required"

granite이 작업 복구

4줄 CSV를 완벽하게 읽고 합계가 40이라고 말함

calc 도구 — 그리고 읽기 전에 사용할 수 없도록 보호 장치

granite: +2 작업

소스를 읽지 않고 출력 파일을 작성함

완료 시점의 허공 쓰기 감지

qwen-4b over MCP 복구

N| 참조 접두사를 편집 대상에 복사함

file_edit가 원시 텍스트와 일치하지 않으면 제거함

edit_code: 10/10 모델 통과

동일한 호출, 영원히 (A→B→A→B)

반복 가드가 캐시된 결과를 재생함

llama 페이지네이션 루프 제거

서버가 자체 도구 호출 구문에서 500 오류 발생

재시도 사다리: 요청대로 → 더 따뜻하게 → tools 없이 같은 턴

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 management

smol은 동일한 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

env

default

의미

OPENLOCAL_HOME

~/.openlocal

작업 공간 디렉토리

OPENLOCAL_BASE_URL

모든 명령을 하나의 /v1 서버로 지정

SMOL_ROOT

cwd

파일 및 셸 도구의 샌드박스 루트

SMOL_MAX_CHARS

8000

하나의 도구 결과에 대한 하드 상한

SMOL_SHELL_ALLOW

dev commands

쉼표 목록 또는 *

SMOL_TOOL_TIMEOUT

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

테스트로 강제된 하우스 규칙: 기본값이 있는 평면 인수, 모든 설명에 예제 호출, 한 줄 결과 헤더, 진실한 연속 힌트가 있는 하드 상한 출력, 그리고 다음 동작을 명명하는 오류no such file: x - call file_list(".") to see the files that exist.

아키텍처

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를 참조하세요.

AMD 하드웨어(ROCmFP4 + MTP 추측 디코딩)에서 로컬 GGUF 모델을 실행하는 방법은 docs/ENGINE.md에 문서화되어 있습니다 — 선택 사항이며, 위의 어떤 것에도 필요하지 않습니다.

라이선스

MIT © DevXV3

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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
  • F
    license
    Not graded
    quality
    B
    maintenance
    A 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.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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