Add to ~/.config/opencode/opencode.json:
{ "plugin": ["octto"] }
An interactive browser UI for AI brainstorming. Stop typing in terminals. Start clicking in browsers.
https://github.com/user-attachments/assets/9ba8868d-16f3-4451-9b73-6b7e1fc54655
When you describe your idea, octto opens an interactive UI:
10 minutes of terminal typing → 2 minutes of clicking.
Add to ~/.config/opencode/opencode.json:
{ "plugin": ["octto"] }
Select the octto agent:
I want to add a caching layer to the API
A browser window opens. Click your answers. Done.
No more typing everything. Pick from 14 visual input types:
| Type | What You See |
|---|---|
pick_one |
Radio buttons |
pick_many |
Checkboxes |
confirm |
Yes/No buttons |
slider |
Draggable range |
rank |
Drag to reorder |
rate |
Star rating |
thumbs |
Thumbs up/down |
show_options |
Cards with pros/cons |
show_diff |
Side-by-side code diff |
ask_code |
Syntax-highlighted editor |
ask_text |
Text input (when needed) |
ask_image |
Image upload |
ask_file |
File upload |
emoji_react |
Emoji picker |
Your request is split into 2-4 exploration branches. All initial questions appear at once:
┌─ Branch 1: [question card]
Request ─┼─ Branch 2: [question card]
└─ Branch 3: [question card]
↓
Answer any, in any order
Each branch goes as deep as needed. Some finish in 2 questions, others take 4.
| Agent | Job |
|---|---|
| bootstrapper | Splits your request into branches |
| probe | Decides if a branch needs more questions |
| octto | Orchestrates the session |
docs/plans/Optional ~/.config/opencode/octto.json:
{
"port": 3000,
"agents": {
"probe": { "model": "anthropic/claude-sonnet-4" }
}
}
| Option | Type | Default | Description |
|---|---|---|---|
port |
number | 0 (random) |
Fixed port for the browser UI server |
agents |
object | - | Override agent models/settings |
fragments |
object | - | Custom instructions injected into agent prompts |
Inject custom instructions into agent prompts. Useful for customizing agent behavior per-project or globally.
Global config (~/.config/opencode/octto.json):
{
"fragments": {
"octto": ["Always suggest 3 implementation approaches"],
"probe": ["Include emoji in every question"],
"bootstrapper": ["Focus on technical feasibility"]
}
}
Project config (.octto/fragments.json in your project root):
{
"octto": ["This project uses React - focus on component patterns"],
"probe": ["Ask about testing strategy for each feature"]
}
Fragments are merged: global fragments load first, project fragments append. Each fragment becomes a bullet point in a <user-instructions> block prepended to the agent's system prompt.
| Variable | Description |
|---|---|
OCTTO_PORT |
Override port (takes precedence over config file) |
For Docker workflows, set a fixed port:
OCTTO_PORT=3000 opencode
bun install
bun run build
bun test
MIT
Sign in to leave a comment.