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

Open
#44,337 3 comments 0 reactions 1 assignee View on GitHub

@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:

  1. 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.
  2. Renderer paints nothing regardless: even when the backend boots fully (initcreated sessionevent connected in 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, ~/.opencode cleared)
  • 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, waitForThemeMode blocking)

Happy to run any instrumented build, capture more traces, or test patches.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.