How anomalyco/opentui works
OpenTUI is a TypeScript terminal-UI framework backed by a Zig/native core, with React and Solid adapters and companion packages for key routing, QR codes, 3D graphics, and SSH-hosted sessions. The main workflow is to compose UI elements, handle terminal input, and render the result to a terminal; framework adapters mount into the core renderer. Package capabilities are taken from the README and tree, while some internal wiring is not shown in the sampled source, so those links are omitted.
Main entry points: renderer.ts Terminal renderer · solid/index.ts Solid adapter · renderables/index.ts UI renderables · QRCode.ts QR renderable
Components 21
Core terminal UI
- Core API
packages/core/src/index.ts - UI renderables
packages/core/src/renderables/index.ts - Terminal renderer
packages/core/src/renderer.ts - Zig bindings
packages/core/src/zig.ts - Runtime platform
packages/core/src/platform/runtime.ts
UI frameworks
- React adapter
packages/react/src/reconciler/renderer.ts - React app
packages/react/src/components/app.tsx - Solid adapter
packages/solid/index.ts - Solid reconciler
packages/solid/src/reconciler.ts
Input and commands
- Keymap runtime
packages/keymap/src/keymap.ts - Key dispatch
packages/keymap/src/services/dispatch.ts - Key events
packages/core/src/lib/KeyHandler.ts
Rendering extensions
- QR renderable
packages/qrcode/src/renderables/QRCode.ts - QR encoder
packages/qrcode/src/lib/qrcode.ts - Three renderer
packages/three/src/WGPURenderer.ts - Sprite resources
packages/three/src/SpriteResourceManager.ts
Remote sessions
- SSH server
packages/ssh/src/server.ts - SSH connection
packages/ssh/src/connection.ts - Session runtime
packages/ssh/src/run-session.ts
Other components
- UI developer
- Terminal
Connections 21
- UI developer → Core API: builds with
- UI developer → React app: composes UI
- UI developer → Solid adapter: composes UI
- Core API → UI renderables: provides
- UI renderables → Terminal renderer: renders through
- Terminal renderer → Zig bindings: calls bindings
- Zig bindings → Runtime platform: uses runtime
- Terminal renderer → Terminal: draws to
- React app → React adapter: reconciles with
- React adapter → Terminal renderer: mounts into
- Solid adapter → Solid reconciler: mounts through
- Solid adapter → Terminal renderer: attaches renderer
- Keymap runtime → Key dispatch: dispatches via
- Key events → Key dispatch: routes events
- QR renderable → QR encoder: encodes data
- QR renderable → UI renderables: provides renderable
- Three renderer → Sprite resources: manages sprites
- Three renderer → Terminal renderer: integrates with
- SSH server → SSH connection: creates handler
- SSH server → Session runtime: configures sessions
- Session runtime → Terminal renderer: mounts application