Skip to content

Repository files navigation

OpenCode Notch

OpenCode Notch

Answer your agent from the top of your screen — no alt-tabbing.

A macOS-style notch for Windows that turns OpenCode's approval prompts, forms, live agent activity and context usage into one glance at the top edge of your screen.

Platform OpenCode Electron License CI Telegram

Download · Website · Features · How it works · Troubleshooting · Chat

English · Русский

OpenCode Notch — collapsing pill, expanding panel, approval request

▶ 10-second demo (mp4)


Why

When you run OpenCode in a terminal, you end up alt-tabbing to check one thing: did it finish? is it waiting for my approval? what is it doing right now?

OpenCode Notch puts that answer at the top edge of your screen as a small black capsule. It stays out of the way until an agent needs you — then it unfolds, shows the pending request, and lets you answer without leaving the app you are working in.

No plugins, no hooks, no config files in your project. The notch talks to the local OpenCode background service directly.

Features

  • Notch that behaves like a notch — a pill at the top of the screen. Drag it anywhere; when it sits at the top edge, its top corners square off and it melts into the screen.
  • Hover to open, pin to keep — expand on hover, or pin it open with Ctrl+Alt+N.
  • Permission approvals — Allow once / Always / Reject right in the notch, with a soft chime so you do not miss it.
  • Interactive forms — text, numbers, selects, checkboxes, multiselect and conditional fields render as real inputs; answer and send without touching the terminal.
  • Live activity line — what the agent is doing right now: … command: npm test, ✓ edit: src/routes.ts, or a snippet of the reasoning it is streaming.
  • Per-session context usage — ctx 89.6k / 200k · 45% from the newest assistant message, plus cumulative tokens and cost in the footer.
  • Quick reply — type an answer to the selected session straight from the notch.
  • Interrupt — stop a run from the row, without switching windows.
  • Multiple sessions — status dots per session: running, waiting for you, done, error, retry.
  • Session center — rename, archive or restore sessions, and open any project directly in the OpenCode TUI.
  • Project views — switch projects, group sessions by project, show archived sessions on demand, and search across metadata.
  • Command palette — Ctrl/Cmd + K opens keyboard-first commands; arrow keys move through sessions.
  • Responsive panel — contextual row actions and a compact layout that fits narrow screens.
  • Filter — type to narrow a long session list.
  • Multi-monitor + position memory — remembers where you dragged it, per display.
  • Finish confirmation — a Face ID-style card slides in when a run ends: elapsed time, cost and tokens, a soft chime, gone in four seconds.
  • Windows notifications — a native toast when a long run (20 s+) ends while the notch is hidden or your cursor is elsewhere. Toggle it in the tray.
  • Update nudge, never a nag — the notch checks GitHub for a newer release and offers Download / Later. "Later" remembers the version it told you about, and the offer never expands the panel on its own.
  • Three themes — Notch, Midnight and Mono, picked from the tray menu and remembered across restarts.
  • Two languages — English and Russian UI, picked from the tray menu, "System" by default.
  • Tray icon — Show / Hide, Pin, Center at top, Mute sounds, Theme, Language, Launch at login, Quit.
  • Autostart — optional "launch at login", starts hidden until something needs you.

Screenshots

Session list
Three sessions — two running, one just finished
Interactive form
A form from an agent, answered inside the notch
Collapsed pill
Collapsed: status dots and nothing else

When a run finishes

Finish confirmation

When a new release is out

Update offer

Three themes

Notch theme
Notch — green accent, the default
Midnight theme
Midnight — colder base, brighter dots
Mono theme
Mono — greyscale, colour only for alerts

Install

Option A — installer (recommended)

  1. Open Releases and download OpenCodeNotch-Setup-0.3.2.exe.
  2. Run it. It installs for the current user only, so there is no UAC prompt, and it adds Start-menu and desktop shortcuts.
  3. OpenCode Notch starts right away — a black capsule appears at the top of your screen.

The installer keeps your settings in %APPDATA%\OpenCode Notch, and uninstalling leaves them alone in case you come back.

Option B — portable zip

  1. Download OpenCodeNotch-win-x64.zip from the same release.
  2. Unzip it anywhere (for example C:\Program Files\OpenCode Notch or a USB stick).
  3. Run OpenCode Notch.exe.

Windows may warn you. Neither build is code-signed, so SmartScreen shows "Windows protected your PC" or "Unknown publisher". Click More info → Run anyway. The source is right here in this repository, and you can build both artifacts yourself with npm run make and npm run dist.

Option C — run from source

Requires Node.js 20+.

git clone https://github.com/fraches05/opencode-notch.git
cd opencode-notch
npm install
npm start

Or just double-click start-notch.cmd — it installs dependencies on first run and launches the notch.

Requirements

  • Windows 10 or 11
  • OpenCode 2.x installed, with its background service available. The notch discovers the service the same way the TUI does — usually nothing to configure.
  • No plugin, no API key, no extra configuration.

