anomalyco / anomalyco/opencode
TUI paints empty frames on macOS ARM64 (Apple Silicon): server boots fully but renderer never draws UI — 1.16.2, 1.17.0, 1.18.21
@kommander is already working on this.
Since Aug 23, 2026.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- PR merge metrics
- PR metrics pending
Description
Environment
- OS: macOS 26.x (Darwin 25.6.0), Apple M5 Max (ARM64)
- Terminals tested: WezTerm (current), Herdr multiplexer panes, raw PTY with synthetic query responses
- Versions tested: 1.16.2, 1.17.0, 1.18.21 (official install script)
- Reproduces with:
--pure, no plugins, no project config, no global config,autoupdate: false
Summary
On this machine no version of the OpenCode TUI ever renders UI. Two failure stages, both observed:
- Config-dependent boot stall: with the default config present, the process hangs after loading config files — log ends at the last
loading path=...line, no error. Moving all configs/plugins aside lets boot complete. - Renderer paints nothing regardless: even when the backend boots fully (
init→created session→event connectedin logs) and the terminal answers every capability query, the screen shows only blank rows.
opencode run "..." also produces no output on stdin/stdout, same machine.
Evidence
Log progression with clean config (v1.17.0, WezTerm, real terminal):
init
created id=ses_fd27ff7a2ffelh8mjND5h6TyHQ slug=misty-sailor version=1.17.0 ... directory=/Users/davidandrews/PycharmProjects/lex
event connected
→ Window remained blank. User confirmed no TUI ever visible.
Raw PTY capture (no responder): process emits exactly the capability query block and then goes silent for minutes:
\x1b[>0q \x1bP+q4d73 \x1b[?1016$p \x1b[?2027$p \x1b[?2031$p \x1b[?1004$p \x1b[?2004$p \x1b[?2026$p \x1b]10;? \x1b]11;? \x1b]99;i=opentui-notifications:p=?; \x1b]1337;Capabilities \x1b]66;w=1;
284 bytes total (1.18.21), 274 bytes (1.16.2). Matches #32361 byte-for-byte.
Raw PTY capture (all queries answered: XTVERSION, XTGETTCAP, DECRQM ;2$y, OSC 10/11 color replies, DSR [6n): handshake completes, process then emits ~6.5 KB of cursor-positioning + full-width space rows — it actively paints empty frames and continues painting empty frames for 45+ s. Zero UI glyphs (OpenCode, Ask anything, BUILD never appear in the byte stream).
sample of hung process: ~100% of main-thread samples in kevent64 (event loop waiting, not spinning). JavaScriptCore worker threads present.
Ruled out:
- Project/global config content (repro with all configs moved away)
- Plugins (
--pure, plugin dirs emptied — including a third-party integration shim in~/.config/opencode/plugins/) - MCP servers (project config with 9 MCP servers removed)
- Terminal emulator (3 different environments incl. raw PTY where we answer everything ourselves)
- Autoupdate (
OPENCODE_DISABLE_AUTOUPDATE=1,"autoupdate": false) - Stale state (
~/.cache/opencode,~/.local/share/opencode,~/.opencodecleared) - Version regression window from #32361 — pinned 1.16.2/1.17.0, still fails here
Notable observation
The one render path that DID paint visible UI on this machine is opencode --mini (banner + input prompt rendered once in a multiplexer pane), though keyboard input did not attach there either.
Related
- #32361 (blank hang since v1.17.0, Ubuntu + macOS ARM64 reports)
- #41284 (blank freeze at startup, macOS Apple Silicon)
- #35494 (Debian blank freeze)
- #37803 ("render loop silently stalls")
- #24475 (tmux hang,
waitForThemeModeblocking)
Happy to run any instrumented build, capture more traces, or test patches.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.