Description
Running kilo on versions 7.2.1 → 7.2.4 crashes immediately on startup with Error: No renderer found, preceded by the warning You appear to have multiple instances of Solid. Reproduces on both the npm-published @kilocode/cli and the standalone Bun-bundled binaries from GitHub releases. 7.2.0 is the last working version.
You appear to have multiple instances of Solid. This can lead to unexpected behavior.
Error: No renderer found
at useRenderer (/$bunfs/root/src/index.js:422054:20)
at useTerminalDimensions (/$bunfs/root/src/index.js:422066:31)
at ErrorComponent (/$bunfs/root/src/index.js:473479:37)
at untrack (/$bunfs/root/src/index.js:420524:15)
...
at setStore (/$bunfs/root/src/index.js:425996:10)
at <anonymous> (/$bunfs/root/src/index.js:436578:21)
at processTicksAndRejections (native:7:39)
Kilo version
7.2.1, 7.2.2, 7.2.3, 7.2.4 (all broken). 7.2.0 works.
Steps to reproduce
npm i -g @kilocode/cli@7.2.4 (or download a 7.2.1+ standalone binary from Releases)
- Run
kilo
- Observe the crash above
Operating System
Reproduced on:
- macOS 26 (arm64)
- Ubuntu Linux (glibc, three different VMs)
Terminal
iTerm2 / default Linux terminal — independent of terminal.
Root cause
The bundled CLI ships two copies of solid-js and two copies of @opentui/solid. Each duplicated copy creates its own RendererContext token via createContext(), so the context provided by render() (using one copy) is invisible to useRenderer() calls that resolve to the other copy. The unrelated stack frames (untrack vs untrack2, devComponent vs devComponent2, the 2-suffixed solid internals) are the bundler's disambiguation of the duplicated code.
Two distinct duplications:
solid-js — @opentui/solid@0.1.87 declares an exact "solid-js": "1.9.9" dep, so Bun installed a nested solid-js@1.9.11 inside node_modules/@opentui/solid/node_modules/, while the rest of the workspace used the catalog solid-js@1.9.12 at the top level. Both got bundled.
@opentui/{core,solid} — packages/kilo-gateway pins dev/peer versions of @opentui/{core,solid} to 0.1.75, while packages/opencode uses 0.1.87. Once packages/kilo-gateway/tui was imported by opencode in 7.2.1, both @opentui/solid versions ended up bundled side-by-side, each with its own RendererContext.
A reactive setStore early in boot triggers a cascade that crosses the copy boundary and throws — then the ErrorBoundary fallback (which itself uses useTerminalDimensions()) double-faults on the same broken context, hiding the original throw site.
Suggested fix
- Add
"solid-js": "catalog:" to root overrides so the nested solid-js collapses to the top-level copy.
- Bump
packages/kilo-gateway's @opentui/{core,solid} from 0.1.75 to 0.1.87 so kilo-gateway and opencode resolve to the same @opentui/solid instance.
PR with both fixes incoming.
Description
Running
kiloon versions 7.2.1 → 7.2.4 crashes immediately on startup withError: No renderer found, preceded by the warningYou appear to have multiple instances of Solid.Reproduces on both the npm-published@kilocode/cliand the standalone Bun-bundled binaries from GitHub releases. 7.2.0 is the last working version.Kilo version
7.2.1, 7.2.2, 7.2.3, 7.2.4 (all broken). 7.2.0 works.
Steps to reproduce
npm i -g @kilocode/cli@7.2.4(or download a 7.2.1+ standalone binary from Releases)kiloOperating System
Reproduced on:
Terminal
iTerm2 / default Linux terminal — independent of terminal.
Root cause
The bundled CLI ships two copies of
solid-jsand two copies of@opentui/solid. Each duplicated copy creates its ownRendererContexttoken viacreateContext(), so the context provided byrender()(using one copy) is invisible touseRenderer()calls that resolve to the other copy. The unrelated stack frames (untrackvsuntrack2,devComponentvsdevComponent2, the2-suffixed solid internals) are the bundler's disambiguation of the duplicated code.Two distinct duplications:
solid-js—@opentui/solid@0.1.87declares an exact"solid-js": "1.9.9"dep, so Bun installed a nestedsolid-js@1.9.11insidenode_modules/@opentui/solid/node_modules/, while the rest of the workspace used the catalogsolid-js@1.9.12at the top level. Both got bundled.@opentui/{core,solid}—packages/kilo-gatewaypins dev/peer versions of@opentui/{core,solid}to0.1.75, whilepackages/opencodeuses0.1.87. Oncepackages/kilo-gateway/tuiwas imported by opencode in 7.2.1, both@opentui/solidversions ended up bundled side-by-side, each with its ownRendererContext.A reactive
setStoreearly in boot triggers a cascade that crosses the copy boundary and throws — then theErrorBoundaryfallback (which itself usesuseTerminalDimensions()) double-faults on the same broken context, hiding the original throw site.Suggested fix
"solid-js": "catalog:"to rootoverridesso the nestedsolid-jscollapses to the top-level copy.packages/kilo-gateway's@opentui/{core,solid}from0.1.75to0.1.87so kilo-gateway and opencode resolve to the same@opentui/solidinstance.PR with both fixes incoming.