If the notch cannot reach OpenCode, it says so directly in the panel — OpenCode isn't running or OpenCode isn't installed — and offers the matching action instead of showing an empty box. Tested against OpenCode 2.1.2.

Using it

Action How
Open the panel Hover the pill, or press Ctrl+Alt+N
Keep it open Click the 📌 pin, or press Ctrl+Alt+N
Close the panel Click ✕, press Esc, or move the cursor away
Move it Drag the pill or the panel header
Reset position Tray icon → Center at top
Answer a permission Allow once / Always / Reject
Reply to a session Select a row, type in the bottom field, Enter
Stop a run The ■ button on a running row
Rename a session Hover a row → ✎, edit the title, press Enter
Archive / restore Hover a row → ⌁ / ↶
Open in TUI Hover a row → ↗
Search and filter Search field, project tabs, or Ctrl/Cmd + K
Mute the chime Speaker icon, or tray → Mute sounds
Change the theme Tray icon → Theme → Notch / Midnight / Mono
Change the language Tray icon → Language → System / English / Русский
Turn off finish toasts Tray icon → Notify when a run ends
Check for a new release Tray icon → Check for updates (also runs at startup and every 6 h)
Start with Windows Tray icon → Launch at login

Settings live in %APPDATA%\OpenCode Notch\notch.json (position, pinned, muted, theme, language, notifications, dismissed update, autostart).

How it works

┌──────────────────────────┐        ┌───────────────────────────────┐
│  Electron main process   │  HTTP  │  OpenCode background service  │
│  @opencode/client        │ <────> │  discovered on 127.0.0.1      │
│  · service discovery     │        │  · sessions / permissions     │
│  · SSE /api/event        │        │  · forms / models / messages  │
│  · state reducer         │        └───────────────────────────────┘
├──────────────────────────┤
│  Renderer (no network)   │   ← state snapshots + IPC actions
└──────────────────────────┘
  • The main process discovers the running service with Service.discover() and authenticates with Service.headers() — the same path OpenCode's own clients use.
  • It subscribes to the server-sent event stream at /api/event and turns raw events (session.status, permission.asked, session.tool.called, form.created, session.usage.updated, …) into a small UI snapshot.
  • The renderer only draws that snapshot and sends actions back over IPC (perm:reply, session:prompt, session:interrupt, form:reply, …). It has no network access.
  • The window follows its content: it is a frameless, transparent, always-on-top surface that resizes to the pill or the panel, and re-centres itself when its size changes.

Privacy: everything stays on your machine. The notch talks only to your local OpenCode service, sends no telemetry, and stores only its own UI preferences.

Troubleshooting

The pill does not appear Start OpenCode at least once so its background service exists. If the notch says reconnecting…, run opencode service status in a terminal.

Hover does not open the panel Click the tray icon and use Pin panel open (Ctrl+Alt+N) — this also confirms the window is where you expect it. If the key is taken by another app, the notch falls back to Ctrl+Shift+N, then Ctrl+Alt+O, then F9.

Window is on the wrong monitor or off-screen Tray → Center at top. Position is remembered per display.

Nothing happens when I click Allow The permission may already be resolved in another client (TUI). The card disappears as soon as the server reports the reply.

The context number looks large ctx is the size of the newest assistant message (prompt + cache read + output) — the real context occupancy. The footer shows cumulative session tokens, which include every cache read and grow quickly.

Where are the logs? %TEMP%\opencode-notch.log — startup, connection and renderer errors only.

Related projects

The notch/Dynamic Island genre is bigger than this repository, and that is a good thing:

  • lumiomac.app — the macOS app that started this whole idea; genuinely lovely, macOS-only.
  • opencode — the agent this notch exists for.
  • If you are on a Mac, there are several excellent notch apps for coding agents; this project exists because those do not run on Windows and because it talks to OpenCode's own API instead of relying on hooks or window titles.

Contributing

Issues and pull requests are welcome. If OpenCode changes its API, the failure will usually show up as reconnecting… in the header — attach %TEMP%\opencode-notch.log to the issue.

Not sure where to start? Good first issues:

  • Theme accents / compact mode variants
  • Localization
  • Code signing, so Windows stops warning
  • Better retry/backoff telemetry in the tray tooltip

Contact

  • Telegram: @mrsdsxp — the fastest way to reach me; screenshots, half-formed ideas and "it broke" all welcome.
  • GitHub: issues for anything that should stay searchable.
  • Changelog: CHANGELOG.md — what changed and when.

Disclaimer

This is an independent, unofficial project. It is not affiliated with, endorsed by, or connected to OpenCode, lumiomac, or any other notch app. "OpenCode" is used descriptively to say what the app works with.

If it saves you a few alt-tabs, a ⭐ helps other people find it.

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. OpenCode Notch talks only to the OpenCode service already running on the same machine, and to GitHub when it checks for updates.

Windows installers are built from this repository's source with electron-builder in the release workflow. The full policy, including the privacy statement, lives on the website.

License

MIT

Releases

Packages

Contributors

Languages