Skip to content

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)

  • Lifecycleapp.init/update/drop with 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 captureglReadPixels + PNG output for frame capture. See Render Capture
  • CLI tools — Remote control client, MCP remote server, torrent download/upload