콘텐츠로 이동

Server

Interact with opencode server over HTTP.

opencode serve 명령은 opencode 클라이언트가 사용할 수 있는 OpenAPI 엔드포인트를 노출하는 headless HTTP 서버를 실행합니다.


사용법

Terminal window
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

옵션

플래그설명기본값
--port수신 대기할 포트4096
--hostname수신 대기할 호스트명127.0.0.1
--mdnsmDNS 탐지 활성화false
--mdns-domainmDNS 서비스의 사용자 지정 도메인 이름opencode.local
--cors허용할 추가 브라우저 origin[]

--cors는 다수 시간을 통과될 수 있습니다:

Terminal window
opencode serve --cors http://localhost:5173 --cors https://app.example.com

인증

OPENCODE_SERVER_PASSWORD를 설정하여 서버를 HTTP Basic auth로 보호합니다. opencode 또는 OPENCODE_SERVER_USERNAME를 오버라이드로 설정하는 사용자의 기본값. 이것은 opencode serveopencode web 둘 다에 적용합니다.

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

어떻게 작동합니까?

opencode를 실행하면 TUI와 서버를 시작합니다. TUI는 어디에 있습니까? 서버와 대화하는 클라이언트. 서버는 OpenAPI 3.1 spec을 노출 끝점. 이 엔드포인트는 SDK을 생성하는 데도 사용됩니다.

이 아키텍처는 opencode 지원 여러 클라이언트를 허용하고 opencode programmatically와 상호 작용 할 수 있습니다.

독립 서버를 시작하려면 opencode serve를 실행할 수 있습니다. 당신이 있는 경우에 opencode TUI 실행, opencode serve 새로운 서버를 시작합니다.


기존 서버에 연결

TUI를 시작하면 무작위로 포트와 호스트 이름을 할당합니다. 대신 --hostname--port flags에서 전달할 수 있습니다. 그런 다음 서버에 연결하십시오.

/tui 엔드포인트는 서버를 통해 TUI를 구동하는 데 사용될 수 있습니다. 예를 들어 미리 작성하거나 프롬프트를 실행할 수 있습니다. 이 설정은 opencode IDE 플러그인에 의해 사용됩니다.


사양

서버는 OpenAPI 3.1 spec을 게시합니다.

http://<hostname>:<port>/doc

예를 들어, http://localhost:4096/doc. 클라이언트를 생성하거나 요청 및 응답 유형을 검사하는 spec를 사용하십시오. 또는 Swagger 탐험가에서 볼 수 있습니다.


API

opencode 서버는 다음과 같은 API를 노출합니다.


글로벌

방법경로설명응답
GET/global/health서버 건강 및 버전{ healthy: true, version: string }
GET/global/event글로벌 이벤트(SSE 스트림)이벤트 스트림

프로젝트

방법경로설명응답
GET/project모든 프로젝트 보기Project[]
GET/project/current현재 프로젝트 가져 오기프로젝트

경로 & VCS

방법경로설명응답
GET/path현재 경로 받기Path
GET/vcs현재 프로젝트의 VCS 정보 받기VcsInfo

인스턴스

방법경로설명응답
POST/instance/dispose현재 인스턴스를 해제boolean

콘피그

방법경로설명응답
GET/config구성정보Config
PATCH/config업데이트 구성Config
GET/config/providers목록 제공업체 및 기본 모델{ providers: 사이트 맵, default: { [key: string]: string } }

공급자

