Aller au contenu

Serveur

Interagir avec le serveur opencode via HTTP.

La commande opencode serve excute un serveur HTTP sans tte qui expose un point de terminaison OpenAPI qu’un client opencode peut utiliser.


Utilisation

Fenêtre de terminal
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Options

FlagDescriptionDefault
--portPort d’coute4096
--hostnameNom d’hte d’coute127.0.0.1
--mdnsActiver la dcouverte mDNSfalse
--corsOrigines de navigateur supplmentaires autoriser[]

--cors peut tre pass plusieurs fois :

Fenêtre de terminal
opencode serve --cors http://localhost:5173 --cors https://app.example.com

Fonctionnement

Lorsque vous excutez opencode, il dmarre un TUI et un serveur. Le TUI est le client qui communique avec le serveur. Le serveur expose un point de terminaison de spcification OpenAPI 3.1. Ce point de terminaison est galement utilis pour gnrer un SDK.

Cette architecture permet opencode de prendre en charge plusieurs clients et vous permet d’interagir avec opencode par programmation.

Vous pouvez excuter opencode serve pour dmarrer un serveur autonome. Si le TUI opencode est en cours d’excution, opencode serve dmarrera un nouveau serveur.


Se connecter un serveur existant

Lorsque vous dmarrez le TUI, il assigne alatoirement un port et un nom d’hte. Vous pouvez la place passer le --hostname et le --port indicateurs. Ensuite, utilisez-le pour vous connecter son serveur.

Le point de terminaison /tui peut tre utilis pour piloter le TUI via le serveur. Par exemple, vous pouvez prremplir ou excuter un prompt. Cette configuration est utilise par les plugins IDE d’OpenCode.


Spcification

Le serveur publie une spcification OpenAPI 3.1 qui peut tre consulte :

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

Par exemple, http://localhost:4096/doc. Utilisez la spcification pour gnrer des clients ou inspecter les types de requte et de rponse. Ou consultez-la dans un explorateur Swagger.


API

Le serveur opencode expose les API suivantes.


Global

MethodPathDescriptionResponse
GET/global/healthObtenir la sant du serveur et la version{ healthy: true, version: string }
GET/global/eventObtenir les vnements globaux (flux SSE)Flux d’vnements

Project

MethodPathDescriptionResponse
GET/projectLister tous les projetsProject[]
GET/project/currentObtenir le projet actuelProject

Path & VCS

MethodPathDescriptionResponse
GET/pathObtenir le chemin actuelPath
GET/vcsObtenir les infos VCS pour le projet actuelVcsInfo

Instance

MethodPathDescriptionResponse
POST/instance/disposeSupprimer l’instance actuelleboolean

Config

MethodPathDescriptionResponse
GET/configObtenir les infos de configurationConfig
PATCH/configMettre jour la configurationConfig
GET/config/providersLister les fournisseurs et les modles par dfaut{ providers: Provider[], default: { [key: string]: string } }

Provider

