La commande opencode serve exécute un serveur HTTP sans tête qui expose un point de terminaison OpenAPI qu’un client opencode peut utiliser.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Drapeau Descriptif Par défaut --portPort à écouter sur 4096--hostnameNom d’hôte sur lequel écouter 127.0.0.1--mdnsActiver la découverte mDNS false--mdns-domainNom de domaine personnalisé pour le service mDNS opencode.local--corsOrigines de navigateur supplémentaires à autoriser []
--cors peut être transmis plusieurs fois :
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Définissez OPENCODE_SERVER_PASSWORD pour protéger le serveur avec l’authentification de base HTTP. Le nom d’utilisateur est par défaut opencode, ou définissez OPENCODE_SERVER_USERNAME pour le remplacer. Cela s’applique à la fois à opencode serve et à opencode web.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
Lorsque vous exécutez opencode, il démarre un TUI et un serveur. Où le TUI est le
client qui parle au serveur. Le serveur expose une spécification OpenAPI 3.1
point final. Ce point de terminaison est également utilisé pour générer un SDK .
Cette architecture permet à opencode de prendre en charge plusieurs clients et vous permet d’interagir avec opencode par programme.
Vous pouvez exécuter opencode serve pour démarrer un serveur autonome. Si vous avez le
opencode TUI en cours d’exécution, opencode serve démarrera un nouveau serveur.
Lorsque vous démarrez le TUI, il attribue de manière aléatoire un port et un nom d’hôte. Vous pouvez à la place transmettre les --hostname et --port flags . Utilisez-le ensuite pour vous connecter à son serveur.
Le point de terminaison /tui peut être utilisé pour piloter le TUI via le serveur. Par exemple, vous pouvez pré-remplir ou exécuter une invite. Cette configuration est utilisée par les plugins OpenCode IDE .
Le serveur publie une spécification OpenAPI 3.1 qui peut être consultée à l’adresse :
http://<hostname>:<port>/doc
Par exemple, http://localhost:4096/doc. Utilisez la spécification pour générer des clients ou inspecter les types de requêtes et de réponses. Ou visualisez-le dans un explorateur Swagger.
Le serveur opencode expose les API suivantes.
Méthode Chemin Descriptif Réponse GET/global/healthObtenir l’état et la version du serveur { healthy: true, version: string }GET/global/eventObtenez des événements mondiaux (flux SSE) Flux d’événements
Méthode Chemin Descriptif Réponse GET/projectLister tous les projets Project[]GET/project/currentObtenez le projet en cours Project
Méthode Chemin Descriptif Réponse GET/pathObtenir le chemin actuel PathGET/vcsObtenir des informations VCS pour le projet en cours VcsInfo
Méthode Chemin Descriptif Réponse POST/instance/disposeSupprimer l’instance actuelle boolean
Méthode Chemin Descriptif Réponse GET/configObtenir des informations de configuration ConfigPATCH/configMettre à jour la configuration ConfigGET/config/providersListe des fournisseurs et modèles par défaut { providers: Provider[] , default: { [key: string]: string } }
Méthode Chemin Descriptif Réponse GET/providerListe de tous les fournisseurs { all: Provider[] , default: {...}, connected: string[] }GET/provider/authObtenir les méthodes d’authentification du fournisseur { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAutoriser un fournisseur en utilisant OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackGérer le rappel OAuth pour un fournisseur boolean
Méthode Chemin Descriptif Remarques GET/sessionListe toutes les sessions Renvoie Session[] POST/sessionCréer une nouvelle session corps : { parentID?, title? }, renvoie Session GET/session/statusObtenir l’état de la session pour toutes les sessions Renvoie { [sessionID: string]: SessionStatus } GET/session/:idObtenez les détails de la session Renvoie Session DELETE/session/:idSupprimer une session et toutes ses données Renvoie boolean PATCH/session/:idMettre à jour les propriétés de la session corps : { title? }, renvoie Session GET/session/:id/childrenObtenir les sessions enfants d’une session Renvoie Session[] GET/session/:id/todoObtenez la liste de tâches pour une session Renvoie Todo[] POST/session/:id/initAnalysez l’application et créez AGENTS.md corps : { messageID, providerID, modelID }, renvoie boolean POST/session/:id/forkForkez une session existante à un message corps : { messageID? }, renvoie Session POST/session/:id/abortAbandonner une session en cours Renvoie boolean POST/session/:id/sharePartager une séance Renvoie Session DELETE/session/:id/shareAnnuler le partage d’une session Renvoie Session GET/session/:id/diffObtenez le diff pour cette session requête : messageID?, renvoie FileDiff[] POST/session/:id/summarizeRésumer la séance corps : { providerID, modelID }, renvoie boolean POST/session/:id/revertRétablir un message corps : { messageID, partID? }, renvoie boolean POST/session/:id/unrevertRestaurer tous les messages annulés Renvoie boolean POST/session/:id/permissions/:permissionIDRépondre à une demande d’autorisation corps : { response, remember? }, renvoie boolean
Méthode Chemin Descriptif Remarques GET/session/:id/messageListe des messages dans une session requête : limit?, renvoie { info: Message , parts: Part[] }[] POST/session/:id/messageEnvoyer un message et attendre une réponse corps : { messageID?, model?, agent?, noReply?, system?, tools?, parts }, renvoie { info: Message , parts: Part[] } GET/session/:id/message/:messageIDObtenir les détails du message Renvoie { info: Message , parts: Part[] } POST/session/:id/prompt_asyncEnvoyer un message de manière asynchrone (pas d’attente) body : identique à /session/:id/message, renvoie 204 No Content POST/session/:id/commandExécuter une commande slash corps : { messageID?, agent?, model?, command, arguments }, renvoie { info: Message , parts: Part[] } POST/session/:id/shellExécuter une commande shell corps : { agent, model?, command }, renvoie { info: Message , parts: Part[] }
Méthode Chemin Descriptif Réponse GET/commandListe toutes les commandes Command[]
Méthode Chemin Descriptif Réponse GET/find?pattern=<pat>Rechercher du texte dans des fichiers Tableau d’objets correspondant avec path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Rechercher des fichiers et des répertoires par nom string[] (chemins)GET/find/symbol?query=<q>Rechercher des symboles d’espace de travail Symbol[]GET/file?path=<path>Liste des fichiers et répertoires FileNode[]GET/file/content?path=<p>Lire un fichier FileContentGET/file/statusObtenir le statut des fichiers suivis File[]
query (obligatoire) — chaîne de recherche (correspondance floue)
type (facultatif) — limiter les résultats à "file" ou "directory"
directory (facultatif) — remplace la racine du projet pour la recherche
limit (facultatif) — résultats maximum (1 à 200)
dirs (facultatif) — indicateur hérité ("false" renvoie uniquement les fichiers)
Méthode Chemin Descriptif Réponse GET/experimental/tool/idsRépertorier tous les ID d’outils ToolIDsGET/experimental/tool?provider=<p>&model=<m>Répertorier les outils avec des schémas JSON pour un modèle ToolList
Méthode Chemin Descriptif Réponse GET/lspObtenir l’état du serveur LSP LSPStatus[]GET/formatterObtenir le statut du formateur FormatterStatus[]GET/mcpObtenir l’état du serveur MCP { [name: string]: MCPStatus }POST/mcpAjouter dynamiquement le serveur MCP corps : { name, config }, renvoie l’objet d’état MCP
Méthode Chemin Descriptif Réponse GET/agentListe tous les agents disponibles Agent[]
Méthode Chemin Descriptif Réponse POST/logÉcrire une entrée de journal. Corps : { service, level, message, extra? } boolean
Méthode Chemin Descriptif Réponse POST/tui/append-promptAjouter du texte à l’invite booleanPOST/tui/open-helpOuvrir la boîte de dialogue d’aide booleanPOST/tui/open-sessionsOuvrez le sélecteur de session booleanPOST/tui/open-themesOuvrez le sélecteur de thème booleanPOST/tui/open-modelsOuvrez le sélecteur de modèle booleanPOST/tui/submit-promptSoumettre l’invite actuelle booleanPOST/tui/clear-promptEffacez l’invite booleanPOST/tui/execute-commandExécuter une commande ({ command }) booleanPOST/tui/show-toastAfficher le toast ({ title?, message, variant }) booleanGET/tui/control/nextAttendre la prochaine demande de contrôle Objet de demande de contrôle POST/tui/control/responseRépondre à une demande de contrôle ({ body }) boolean
Méthode Chemin Descriptif Réponse PUT/auth/:idDéfinissez les informations d’authentification. Le corps doit correspondre au schéma du fournisseur boolean
Méthode Chemin Descriptif Réponse GET/eventFlux d’événements envoyés par le serveur. Le premier événement est server.connected, puis les événements de bus Flux d’événements envoyés par le serveur
Méthode Chemin Descriptif Réponse GET/docSpécification OpenAPI 3.1 Page HTML avec spécification OpenAPI