Skip to content

Server

Komunicirajte s opencode serverom preko HTTP-a.

Komanda opencode serve pokrece headless HTTP server koji izlaže OpenAPI endpoint koji opencode klijent moze koristiti.


Korištenje

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

Opcije

ZastavaOpisDefault
--portPort na kojem slusa4096
--hostnameHostname na kojem slusa127.0.0.1
--mdnsUkljuci mDNS otkrivanjefalse
--mdns-domainPrilagodeni domen za mDNS servisopencode.local
--corsDodatni browser origin-i koje dozv.[]

--cors mozete navesti vise puta:

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

Autentifikacija

Postavite OPENCODE_SERVER_PASSWORD da zastitite server HTTP basic auth mehanizmom. Korisnicko ime je po defaultu opencode, ili postavite OPENCODE_SERVER_USERNAME za nadjacavanje. Ovo vazi i za opencode serve i za opencode web.

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Kako radi

Kada pokrenete opencode, pokrecu se TUI i server. TUI je klijent koji komunicira sa serverom. Server izlaže OpenAPI 3.1 spec endpoint koji se koristi i za generisanje SDK-a.

Ova arhitektura omogucava opencode podrsku za vise klijenata i programsku interakciju.

Mozete pokrenuti opencode serve da startate standalone server. Ako je opencode TUI vec pokrenut, opencode serve ce pokrenuti novi server.


Povezivanje na postojeći server

Kada pokrenete TUI, port i hostname se nasumicno dodijele. Umjesto toga, mozete zadati --hostname i --port zastave, pa se povezati na taj server.

Endpoint /tui mozete koristiti za upravljanje TUI-jem kroz server. Na primjer, mozete unaprijed popuniti ili pokrenuti prompt. Ovaj setup koriste OpenCode IDE pluginovi.


Specifikacija

Server objavljuje OpenAPI 3.1 specifikaciju koju mozete vidjeti na:

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

Na primjer, http://localhost:4096/doc. Koristite specifikaciju da generisete klijente ili pregledate tipove zahtjeva i odgovora. Mozete je otvoriti i u Swagger exploreru.


API-ji

opencode server izlaže sljedece API-je.


Globalno

MetodaPutanjaOpisOdgovor
GET/global/healthGet server health and version{ healthy: true, version: string }
GET/global/eventGet global events (SSE stream)Event stream

Projekt

MetodaPutanjaOpisOdgovor
GET/projectList all projectsProject[]
GET/project/currentGet the current projectProject

Putanja i VCS

MetodaPutanjaOpisOdgovor
GET/pathGet the current pathPath
GET/vcsGet VCS info for the current projectVcsInfo

Instanca

MetodaPutanjaOpisOdgovor
POST/instance/disposeDispose the current instanceboolean

Konfiguracija

MetodaPutanjaOpisOdgovor
GET/configGet config infoConfig
PATCH/configUpdate configConfig
GET/config/providersList providers and default models{ providers: Provider[], default: { [key: string]: string } }

Provajder