MethodPathDescriptionResponse
GET/providerLister tous les fournisseurs{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authObtenir les mthodes d’authentification du fournisseur{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutoriser un fournisseur en utilisant OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackGrer le rappel OAuth pour un fournisseurboolean

Sessions

MethodPathDescriptionNotes
GET/sessionLister toutes les sessionsRetourne Session[]
POST/sessionCrer une nouvelle sessionbody : { parentID?, title? }, retourne Session
GET/session/statusObtenir le statut de session pour toutes les sessionsRetourne { [sessionID: string]: SessionStatus }
GET/session/:idObtenir les dtails de la sessionRetourne Session
DELETE/session/:idSupprimer une session et toutes ses donnesRetourne boolean
PATCH/session/:idMettre jour les proprits de la sessionbody : { title? }, retourne Session
GET/session/:id/childrenObtenir les sessions enfants d’une sessionRetourne Session[]
GET/session/:id/todoObtenir la liste de tches pour une sessionRetourne Todo[]
POST/session/:id/initAnalyser l’application et crer AGENTS.mdbody : { messageID, providerID, modelID }, retourne boolean
POST/session/:id/forkForker une session existante un messagebody : { messageID? }, retourne Session
POST/session/:id/abortAvorter une session en coursRetourne boolean
POST/session/:id/sharePartager une sessionRetourne Session
DELETE/session/:id/shareAnnuler le partage d’une sessionRetourne Session
GET/session/:id/diffObtenir la diff pour cette sessionquery : messageID?, retourne FileDiff[]
POST/session/:id/summarizeRsumer la sessionbody : { providerID, modelID }, retourne boolean
POST/session/:id/revertRtablir un messagebody : { messageID, partID? }, retourne boolean
POST/session/:id/unrevertRestaurer tous les messages rtablisRetourne boolean
POST/session/:id/permissions/:permissionIDRpondre une demande d’autorisationbody : { response, remember? }, retourne boolean

Messages

MethodPathDescriptionNotes
GET/session/:id/messageLister les messages dans une sessionquery : limit?, retourne { info: Message, parts: Part[]}[]
POST/session/:id/messageEnvoyer un message et attendre la rponsebody : { messageID?, model?, agent?, noReply?, system?, tools?, parts }, retourne { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDObtenir les dtails du messageRetourne { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncEnvoyer un message de manire asynchrone (sans attente)body : mme que /session/:id/message, retourne 204 No Content
POST/session/:id/commandExcuter une commande slashbody : { messageID?, agent?, model?, command, arguments }, retourne { info: Message, parts: Part[]}
POST/session/:id/shellExcuter une commande shellbody : { agent, model?, command }, retourne { info: Message, parts: Part[]}

Commands

MethodPathDescriptionResponse
GET/commandLister toutes les commandesCommand[]

Files

MethodPathDescriptionResponse
GET/find?pattern=<pat>Rechercher du texte dans les fichiersTableau d’objets de correspondance avec path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Trouver des fichiers et rpertoires par nomstring[] (chemins)
GET/find/symbol?query=<q>Trouver les symboles de l’espace de travailSymbol[]
GET/file?path=<path>Lister les fichiers et rpertoiresFileNode[]
GET/file/content?path=<p>Lire un fichierFileContent
GET/file/statusObtenir le statut des fichiers suivisFile[]

Paramtres de requte /find/file

  • query (requis) - chane de recherche (correspondance floue)
  • type (facultatif) - limiter les rsultats "file" ou "directory"
  • directory (facultatif) - remplacer la racine du projet pour la recherche
  • limit (facultatif) - rsultats max (1-200)
  • dirs (facultatif) - indicateur obsolte ("false" retourne uniquement les fichiers)

Tools (Experimental)

MethodPathDescriptionResponse
GET/experimental/tool/idsLister tous les ID d’outilsToolIDs
GET/experimental/tool?provider=<p>&model=<m>Lister les outils avec des schmas JSON pour un modleToolList

LSP, Formatters & MCP

MethodPathDescriptionResponse
GET/lspObtenir le statut du serveur LSPLSPStatus[]
GET/formatterObtenir le statut du formateurFormatterStatus[]
GET/mcpObtenir le statut du serveur MCP{ [name: string]: MCPStatus }
POST/mcpAjouter un serveur MCP dynamiquementbody : { name, config }, retourne l’objet de statut MCP

Agents

MethodPathDescriptionResponse
GET/agentLister tous les agents disponiblesAgent[]

Logging

MethodPathDescriptionResponse
POST/logcrire une entre de journal. Body : { service, level, message, extra? }boolean

TUI

MethodPathDescriptionResponse
POST/tui/append-promptAjouter du texte au promptboolean
POST/tui/open-helpOuvrir la bote de dialogue d’aideboolean
POST/tui/open-sessionsOuvrir le slecteur de sessionboolean
POST/tui/open-themesOuvrir le slecteur de thmeboolean
POST/tui/open-modelsOuvrir le slecteur de modleboolean
POST/tui/submit-promptSoumettre le prompt actuelboolean
POST/tui/clear-promptEffacer le promptboolean
POST/tui/execute-commandExcuter une commande ({ command })boolean
POST/tui/show-toastAfficher un toast ({ title?, message, variant })boolean
GET/tui/control/nextAttendre la prochaine demande de contrleObjet de demande de contrle
POST/tui/control/responseRpondre une demande de contrle ({ body })boolean

Auth

MethodPathDescriptionResponse
PUT/auth/:idDfinir les informations d’authentification. Le corps doit correspondre au schma du fournisseurboolean

Events

MethodPathDescriptionResponse
GET/eventFlux d’vnements envoys par le serveur. Le premier vnement est server.connected, puis les vnements du busFlux d’vnements envoys par le serveur

Docs

MethodPathDescriptionResponse
GET/docSpcification OpenAPI 3.1Page HTML avec spcification OpenAPI