optio-opencode
Run opencode web as an optio task — local subprocess or remote over SSH — with opencode's UI reachable through optio's UI components.
What it does
Given an OpencodeTaskConfig (workdir contents, prompt, deliverable callback), optio-opencode:
- Provisions a fresh workdir on the chosen host (local or remote).
- Writes
AGENTS.md(base prompt + your instructions) andopencode.json(your config) into it. - Installs the opencode binary if missing (remote mode only).
- Launches
opencode webwith a random auth password. - Registers the opencode UI as a widget that optio's UI components can embed via the widget proxy — SSH tunnel hidden from optio-api.
- Tails a log file the LLM writes to and translates structured lines into optio events:
STATUS: …→ctx.report_progress(percent, message)DELIVERABLE: <path>→ fetches the file, invokes youron_deliverablecallbackDONE [summary]→ clean completionERROR [message]→ failure
- Cleans up workdir and SSH connection on teardown.
The same OpencodeTaskConfig works for local and remote modes; only SSHConfig differs.
When to use it
You want an opencode-driven assistant session as a managed optio task — surfaced through optio's UI, with progress reporting and file deliverables — without writing the host management, log parsing, or widget plumbing yourself.
Installation
pip install optio-opencode
Python 3.11+. Depends on optio-core, optio-host, and asyncssh.
Minimal example
from optio_opencode import create_opencode_task, OpencodeTaskConfig
from optio_host import SSHConfig
config = OpencodeTaskConfig(
workdir_files={"AGENTS.md": "Do the thing.", "opencode.json": "{...}"},
on_deliverable=lambda ctx, path, text: print(f"got {path}: {len(text)} bytes"),
ssh=SSHConfig(host="worker-1", user="optio", key_path="~/.ssh/id_optio"),
)
task = create_opencode_task(config)
# Schedule / run via optio-core as usual.
Set ssh=None for local subprocess mode.
Messages
use_client_messages(bool, defaultFalse) — enable theCLIENT_MESSAGE:log keyword: the agent can push{keyword, data}messages to the browser session that launched the task (surfaced via optio-ui'sonClientMessage).on_caller_message(async callback, defaultNone) — enable theCALLER_MESSAGE:log keyword: the agent can push{keyword, data}messages to your application. Signature(hook_ctx, keyword, data) -> str | None; a non-None return is sent back to the agent as feedback. Keywords that are not enabled are absent from both the parser and the agent-facing protocol documentation.
License
Apache-2.0.
Metadata
Release files for optio-opencode 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| optio_opencode-0.6.0.tar.gz | 126.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| optio_opencode-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 193.2 kB
Release files / optio_opencode-0.6.0.tar.gz
| Download URL | optio_opencode-0.6.0.tar.gz |
|---|---|
| Size | 126.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcf530d3d1ac64d647d1fa06682fa06787710d48bf2203db5baaaf43069da96f
|
|
BLAKE2b-256 checksum How to use checksums |
ac0c65b87292f430416242c141d0906f8ad9cd44ba8f6039206eaf1eadef3f0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / optio_opencode-0.6.0-py3-none-any.whl
| Download URL | optio_opencode-0.6.0-py3-none-any.whl |
|---|---|
| Size | 66.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c2d1a462e129ace153f97d9c88c72b219e8819194be685dd99974454cdd748d
|
|
BLAKE2b-256 checksum How to use checksums |
8539308d29d2f0142936f152155e614a79000eb4e40d1e06fbfc7d831f70a565
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|