| # OpenCode-Compatible Provider Integration |
|
|
| ## Goal |
|
|
| Make AbteeX SovereignCode usable from OpenCode and similar coding agents without |
| requiring those tools to understand Data Capsules directly. |
|
|
| The integration shape is: |
|
|
| ```text |
| OpenCode |
| -> OpenAI-compatible provider config |
| -> MaramaRoute gateway `/v1` |
| -> SovereignCode policy and tool broker |
| -> LumynaX model runtime |
| ``` |
|
|
| ## Current Compatibility Target |
|
|
| OpenCode supports custom OpenAI-compatible providers through |
| `@ai-sdk/openai-compatible` and a provider `baseURL`. OpenRouter exposes an |
| OpenAI-like chat endpoint at `/api/v1/chat/completions`, with normalized request |
| and response payloads. MaramaRoute should therefore expose: |
|
|
| - `GET /v1/models` |
| - `POST /v1/chat/completions` |
| - `POST /v1/route` |
| - `GET /v1/route/{decision_id}` |
|
|
| References checked on 2026-05-17: |
|
|
| - https://opencode.ai/docs/providers |
| - https://openrouter.ai/docs/api-reference/overview/ |
| - https://openrouter.ai/docs/api-reference/chat-completion |
|
|
| ## OpenCode Provider Config |
|
|
| Use `examples/opencode.marama-route.json` as the project-local provider file. |
|
|
| The important fields are: |
|
|
| | Field | Value | |
| | --- | --- | |
| | `provider.abteex-marama.npm` | `@ai-sdk/openai-compatible` | |
| | `provider.abteex-marama.options.baseURL` | Local or hosted MaramaRoute `/v1` URL | |
| | `provider.abteex-marama.options.apiKey` | Environment backed key | |
| | `provider.abteex-marama.models` | LumynaX model aliases exposed by MaramaRoute | |
|
|
| ## SovereignCode Responsibilities |
|
|
| OpenCode sends a normal chat request. SovereignCode and MaramaRoute add: |
|
|
| - capsule resolution from workspace policy files |
| - purpose and personal-detail checks before prompt assembly |
| - model routing based on residency, modality, task, and sensitivity |
| - visible approval gates before file writes, shell commands, network export, or commit |
| - audit records for policy decisions and route decisions |
|
|
| ## Workspace Files |
|
|
| A governed workspace should carry: |
|
|
| ```text |
| .sovereigncode/ |
| capsule.json |
| tenant-policy.yaml |
| approvals/ |
| audit/ |
| opencode.json |
| ``` |
|
|
| The agent can start with `capsule.json` and `opencode.json`. The full tool |
| broker can add approvals and audit persistence in the next build stage. |
|
|
| ## Minimum Viable Flow |
|
|
| 1. User opens a project in OpenCode. |
| 2. OpenCode uses the `abteex-marama` provider. |
| 3. MaramaRoute dry-runs the chat payload and selects a LumynaX model. |
| 4. SovereignCode checks the workspace Data Capsule before exposing context. |
| 5. The coding agent proposes a plan. |
| 6. File writes require a visible diff and an audit record. |
| 7. Shell, network, commit, and publish actions require explicit approval. |
|
|
| ## Similar Clients |
|
|
| Any client that can point at an OpenAI-compatible endpoint should use the same |
| gateway: |
|
|
| | Client type | Expected integration | |
| | --- | --- | |
| | OpenCode | `opencode.json` custom provider | |
| | Continue-style IDE assistant | OpenAI-compatible base URL and model ids | |
| | Aider-style terminal assistant | OpenAI-compatible base URL and key | |
| | Internal agent runner | Direct `/v1/route` and `/v1/chat/completions` calls | |
| | Browser console | Same API behind tenant auth | |
|
|