opencode-open-webui-sync
Syncs context from opencode sessions into Open WebUI. When a session goes idle, it summarizes what happened using a local vLLM model, writes the result to AGENTS.md in the project root, and updates an Open WebUI memory so the context is automatically injected into future conversations.
No persistent services required. Memory API replaces the need for a Pipelines filter.
How it works
When an opencode session goes idle:
- The plugin reads the session transcript via the opencode SDK
- Sends it to the local vLLM endpoint for summarization
- Overwrites
## Current StateinAGENTS.mdand prepends a new## Session Logentry - Upserts an Open WebUI memory for the project (keyed by git remote repo name, so it works across machines)
- Shows a toast in opencode when done
Files
| File | Purpose |
|---|---|
owui-sync.ts |
opencode plugin — the main implementation |
AGENTS.md |
Template to copy into project roots |
Setup
1. Get your Open WebUI API key
Open WebUI → Settings → Account → API Keys → create one.
2. Add the plugin to ~/.config/opencode/config.json
"plugin": [
["file:///path/to/opencode-open-webui-sync", {
"owui_url": "https://your-owui-host",
"owui_token": "sk-your-api-key"
}]
]
3. Copy AGENTS.md into your project
cp /path/to/opencode-open-webui-sync/AGENTS.md /your/project/AGENTS.md
The plugin writes to {projectDirectory}/AGENTS.md, wherever opencode is running from.
4. Verify it works
Run an opencode session, do some work, let it go idle (~30s). Then:
# Check AGENTS.md was updated
cat /your/project/AGENTS.md
# Watch the plugin log
tail -f ~/.local/share/opencode/owui-sync.log
Plugin options
| Option | Default | Description |
|---|---|---|
owui_url |
— | Open WebUI base URL |
owui_token |
— | Open WebUI API key |
vllm_url |
http://10.10.0.12:8000/v1 |
vLLM base URL |
vllm_model |
qwen3.6 |
Model to use for summarization |
vllm_key |
token-abc123 |
vLLM API key |
owui_url and owui_token are required for memory sync. Without them, only AGENTS.md is written.
The vLLM options have working defaults for this setup. Override them in config if your endpoint differs.
Files written by the plugin
| Path | Purpose |
|---|---|
{projectDir}/AGENTS.md |
Session context, updated after each session |
~/.local/share/opencode/owui-sync.log |
Plugin log, capped at 500 lines |
~/.local/share/opencode/owui-sync-ids.json |
Cache of Open WebUI memory IDs per project |
AGENTS.md format
## Current State
- concise bullets describing where the project is right now
- overwritten after every session
## Session Log
### YYYY-MM-DD HH:MM — Session title (sessionId)
- **Worked on:** ...
- **Decisions:** ...
- **Done:** ...
- **Blockers:** ...
- **Next:** ...
Anything above ## Current State (architecture notes, conventions, etc.) is left untouched.