방법경로설명응답
GET/provider모든 공급자 목록{ all: Provider[], default: {...}, connected: string[] }
GET/provider/auth공급자 인증 메서드 가져오기{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeOAuth를 사용한 공급자 허가ProviderAuthAuthorization
POST/provider/{id}/oauth/callback공급자를 위한 OAuth 콜백boolean

세션

방법경로설명
GET/session모든 세션 일람표반환 Session[]
POST/session새 세션 만들기몸: { parentID?, title? }, 반환 Session
GET/session/status모든 세션의 세션 상태를 가져옵니다{ [sessionID: string]: SessionStatus }
GET/session/:id세션 상세보기반품 Session
DELETE/session/:id세션 삭제 및 모든 데이터boolean
PATCH/session/:id업데이트 세션 속성본체: { title? }, 반환 Session
GET/session/:id/children세션의 어린이 세션리턴 Session[]
GET/session/:id/todo세션별 도우미 목록 받기Todo[]
POST/session/:id/init분석 응용 프로그램 및 AGENTS.md몸: { messageID, providerID, modelID }, 반환 boolean
POST/session/:id/fork메시지의 기존 세션몸: { messageID? }, 반환 Session
POST/session/:id/abort운영 중인 세션반품 boolean
POST/session/:id/share세션 공유Session
DELETE/session/:id/share세션 공유Session
GET/session/:id/diff/session/:id/diffmessageID?, 반환 FileDiff[]
POST/session/:id/summarize세션을 요약본체: { providerID, modelID }, boolean 반환
POST/session/:id/revert메시지 재생몸: { messageID, partID? }, 반환 boolean
POST/session/:id/unrevert통일된 모든 메시지반품 boolean
POST/session/:id/permissions/:permissionID허가 요청 대응본체: { response, remember? }, boolean

메시지

방법경로설명
GET/session/:id/message세션의 목록 메시지쿼리: limit?, { info: Message, parts: Part[]}[]
POST/session/:id/message응답을 위해 메시지를 보내고 기다립니다몸: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, 반환 { info: Message, parts: Part[]}
GET/session/:id/message/:messageID메시지 보내기{ info: Message, parts: Part[]}
POST/session/:id/prompt_async비동기적으로 메시지 보내기몸: /session/:id/message와 동일, 204 No Content를 반환
POST/session/:id/command슬래시 명령어 실행본체: { messageID?, agent?, model?, command, arguments }, 반환 { info: Message, parts: Part[]}
POST/session/:id/shellshell 명령 실행체: { agent, model?, command }, 반환 { info: Message, parts: Part[]}

명령

방법경로설명응답
GET/command모든 명령Command[]

파일

방법경로설명응답
GET/find?pattern=<pat>파일에서 텍스트 검색path, lines, line_number, absolute_offset, submatches가 포함된 일치 객체 배열
GET/find/file?query=<q>이름으로 파일/디렉터리 찾기string[] (경로)
GET/find/symbol?query=<q>워크스페이스 심볼 찾기Symbol[]
GET/file?path=<path>파일 및 디렉터리 목록FileNode[]
GET/file/content?path=<p>파일 읽기FileContent
GET/file/status추적 중인 파일 상태 가져오기File[]

/find/file 쿼리 매개 변수

  • query (required) - 검색 문자열 (fuzzy 일치)
  • type (선택 사항) - "file" 또는 "directory"에 제한 결과
  • directory (선택 사항) - 검색에 대한 프로젝트 루트를 무시
  • (선택) limit - 최대 결과 (1-200)
  • dirs (옵션) - 레거시 플래그 ("false"는 파일만 반환)

도구 (실험)

방법경로설명응답
GET/experimental/tool/ids모든 도구 ID도구
GET/experimental/tool?provider=<p>&model=<m>모델용 JSON 스키마 목록도구 목록

LSP의 체재자 & MCP

방법경로설명응답
GET/lspLSP 서버 상태LSPStatus[]
GET/formatter형식의 상태를 확인FormatterStatus[]
GET/mcpMCP 서버 상태를 얻는다{ [name: string]: MCPStatus }
POST/mcpMCP 서버가 동적본체: { name, config }, MCP 상태 객체를 반환

에이전트

방법경로설명응답
GET/agent이용 가능한 모든 에이전트 에이전트[]

로깅

방법경로설명응답
POST/log로그 입력 바디: { service, level, message, extra? }boolean

TUI

방법경로설명응답
POST/tui/append-prompt프롬프트에 텍스트를 부여boolean
POST/tui/open-help도움말 대화 열기boolean
POST/tui/open-sessions세션 선택 안내boolean
POST/tui/open-themes테마 선택 안내boolean
POST/tui/open-models모델 선택 안내boolean
POST/tui/submit-prompt현재 프롬프트 제출boolean
POST/tui/clear-prompt시프트 클리어boolean
POST/tui/execute-command명령어 실행({ command })boolean
POST/tui/show-toast쇼 토스트({ title?, message, variant })boolean
GET/tui/control/next다음 컨트롤 요청 시 기다리고제어 요청 개체
POST/tui/control/response통제 요청({ body }) 대응boolean

인증

방법경로설명응답
PUT/auth/:id인증 자격 증명 몸은 공급자 스키마를 일치해야 합니다boolean

이벤트

방법경로설명응답
GET/event서버 침묵 이벤트 스트림. 첫 번째 이벤트는 server.connected, 그 후 버스 이벤트Server-sent event stream

문서

방법경로설명응답
GET/docOpenAPI 3.1 사양HTML 페이지 OpenAPI 사양