Most AI coding workflows still run inside narrow text boxes or raw terminal streams piped over standard output. When an autonomous coding agent attempts to refactor complex modules or analyze multi-file architectural changes, text streams fail fast. Engineers end up context-switching between chat windows, terminal outputs, and their local editor trying to piece together what changed. A distinct architecture is taking shape in desktop agent runtimes. Projects like Whiteboard illustrate what happens when you combine native Language Server Protocol (LSP) intelligence, high-performance local Rust tools, and interactive canvas drawing primitives directly inside a cross-platform desktop application on macOS, Windows, and Linux.
Monorepo Architecture and Local Rust Toolchains
Examining the underlying repository structure reveals how modern desktop runtimes manage execution speed and structural complexity. Built around a pnpm-workspace.yaml monorepo layout, the application separates client presentation from heavy local analysis. Core application packages sit alongside specialized tools, such as apps/review-desktop, tools/oxlint, and Rust crates like diffr. The main desktop shell handles windowing across platforms, with macOS installation streamlined via brew install --cask devdotfast/tap/whiteboard. When managing pull requests or reviewing branch differences against main, traditional text diffs generate immense noise due to trivial whitespace changes, import order swaps, or formatting updates. Whiteboard offloads diff computation to diffr, a dedicated AST-aware semantic diff viewer compiled in Rust. By comparing code modifications at the structural syntax tree level, diffr filters out trivial changes so engineers focus only on actual logic mutations. Complementing this is oxlint, integrated directly into the workspace build toolchain using configuration files like .oxlintrc.json and .oxfmtrc.json. Running native Rust linters locally avoids the latency penalty of heavy JavaScript tooling, keeping lint loops sub-millisecond even during aggressive multi-file refactoring runs initiated by an agent.
LSP Protocol Embedding and AST Context
Standard webview wrappers and terminal streams treat code as flat text blocks. When a developer prompts an AI agent in a command-line wrapper, the agent must parse raw text streams and guess file boundaries without structural awareness. Embedding VSCode Language Server Protocol (LSP) components directly inside the local desktop process changes this interaction model completely. The desktop application gains native code navigation, hover tooltips, and standard editor keybindings out of the box. More importantly, the local agent runtime gains direct access to the LSP symbol database. When an agent needs to trace a function call across dozens of modules, it does not execute fragile regex searches across file trees. Instead, it queries the language server to retrieve exact definition locations, interface contracts, and call hierarchy graphs. This semantic context prevents hallucinated paths and ensures that code modifications respect project type safety before any file hits disk.
Agent SDK and Two-Way Visual Canvas Primitives
Moving beyond text buffers requires an interface engineered specifically for interactive software design. Whiteboard embeds an in-app visual canvas where human developers and AI agents collaborate visually in a shared workspace. Through an open agent SDK, tools like Claude Code and Codex can draw directly onto the canvas while making changes. Rather than emitting long markdown lists, the agent constructs sequence diagrams, entity relationship (ER) diagrams, and visual execution trace quotes. To see how these visual primitives operate alongside source code, you can watch the 1-minute Whiteboard demo on YouTube. The crucial difference between static architectural tools and Whiteboard is two-way contextual binding. Every box in an ER diagram, every arrow in a sequence diagram, and every quoted snippet from an agent’s execution trace links back to the underlying source code. Clicking a diagram element instantly navigates the editor pane to the corresponding line in the repository. Furthermore, human feedback is streamlined through clipboard context sharing. If an agent produces a sequence diagram that misses an edge case, you highlight the visualization, copy it to your clipboard, and instruct the agent to redraw it with modified constraints.
Executing complex visual and structural tasks places severe demands on LLM reasoning capabilities. Whiteboard guidelines note that the runtime operates best when paired with frontier intelligence models such as Claude Opus 5.5 and GPT-6 Sol, balancing speed, operational cost, and reasoning accuracy. Smaller or lower-tier models frequently struggle to construct valid multi-step drawing primitives while maintaining consistent AST mappings. When lower-tier models attempt canvas rendering, they often produce broken visual nodes or incorrect symbol references, undermining the utility of the visual interface. Choosing the right backing model is thus an operational requirement for keeping the local agent canvas synchronized with source code.
Practical Workflows: Telemetry Audits and API Refactoring
The value of embedding LSPs and native toolchains becomes clear in complex development tasks. Consider a telemetry tracking audit across a large application. Inspecting changes like this PostHog telemetry commit demonstrates how an agent uses the canvas to decompose complex diffs. The agent scans telemetry hook implementations, parses tracked event parameters, and generates product waterfall diagrams directly on the canvas. It maps out error boundaries and identifies how the system handles hangs, uncaught errors, and crash scenarios across execution paths. For API refactoring, the agent follows structured workflows guided by system prompts and local repository directives like .claude/skills and CLAUDE.md. Before writing implementation code, the agent draws the proposed API contract, illustrates clear usage examples, and surfaces architectural motivations extracted from git history and context files. Human developers review the visual spec on the canvas, approve or tweak the design, and let the agent proceed with AST-verified code generation.
Platform Tradeoffs and Engineering Realities
Building local desktop agent runtimes introduces significant platform engineering challenges that teams must carefully evaluate. Running background Language Server instances, high-speed Rust binaries like diffr and oxlint, and an electron-based desktop application on developer workstations creates heavy CPU and memory overhead. Process isolation and inter-process communication (IPC) management become top priorities. If an LSP binary hangs during a large repository re-indexing process, or if an AST diff engine encounters memory exhaustion during a massive git branch merge, the desktop interface can freeze. Furthermore, maintaining synchronized two-way state between rapidly changing git branches, ephemeral visual canvas elements, and the local file system demands aggressive caching and state management. Platform engineers constructing these local environments cannot focus solely on LLM prompt engineering. They must build resilient process orchestration layers, sub-millisecond IPC channels, and robust error recovery mechanisms to keep local desktop agent runtimes stable under heavy concurrent execution.
Further Reading
- Whiteboard GitHub Repository
- Whiteboard 1-Minute Demo Video
- PostHog Telemetry Commit Example