본문으로 건너뛰기

전체 설정 참고

~/.opencli/config.toml 이 받아들이는 모든 키. 대부분의 사람이 건드리는 몇 개는 설정 파일에 있고, 그쪽이 훨씬 짧습니다.

가장 빠른 길: OpenCLI가 알아서 모델을 찾게 하기​

이미 Ollama, LM Studio, vLLM, llama.cpp 를 로컬에서 돌리고 있다면:

opencli provider scan

흔히 쓰는 localhost 포트를 두드려 보고, 찾은 서버마다 어떤 모델을 제공하는지 물어서 해당 [model_providers.*] 와 [[models]] 를 config.toml 에 씁니다 —— 기존 주석과 설정은 보존됩니다. --dry-run 을 붙이면 무엇을 쓸지 먼저 볼 수 있습니다.

호스팅 공급자는 카탈로그에서 하나 설치하고 키를 넣습니다:

opencli provider list # 카탈로그와 이미 설정된 것들
opencli provider add openrouter
export OPENROUTER_API_KEY=...

카탈로그에는 접속 정보만 있습니다 —— 바이너리에 키는 들어 있지 않고, 당신이 넣기 전에는 아무것도 켜지지 않습니다. 카탈로그에 없는 것을 설정하려면 아래 설명대로 직접 절을 쓰세요.

모델의 능력 채워 넣기​

로컬 모델의 컨텍스트 창과 도구 호출 지원 여부는 어디에도 공개되어 있지 않습니다. 그리고 어림짐작은 비워 두는 것보다 나쁩니다 —— 컨텍스트 창을 너무 크게 잡으면 공급자가 자동 압축 대신 그 차례를 거절합니다. 모델에게 직접 물으세요:

opencli model probe <slug> # --dry-run 을 붙이면 미리 봅니다

가능한 경우 런타임 자신의 메타데이터를 읽고(Ollama는 실제 컨텍스트 길이와 능력 목록을 알려 줍니다), 거기에 더해 실제 요청을 한 번 보내 내어 준 도구를 부르는지, 생각을 별도의 reasoning 필드로 돌려주는지 확인합니다. 알아낸 것은 그 모델의 [[models]] 항목에 기록됩니다.

아예 대화가 안 되는 모델 —— 예컨대 임베딩 모델 —— 은 provider scan 이 건너뛰므로 /model 선택 목록까지 오지 못합니다.

모델과 공급자 고르기​

이 빌드에는 몇몇 게이트웨이의 프리셋이 들어 있지만, OpenAI 호환 API로 닿는 모델이라면 무엇이든 ~/.opencli/config.toml 에서 설정할 수 있고 다시 빌드할 필요가 없습니다.

공급자 추가하기​

[model_providers.<id>] 의 항목은 같은 id의 내장 공급자를 덮어씁니다. 그러니 이것은 번들된 게이트웨이를 프록시나 미러로 돌려 세우는 방법이기도 합니다:

[model_providers.my-gateway]
name = "My Gateway"
base_url = "https://gateway.example.com/v1"
env_key = "MY_GATEWAY_API_KEY"
wire_api = "chat"
# 선택: 이 게이트웨이가 첫 토큰을 늦게 내놓는다면 올리세요.
stream_idle_timeout_ms = 90000

API 키는 언제나 환경 변수에서 읽고, 설정 파일에는 저장되지 않습니다.

모델 추가하기​

[[models]] 로 모델을 선언합니다. 내장 프리셋 옆에 /model 선택 목록에 나타나고, model 이 내장 프리셋과 같은 항목은 그것을 대체합니다:

[[models]]
model = "qwen3-max"
provider = "my-gateway"
display_name = "Qwen3 Max" # 선택. 기본값은 slug
description = "직접 돌립니다." # 선택
show_in_picker = true # 선택. 기본값은 true

provider 는 필수이고, 위에서 정의한 공급자나 내장 공급자를 가리켜야 합니다. 정의되지 않은 공급자를 가리키는 모델은 시작할 때 바로 거부됩니다 —— 나중에 엉뚱한 오류와 함께 실패하는 대신에요.

선택 목록에 넣지 않고 모델을 고르려면 model 과 model_provider 를 직접 설정하세요:

model = "qwen3-max"
model_provider = "my-gateway"

model 이 내장 프리셋도 [[models]] 항목도 아닌 것을 가리키고 model_provider 도 설정되어 있지 않으면, 요청은 openai 공급자로 떨어지고 경고가 기록됩니다.

컨텍스트 창​

이 빌드가 메타데이터를 갖고 있지 않은 모델은 보수적인 131,072 토큰 창으로 시작하고, 게이트웨이의 첫 「창 초과」 거절에서 진짜 값을 배웁니다. model_context_window 를 설정하면 명시적으로 못 박을 수 있습니다.

MCP 서버에 연결하기​

OpenCLI는 ~/.opencli/config.toml 에 선언된 MCP 서버에 연결할 수 있습니다.

[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env_vars = ["GITHUB_PERSONAL_ACCESS_TOKEN"]

[mcp_servers.internal]
url = "https://mcp.example.com/mcp"

env_vars 는 그 서버가 필요로 하는 변수의 이름입니다. 값은 공유되는 이 파일이 아니라 당신의 다른 키들과 함께 보관됩니다. 여기 선언한 서버는 눈앞의 대화가 아니라 다음에 여는 대화와 함께 시작합니다.

데스크톱 앱은 Abilities → Connectors 에서 같은 표를 쓰며, 핸드셰이크도 시험하고 각 서버가 제공하는 도구도 보여 줍니다.

앱(Connectors)​

입력창에서 $ 로 ChatGPT 커넥터를 넣습니다. 팝오버가 쓸 수 있는 앱을 보여 줍니다. /apps 명령은 사용 가능한 앱과 설치된 앱을 보여 줍니다. 연결된 앱이 먼저 오고 「연결됨」으로 표시되며, 나머지는 「설치 가능」으로 표시됩니다.

알림​

OpenCLI는 에이전트가 한 차례를 마쳤을 때 알림 훅을 돌릴 수 있습니다.

notify = ["/path/to/your/script.sh"]

그 프로그램은 인자 하나로 호출됩니다: 무슨 일이 있었는지 적은 JSON 객체. 떼어 놓고 실행되므로 느린 스크립트가 다음 차례를 붙들지 않고, 실패한 스크립트는 앞으로 튀어나오는 대신 로그에 남습니다.

JSON 스키마​

config.toml 을 위해 생성된 JSON 스키마는 opencli-rs/core/config.schema.json 에 있고, 릴리스마다 config-schema.json 으로 함께 올라갑니다. 이 파일을 손으로 고칠 때 에디터를 그쪽으로 향하게 하면 자동 완성과 검증이 됩니다.

이것은 Rust 타입에서 생성되고, 타입과 어긋나면 CI가 실패합니다 —— 그러니 이 파일에 대한 설명 중 유일하게 낡지 않는 것입니다.

알림 억제​

OpenCLI는 일부 화면 안내의 「다시 보지 않기」 표시를 [notice] 표에 저장합니다.

Ctrl+C / Ctrl+D 로 나가는 것은 약 1초 안에 두 번 누르라는 안내를 씁니다 (ctrl + c again to quit).