Packages
opencode_sdk
0.1.0
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Unofficial OpenCode SDK for Elixir. A complete Elixir SDK for OpenCode, providing server creation, session management, messaging, file operations, and more. Mirrors the functionality of the official JavaScript SDK (@opencode-ai/sdk). Not affiliated with or built by the OpenCode team.
Current section
Files
Jump to
Current section
Files
opencode_sdk
README.md
README.md
# OpenCode SDK for Elixir
An unofficial Elixir SDK for OpenCode that mirrors the JS SDK (`@opencode-ai/sdk`).
The API surface is generated from the OpenCode OpenAPI spec.
## Installation
Add `opencode` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:opencode, "~> 0.1.0"}
]
end
```
## Create Server + Client
```elixir
{:ok, %{client: client, server: server}} = OpenCode.create()
{:ok, health} = OpenCode.Generated.Operations.global_health(client)
OpenCode.close(%{server: server})
```
### Options
`OpenCode.create/1` forwards options to `OpenCode.create_server/1`.
- `:hostname` - Server hostname (default `"127.0.0.1"`)
- `:port` - Server port (default `4096`)
- `:timeout` - Startup timeout in ms (default `5000`)
- `:config` - Config map passed via `OPENCODE_CONFIG_CONTENT`
## Client Only
```elixir
client = OpenCode.create_client(base_url: "http://localhost:4096")
{:ok, projects} = OpenCode.Generated.Operations.project_list(client)
```
### Client Options
- `:base_url` - Server URL (default `"http://127.0.0.1:4096"`)
- `:directory` - Optional project directory header
- `:headers` - Extra headers (map or keyword list)
- `:timeout` - Request timeout (default `:infinity`)
## TUI
```elixir
{:ok, tui} = OpenCode.create_tui(project: "/path/to/project")
OpenCode.Tui.close(tui)
```
## Events
```elixir
{:ok, %{stream: stream}} = OpenCode.Generated.Operations.event_subscribe(client)
Enum.each(stream, fn event ->
IO.inspect(event)
end)
```
## Types
All OpenAPI types are generated under `OpenCode.Generated.*`.
```elixir
# Example type module
OpenCode.Generated.Session
```
## Regenerating
The OpenAPI spec lives at `priv/opencode_openapi.json`.
To regenerate the client:
```bash
mix opencode.gen.client --spec priv/opencode_openapi.json
```
# Note
This is not affiliated with or built by the OpenCode team.