MetodaPutanjaOpisOdgovor
GET/providerList all providers{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authGet provider authentication methods{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAuthorize a provider using OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackHandle OAuth callback for a providerboolean

Sesije

MetodaPutanjaOpisNapomene
GET/sessionList all sessionsReturns Session[]
POST/sessionCreate a new sessionbody: { parentID?, title? }, returns Session
GET/session/statusGet session status for all sessionsReturns { [sessionID: string]: SessionStatus }
GET/session/:idGet session detailsReturns Session
DELETE/session/:idDelete a session and all its dataReturns boolean
PATCH/session/:idUpdate session propertiesbody: { title? }, returns Session
GET/session/:id/childrenGet a session’s child sessionsReturns Session[]
GET/session/:id/todoGet the todo list for a sessionReturns Todo[]
POST/session/:id/initAnalyze app and create AGENTS.mdbody: { messageID, providerID, modelID }, returns boolean
POST/session/:id/forkFork an existing session at a messagebody: { messageID? }, returns Session
POST/session/:id/abortAbort a running sessionReturns boolean
POST/session/:id/shareShare a sessionReturns Session
DELETE/session/:id/shareUnshare a sessionReturns Session
GET/session/:id/diffGet the diff for this sessionquery: messageID?, returns FileDiff[]
POST/session/:id/summarizeSummarize the sessionbody: { providerID, modelID }, returns boolean
POST/session/:id/revertRevert a messagebody: { messageID, partID? }, returns boolean
POST/session/:id/unrevertRestore all reverted messagesReturns boolean
POST/session/:id/permissions/:permissionIDRespond to a permission requestbody: { response, remember? }, returns boolean

Poruke

MetodaPutanjaOpisNapomene
GET/session/:id/messageList messages in a sessionquery: limit?, returns { info: Message, parts: Part[]}[]
POST/session/:id/messageSend a message and wait for responsebody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returns { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDGet message detailsReturns { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncSend a message asynchronously (no wait)body: same as /session/:id/message, returns 204 No Content
POST/session/:id/commandExecute a slash commandbody: { messageID?, agent?, model?, command, arguments }, returns { info: Message, parts: Part[]}
POST/session/:id/shellRun a shell commandbody: { agent, model?, command }, returns { info: Message, parts: Part[]}

Naredbe

MetodaPutanjaOpisOdgovor
GET/commandList all commandsCommand[]

Datoteke

MetodaPutanjaOpisOdgovor
GET/find?pattern=<pat>Search for text in filesArray of match objects with path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Find files and directories by namestring[] (paths)
GET/find/symbol?query=<q>Find workspace symbolsSymbol[]
GET/file?path=<path>List files and directoriesFileNode[]
GET/file/content?path=<p>Read a fileFileContent
GET/file/statusGet status for tracked filesFile[]

/find/file parametri upita

  • query (obavezno) — niz za pretragu (fuzzy podudaranje)
  • type (opcionalno) — ograniči rezultate na "file" ili "directory"
  • directory (opcionalno) — nadjačaj korijen projekta za pretragu
  • limit (opcionalno) — maksimalni rezultati (1–200)
  • dirs (opcionalno) — zastarjela zastavica ("false" vraća samo datoteke)

Alati (Eksperimentalno)

MetodaPutanjaOpisOdgovor
GET/experimental/tool/idsList all tool IDsToolIDs
GET/experimental/tool?provider=<p>&model=<m>List tools with JSON schemas for a modelToolList

LSP, Formateri & MCP

MetodaPutanjaOpisOdgovor
GET/lspGet LSP server statusLSPStatus[]
GET/formatterGet formatter statusFormatterStatus[]
GET/mcpGet MCP server status{ [name: string]: MCPStatus }
POST/mcpAdd MCP server dynamicallybody: { name, config }, returns MCP status object

Agenti

MetodaPutanjaOpisOdgovor
GET/agentList all available agentsAgent[]

Bilježenje

MetodaPutanjaOpisOdgovor
POST/logWrite log entry. Body: { service, level, message, extra? }boolean

TUI

MetodaPutanjaOpisOdgovor
POST/tui/append-promptAppend text to the promptboolean
POST/tui/open-helpOpen the help dialogboolean
POST/tui/open-sessionsOpen the session selectorboolean
POST/tui/open-themesOpen the theme selectorboolean
POST/tui/open-modelsOpen the model selectorboolean
POST/tui/submit-promptSubmit the current promptboolean
POST/tui/clear-promptClear the promptboolean
POST/tui/execute-commandExecute a command ({ command })boolean
POST/tui/show-toastShow toast ({ title?, message, variant })boolean
GET/tui/control/nextWait for the next control requestControl request object
POST/tui/control/responseRespond to a control request ({ body })boolean

Autentifikacija

MetodaPutanjaOpisOdgovor
PUT/auth/:idSet authentication credentials. Body must match provider schemaboolean

Događaji

MetodaPutanjaOpisOdgovor
GET/eventServer-sent events stream. First event is server.connected, then bus eventsServer-sent events stream

Dokumentacija

MetodaPutanjaOpisOdgovor
GET/docOpenAPI 3.1 specificationHTML page with OpenAPI spec