OpenCode
BirdyBeep ships as a native OpenCode plugin that listens to session, permission, idle, error and tool events — so sessions on this machine appear in the app and you get a beep when one needs you.
- ~2 min setup
- restart once
- open source
Quick install
If this machine is already paired, one command configures OpenCode:
birdybeep agent install opencode Restart once
OpenCode loads plugins only at startup, so the integration isn't live until you restart
OpenCode once after install. Until then the app shows this integration as
needs restart; after restart, OpenCode sessions on this machine are tracked
automatically.
What gets written
Install adds one BirdyBeep-managed entry to the plugin array in
~/.config/opencode/opencode.json (your existing config is preserved):
{
"plugin": ["@birdybeep/opencode"]
} OpenCode installs the package and loads its plugin export. No token is written — the plugin reads your machine token from the secure store at event time.
Events you'll get
| opencode event | beep type | example push |
|---|---|---|
| session start | session_started | silent — the session appears in the app |
| permission | approval_required | opencode needs your approval |
| idle | agent_idle | opencode is waiting |
| error | agent_failed | opencode hit an error |
| tool / finish | agent_completed | opencode finished |
With Private Mode on (free for everyone), the push drops repo, branch, path, and command.
Test it
Send a real test beep to confirm the integration end to end:
birdybeep test
# → beep sent. check your phone. Not chirping? birdybeep doctor checks pairing, plugin load, and delivery.
Security note
security note
Your machine token lives in the OS keychain (or ~/.config/birdybeep/ with strict
permissions), is never written into repos or config files, and can be revoked or rotated from
the app at any time. Notification bodies are never stored on our servers, and absolute paths are
hashed or redacted. All adapter source is public under MIT —
read it on github.