Subsystems
Space is organized into these major subsystems. Detailed subsystem pages: Rendering, Input, Audio, Networking, Build, Process, Cross Platform.
See Concepts for the VitePress concept docs, and Dev Notes for detailed architecture notes.
Engine (C++)
- Rendering — OpenGL-based renderer, batched triangles/quads, model transforms, clips, FXAA. SSBO-backed instanced quad pipeline for UI. See Rendering
- Physics — Bullet integration for rigid-body and world simulation
- Audio — OpenAL/PortAudio-based positional audio with microphone input. See Audio
- Audio Analysis — aubio bindings: FFT, pitch/onset/tempo/notes detection, MFCC, spectral descriptors, phase vocoder, wavetable synthesis. See Audio
- Graph — Exposure layer for app state, knowledge objects, and linked views. See Graph Identity and Graph Llm
- Video — FFmpeg-based in-world video playback with A/V sync telemetry. See Video Playback
- Browser — CEF-based embedded browser surfaces rendered onto 3D geometry
- Terminal — PTY-based terminal widget via libvterm
- Search — Xapian full-text search
- Wallet — wallet-core based crypto wallet
- Torrent — libtorrent binding for asset distribution
- Matrix — Matrix bridge foundation for federation/chat
- Realtime Networking — yojimbo-based client/server with feature protocol, auth ticketing, reliable/unreliable messaging. See Networking
- HTTP — Multi-threaded libcurl HTTP client and embedded HTTP server
- Color Science — Comprehensive color library: 15+ color spaces, Delta-E (1976/1994/2000/CMC), CIECAM02, CVD simulation. See Cross Platform
- Force Layout — Physics-based graph layout algorithm (spring/repulsion, pinning, stabilization). See Force Layout Barnes Hut
- Job System — Thread pool for async work (texture/audio loading, glTF parsing). See Process
- Keyring & System Tools — OS credential storage, system tray, desktop notifications, process management, shell execution, sysinfo. See Process
- File Watch — efsw-based filesystem change notifications for live reload
- Tree-Sitter — Incremental syntax parsing for code analysis
- GCC JIT — libgccjit bindings for runtime C code generation and compilation. See Build
- MSDF Atlas — Multi-channel signed distance field generation for high-quality font rendering
- Dial Input — Gamepad analog-stick dial input for text entry on controllers
Widget System (Fennel)
- Layout — Constraint-based layout engine (flex, stack, grid, padding, sized, aligned, positioned, radial). See Layout Widget Engine
- Primitives — Rectangle, text span, image, button, input, combo box, label, icon, disclosure row, scroll area, tab view, list view
- Composition — Higher-order widgets composed from primitives (cards, containers, status badges, search views)
- Raw renderers — Rectangle, gradient triangle, image, polyhedron, sphere primitives
- Canvas — Virtual canvas for in-world panels and retained activity slots
- Graph views — View layer for graph nodes, decoupled from node state. See Graph View As Widget
- Drawing — Vector drawing with stylus/pressure input, history/undo, raster layer. See Stylus Drawing Input, Drawing Architecture
- Board — Structured board activity with connectors, selection, resizable items. See Activities Architecture; legacy notes: Board Canvas Mode
- Terrain — Heightfield terrain with physics, painting, selection tools. See Terrain Heightfield System
- HUD — Heads-up display with control panel, status panel, command hints, panel persistence
- Theming — Dark/light theme system with widget-level utilities. See Light Theme Layering
Application Model (Fennel)
- Lifecycle —
app.init/update/dropwith signal-driven events. See Lifecycle Invariants - Signals — Event system for decoupled communication across all subsystems
- Reloadable units — Hot-reload architecture with load/unload/snapshot/restore and efsw file watching. See Hot Reload Units, Reloadable Units
- Remote control — ZeroMQ-based live debugging with async result polling.
- State management — Composable state machines with route wrappers, enter/leave hooks, and pluggable input-state handlers (focus, hover, camera, gamepad, touch, pen)
- Fennel caching — Compiled Fennel → Lua bytecode cache for fast startup. See Fennel Cache
Application Features (Fennel)
- LLM & Conversations — JSON-persisted conversation store with OpenAI/Opencode/Codex/ZAI providers. See Agent Layer Design, Graph Llm
- Agent System — Autonomous agent runner with sessions, turns, tool execution, approval gating, and MCP synchronization. See Agent Runner System, Agent Presets
- MCP Server — Model Context Protocol server (JSON-RPC 2.0, tool registry, HTTP transport) for exposing tools to external AI clients. See Remote Mcp
- Kernel System — Interactive computational kernel manager: Fennel REPL, shell execution, stdin/stdout, ZeroMQ communication. See Kernels
- Entity Store — Persistence layer for string, code, link, list, and identity entities with CRUD, search, and signals
- Repository Workbench — Git repo management: clone, branch, commit, diff, workspace operations. See Repository Workbench
- Wallet — Crypto wallet with mnemonic generation, signing, Arbitrum Nova transfers, encrypted persistence
- Node Morphing — Graph node type conversion system (e.g., string-entity → code-entity). See Morphs
- Ripgrep — Programmatic ripgrep integration for file search with result parsing. See Ripgrep
- SQL Builder — 1300+ line SQL query builder. See SQL Builder
- External Editor — Launch external editor with content, wait for result
- Fennel Interpreter — Interactive Fennel REPL UI widget
- Launchables — Applet system: discoverable Fennel modules providing name + run entry points
- QR Code — QR code generation and rendering
- XDG Icons — Icon theming integration
- System Cursors — OS cursor management
- Volume Control — Audio volume and device management
- Tetris — Tetris mini-game as a launchable
Tooling
- Development tooling — Profiling, testing, render capture, remote control, and CLI tools. See Development Tooling
- Tests — CTest for C++, Fennel test harness for 170+ unit tests and 55 E2E snapshot tests. See Concepts
- Profiling — Flamegraph profilers with stack sampling and frame profiling. See Prof Graph Layout, Prof Scroll, Prof Terminal
- E2E snapshots — Visual regression testing with golden PNG images
- Render capture —
glReadPixels+ PNG output for frame capture. See Render Capture - CLI tools — Remote control client, MCP remote server, torrent download/upload
