सर्वर
HTTP के माध्यम से opencode सर्वर के साथ इंटरैक्ट करें।
opencode serve कमांड एक हेडलेस HTTP सर्वर चलाता है जो एक OpenAPI एंडपॉइंट एक्सपोज़ करता है जिसे opencode क्लाइंट उपयोग कर सकता है।
उपयोग
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]विकल्प
| फ्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
--port | सुनने के लिए पोर्ट | 4096 |
--hostname | सुनने के लिए होस्टनेम | 127.0.0.1 |
--mdns | mDNS डिस्कवरी सक्षम करें | false |
--mdns-domain | mDNS सेवा के लिए कस्टम डोमेन नाम | opencode.local |
--cors | अनुमत अतिरिक्त ब्राउज़र ऑरिजिन | [] |
--cors को कई बार पास किया जा सकता है:
opencode serve --cors http://localhost:5173 --cors https://app.example.comप्रमाणीकरण
HTTP बेसिक ऑथ के साथ सर्वर को सुरक्षित करने के लिए OPENCODE_SERVER_PASSWORD सेट करें। उपयोगकर्ता नाम डिफ़ॉल्ट रूप से opencode है, या इसे बदलने के लिए OPENCODE_SERVER_USERNAME सेट करें। यह opencode serve और opencode web दोनों पर लागू होता है।
OPENCODE_SERVER_PASSWORD=your-password opencode serveयह कैसे काम करता है
जब आप opencode चलाते हैं, तो यह एक TUI और एक सर्वर शुरू करता है। TUI वह क्लाइंट है जो सर्वर से संवाद करता है। सर्वर एक OpenAPI 3.1 स्पेक एंडपॉइंट एक्सपोज़ करता है। इस एंडपॉइंट का उपयोग SDK जनरेट करने के लिए भी किया जाता है।
टिप: opencode के साथ प्रोग्रामेटिक रूप से इंटरैक्ट करने के लिए opencode सर्वर का उपयोग करें।
यह आर्किटेक्चर opencode को कई क्लाइंट्स को सपोर्ट करने की अनुमति देता है और आपको opencode के साथ प्रोग्रामेटिक रूप से इंटरैक्ट करने की अनुमति देता है।
आप स्टैंडअलोन सर्वर शुरू करने के लिए opencode serve चला सकते हैं। यदि आपके पास opencode TUI पहले से चल रही है, तो opencode serve एक नया सर्वर शुरू करेगा।
मौजूदा सर्वर से कनेक्ट करें
जब आप TUI शुरू करते हैं, तो यह रैंडमली एक पोर्ट और होस्टनेम असाइन करता है। आप इसके बजाय --hostname और --port फ्लैग पास कर सकते हैं। फिर इसका उपयोग इसके सर्वर से कनेक्ट करने के लिए करें।
/tui एंडपॉइंट का उपयोग सर्वर के माध्यम से TUI को ड्राइव करने के लिए किया जा सकता है। उदाहरण के लिए, आप प्रॉम्प्ट को प्रीफिल या रन कर सकते हैं। यह सेटअप OpenCode IDE प्लगइन्स द्वारा उपयोग किया जाता है।
स्पेसिफिकेशन
सर्वर एक OpenAPI 3.1 स्पेक प्रकाशित करता है जिसे यहां देखा जा सकता है:
http://<hostname>:<port>/docउदाहरण के लिए, http://localhost:4096/doc। क्लाइंट जनरेट करने या रिक्वेस्ट और रिस्पॉन्स टाइप्स का निरीक्षण करने के लिए स्पेक का उपयोग करें। या इसे Swagger एक्सप्लोरर में देखें।
APIs
opencode सर्वर निम्नलिखित APIs एक्सपोज़ करता है।
ग्लोबल
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /global/health | सर्वर हेल्थ और वर्शन प्राप्त करें | { healthy: true, version: string } |
GET | /global/event | ग्लोबल इवेंट्स प्राप्त करें (SSE स्ट्रीम) | इवेंट स्ट्रीम |
प्रोजेक्ट
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /project | सभी प्रोजेक्ट्स की सूची | Project[] |
GET | /project/current | वर्तमान प्रोजेक्ट प्राप्त करें | Project |
पाथ और VCS
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /path | वर्तमान पाथ प्राप्त करें | Path |
GET | /vcs | वर्तमान प्रोजेक्ट के लिए VCS जानकारी प्राप्त करें | VcsInfo |
इंस्टेंस
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
POST | /instance/dispose | वर्तमान इंस्टेंस को डिस्पोज़ करें | boolean |
कॉन्फ़िग
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /config | कॉन्फ़िग जानकारी प्राप्त करें | Config |
PATCH | /config | कॉन्फ़िग अपडेट करें | Config |
GET | /config/providers | प्रोवाइडर्स और डिफ़ॉल्ट मॉडल्स की सूची | { providers: Provider[], default: { [key: string]: string } } |
प्रोवाइडर
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /provider | सभी प्रोवाइडर्स की सूची | { all: Provider[], default: {...}, connected: string[] } |
GET | /provider/auth | प्रोवाइडर ऑथेंटिकेशन मेथड्स प्राप्त करें | { [providerID: string]: ProviderAuthMethod[] } |
POST | /provider/{id}/oauth/authorize | OAuth का उपयोग करके प्रोवाइडर को ऑथराइज़ करें | ProviderAuthAuthorization |
POST | /provider/{id}/oauth/callback | प्रोवाइडर के लिए OAuth कॉलबैक हैंडल करें | boolean |
सेशन्स
| मेथड | पाथ | विवरण | नोट्स |
|---|---|---|---|
GET | /session | सभी सेशन्स की सूची | Session[] रिटर्न करता है |
POST | /session | नया सेशन बनाएं | body: { parentID?, title? }, Session रिटर्न करता है |
GET | /session/status | सभी सेशन्स का स्टेटस प्राप्त करें | { [sessionID: string]: SessionStatus } रिटर्न करता है |
GET | /session/:id | सेशन विवरण प्राप्त करें | Session रिटर्न करता है |
DELETE | /session/:id | सेशन और उसका सारा डेटा डिलीट करें | boolean रिटर्न करता है |
PATCH | /session/:id | सेशन प्रॉपर्टीज़ अपडेट करें | body: { title? }, Session रिटर्न करता है |
GET | /session/:id/children | सेशन के चाइल्ड सेशन्स प्राप्त करें | Session[] रिटर्न करता है |
GET | /session/:id/todo | सेशन के लिए टूडू लिस्ट प्राप्त करें | Todo[] रिटर्न करता है |
POST | /session/:id/init | ऐप का विश्लेषण करें और AGENTS.md बनाएं | body: { messageID, providerID, modelID }, boolean रिटर्न करता है |
POST | /session/:id/fork | किसी मैसेज पर मौजूदा सेशन को फोर्क करें | body: { messageID? }, Session रिटर्न करता है |
POST | /session/:id/abort | चल रहे सेशन को एबॉर्ट करें | boolean रिटर्न करता है |
POST | /session/:id/share | सेशन शेयर करें | Session रिटर्न करता है |
DELETE | /session/:id/share | सेशन अनशेयर करें | Session रिटर्न करता है |
GET | /session/:id/diff | इस सेशन के लिए डिफ प्राप्त करें | query: messageID?, FileDiff[] रिटर्न करता है |
POST | /session/:id/summarize | सेशन का सारांश बनाएं | body: { providerID, modelID }, boolean रिटर्न करता है |
POST | /session/:id/revert | मैसेज को रिवर्ट करें | body: { messageID, partID? }, boolean रिटर्न करता है |
POST | /session/:id/unrevert | सभी रिवर्ट किए गए मैसेज को रिस्टोर करें | boolean रिटर्न करता है |
POST | /session/:id/permissions/:permissionID | परमिशन रिक्वेस्ट का जवाब दें | body: { response, remember? }, boolean रिटर्न करता है |
मैसेजेस
| मेथड | पाथ | विवरण | नोट्स |
|---|---|---|---|
GET | /session/:id/message | सेशन में मैसेजेस की सूची | query: limit?, { info: Message, parts: Part[] }[] रिटर्न करता है |
POST | /session/:id/message | मैसेज भेजें और रिस्पॉन्स का इंतज़ार करें | body: { 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 | मैसेज एसिंक्रोनसली भेजें (इंतज़ार नहीं) | body: /session/:id/message जैसा ही, 204 No Content रिटर्न करता है |
POST | /session/:id/command | स्लैश कमांड एक्ज़ीक्यूट करें | body: { messageID?, agent?, model?, command, arguments }, { info: Message, parts: Part[] } रिटर्न करता है |
POST | /session/:id/shell | शेल कमांड चलाएं | body: { 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(आवश्यक) — सर्च स्ट्रिंग (फ़ज़ी मैच)type(वैकल्पिक) — परिणामों को"file"या"directory"तक सीमित करेंdirectory(वैकल्पिक) — सर्च के लिए प्रोजेक्ट रूट ओवरराइड करेंlimit(वैकल्पिक) — अधिकतम परिणाम (1–200)dirs(वैकल्पिक) — लेगेसी फ्लैग ("false"केवल फाइलें रिटर्न करता है)
टूल्स (प्रयोगात्मक)
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /experimental/tool/ids | सभी टूल IDs की सूची | ToolIDs |
GET | /experimental/tool?provider=<p>&model=<m> | मॉडल के लिए JSON स्कीमा के साथ टूल्स की सूची | ToolList |
LSP, फॉर्मेटर्स और MCP
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /lsp | LSP सर्वर स्टेटस प्राप्त करें | LSPStatus[] |
GET | /formatter | फॉर्मेटर स्टेटस प्राप्त करें | FormatterStatus[] |
GET | /mcp | MCP सर्वर स्टेटस प्राप्त करें | { [name: string]: MCPStatus } |
POST | /mcp | डायनामिकली MCP सर्वर जोड़ें | body: { name, config }, MCP स्टेटस ऑब्जेक्ट रिटर्न करता है |
एजेंट्स
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /agent | सभी उपलब्ध एजेंट्स की सूची | Agent[] |
लॉगिंग
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
POST | /log | लॉग एंट्री लिखें। Body: { 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 |
Auth
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
PUT | /auth/:id | ऑथेंटिकेशन क्रेडेंशियल्स सेट करें। Body प्रोवाइडर स्कीमा से मैच होना चाहिए | boolean |
इवेंट्स
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /event | सर्वर-सेंट इवेंट्स स्ट्रीम। पहला इवेंट server.connected है, फिर बस इवेंट्स | सर्वर-सेंट इवेंट्स स्ट्रीम |
Docs
| मेथड | पाथ | विवरण | रिस्पॉन्स |
|---|---|---|---|
GET | /doc | OpenAPI 3.1 स्पेसिफिकेशन | OpenAPI स्पेक के साथ HTML पेज |