File size: 18,983 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | ---
title: Tjener
description: Samhandle med OpenCode-tjener over HTTP.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
Kommandoen `opencode serve` kjører en hodeløs HTTP-server som eksponerer et OpenAPI-endepunkt som en OpenCode-klient kan bruke.
---
### Bruk
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### Alternativer
| Flagg | Beskrivelse | Standard |
| --------------- | --------------------------------------------- | ---------------- |
| `--port` | Port å lytte på | `4096` |
| `--hostname` | Vertsnavn å lytte på | `127.0.0.1` |
| `--mdns` | Aktiver mDNS-oppdagelse | `false` |
| `--mdns-domain` | Egendefinert domenenavn for mDNS-tjeneste | `opencode.local` |
| `--cors` | Ytterligere nettleseropprinnelse som tillates | `[]` |
`--cors` kan angis flere ganger:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### Autentisering
Sett `OPENCODE_SERVER_PASSWORD` for å beskytte serveren med HTTP grunnleggende autentisering. Brukernavnet er satt til `opencode` som standard, eller sett `OPENCODE_SERVER_USERNAME` for å overstyre det. Dette gjelder både `opencode serve` og `opencode web`.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### Slik fungerer det
Når du kjører `opencode` starter den en TUI og en server. Der TUI er
klient som snakker med serveren. Serveren viser en OpenAPI 3.1-spesifikasjon
endepunkt. Dette endepunktet brukes også til å generere en [SDK](/docs/sdk).
:::tip
Bruk OpenCode-serveren til å samhandle med OpenCode programmatisk.
:::
Denne arkitekturen lar OpenCode støtte flere klienter og lar deg samhandle med OpenCode programmatisk.
Du kan kjøre `opencode serve` for å starte en frittstående server. Hvis du har
OpenCode TUI kjører, vil `opencode serve` starte en ny server.
---
#### Koble til en eksisterende server
Når du starter TUI, tildeler den tilfeldig en port og vertsnavn. Du kan i stedet sende inn `--hostname` og `--port` [flagg](/docs/cli). Bruk deretter denne til å koble til serveren.
[`/tui`](#tui) endepunktet kan brukes til å kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet brukes av OpenCode [IDE](/docs/ide) plugins.
---
## Spes
Serveren publiserer en OpenAPI 3.1-spesifikasjon som kan vises på:
```
http://<hostname>:<port>/doc
```
For eksempel `http://localhost:4096/doc`. Bruk spesifikasjonen til å generere klienter eller inspisere forespørsels- og svartyper. Eller se den i en Swagger-utforsker.
---
## APIer
opencode-serveren viser følgende APIer.
---
### Globalt
| Metode | Sti | Beskrivelse | Svar |
| ------ | ---------------- | -------------------------------- | ------------------------------------ |
| `GET` | `/global/health` | Få serverhelse og versjon | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | Få globale hendelser (SSE strøm) | Eventstrøm |
---
### Prosjekt
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
| `GET` | `/project` | List alle prosjekter | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | Hent gjeldende prosjekt | <a href={typesUrl}><code>Project</code></a> |
---
### Bane og VCS
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
| `GET` | `/path` | Hent gjeldende bane | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | Hent VCS-info for gjeldende prosjekt | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### Forekomst
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------------------- | --------------------------- | --------- |
| `POST` | `/instance/dispose` | Avslutt gjeldende forekomst | `boolean` |
---
### Konfigurasjon
| Metode | Sti | Beskrivelse | Svar |
| ------- | ------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | Hent konfigurasjonsinformasjon | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | Oppdater konfigurasjon | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | List leverandører og standardmodeller | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### Leverandør
| Metode | Sti | Beskrivelse | Svar |
| ------ | -------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | List alle leverandører | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | Hent autentiseringsmetoder for leverandør | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | Autoriser en leverandør ved å bruke OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Håndter OAuth-tilbakeringing for en leverandør | `boolean` |
---
### Sesjoner
| Metode | Sti | Beskrivelse | Merknader |
| -------- | ---------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- |
| `GET` | `/session` | List alle økter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | Opprett en ny økt | body: `{ parentID?, title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | Hent øktstatus for alle økter | Returnerer `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | Hent øktdetaljer | Returnerer <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | Slett en økt og alle dens data | Returnerer `boolean` |
| `PATCH` | `/session/:id` | Oppdater øktegenskaper | body: `{ title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | Hent en økts barneøkter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | Hent gjøremålslisten for en økt | Returnerer <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | Analyser appen og lag `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returnerer `boolean` |
| `POST` | `/session/:id/fork` | Fork en eksisterende økt ved en melding | body: `{ messageID? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | Avbryt en kjørende økt | Returnerer `boolean` |
| `POST` | `/session/:id/share` | Del en økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | Slutt å dele en økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | Hent diff for denne økten | spørring: `messageID?`, returnerer <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | Oppsummer økten | body: `{ providerID, modelID }`, returnerer `boolean` |
| `POST` | `/session/:id/revert` | Tilbakestill en melding | body: `{ messageID, partID? }`, returnerer `boolean` |
| `POST` | `/session/:id/unrevert` | Gjenopprett alle tilbakestilte meldinger | Returnerer `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | Svar på en tillatelsesforespørsel | body: `{ response, remember? }`, returnerer `boolean` |
---
### Meldinger
| Metode | Sti | Beskrivelse | Merknader |
| ------ | --------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `GET` | `/session/:id/message` | List meldinger i en økt | spørring: `limit?`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | Send en melding og vent på svar | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | Hent meldingsdetaljer | Returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | Send en melding asynkront (ingen vent) | body: samme som `/session/:id/message`, returnerer `204 No Content` |
| `POST` | `/session/:id/command` | Utfør en slash-kommando | body: `{ messageID?, agent?, model?, command, arguments }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | Kjør en shell-kommando | body: `{ agent, model?, command }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
### Kommandoer
| Metode | Sti | Beskrivelse | Svar |
| ------ | ---------- | -------------------- | --------------------------------------------- |
| `GET` | `/command` | List alle kommandoer | <a href={typesUrl}><code>Command[]</code></a> |
---
### Filer
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
| `GET` | `/find?pattern=<pat>` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
| `GET` | `/find/file?query=<q>` | Finn filer og kataloger etter navn | `string[]` (baner) |
| `GET` | `/find/symbol?query=<q>` | Finn symboler i arbeidsområdet | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | List filer og kataloger | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Les en fil | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | Hent status for sporede filer | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file` spørringsparametere
- `query` (obligatorisk) - søkestreng (uklar samsvar)
- `type` (valgfritt) - begrense resultatene til `"file"` eller `"directory"`
- `directory` (valgfritt) — overstyr prosjektroten for søket
- `limit` (valgfritt) - maks. resultater (1–200)
- `dirs` (valgfritt) - eldre flagg (`"false"` returnerer kun filer)
---
### Verktøy (eksperimentelt)
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` | Vis alle verktøy-ID-er | <a href={typesUrl}><code>ToolIDs</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List verktøy med JSON-skjemaer for en modell | <a href={typesUrl}><code>ToolList</code></a> |
---
### LSP, formattere og MCP
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------------ | ---------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | Hent LSP-serverstatus | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | Hent formateringsstatus | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | Hent MCP-serverstatus | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Legg til MCP-server dynamisk | body: `{ name, config }`, returnerer MCP statusobjekt |
---
### Agenter
| Metode | Sti | Beskrivelse | Svar |
| ------ | -------- | ------------------------------- | ------------------------------------------- |
| `GET` | `/agent` | List alle tilgjengelige agenter | <a href={typesUrl}><code>Agent[]</code></a> |
---
### Logging
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------ | ---------------------------------------------------------------- | --------- |
| `POST` | `/log` | Skriv loggoppføring. Body: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| Metode | Sti | Beskrivelse | Svar |
| ------ | ----------------------- | ------------------------------------------- | -------------------------- |
| `POST` | `/tui/append-prompt` | Legg til tekst i prompten | `boolean` |
| `POST` | `/tui/open-help` | Åpne hjelpedialogen | `boolean` |
| `POST` | `/tui/open-sessions` | Åpne øktvelgeren | `boolean` |
| `POST` | `/tui/open-themes` | Åpne temavelgeren | `boolean` |
| `POST` | `/tui/open-models` | Åpne modellvelgeren | `boolean` |
| `POST` | `/tui/submit-prompt` | Send inn gjeldende prompt | `boolean` |
| `POST` | `/tui/clear-prompt` | Tøm prompten | `boolean` |
| `POST` | `/tui/execute-command` | Utfør en kommando (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | Vis toast (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | Vent på neste kontrollforespørsel | Kontrollforespørselsobjekt |
| `POST` | `/tui/control/response` | Svar på en kontrollforespørsel (`{ body }`) | `boolean` |
---
### Auth
| Metode | Sti | Beskrivelse | Svar |
| ------ | ----------- | --------------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | Angi autentiseringsinformasjon. Body må samsvare med leverandørskjema | `boolean` |
---
### Hendelser
| Metode | Sti | Beskrivelse | Svar |
| ------ | -------- | ----------------------------------------------------------------------------------------------- | -------------------------------- |
| `GET` | `/event` | Strøm av server-sendte hendelser. Første hendelse er `server.connected`, deretter busshendelser | Strøm av server-sendte hendelser |
---
### Dokumentasjon
| Metode | Sti | Beskrivelse | Svar |
| ------ | ------ | ------------------------- | ----------------------------------- |
| `GET` | `/doc` | OpenAPI 3.1-spesifikasjon | HTML side med OpenAPI-spesifikasjon |
|