A "No-DOM" GUI Runtime: SolidJS Logic driving Rust GPUI Rendering.
Alloy is an experimental attempt to break free from the Electron paradigm. instead of shipping a full browser, we run compiled SolidJS logic in a lightweight QuickJS container, communicating via a high-performance Binary Command Buffer to a native Rust rendering engine (GPUI).
The Result? A desktop app architecture that retains the DX of React/Solid but targets the performance profile of native Rust applications.
Alloy is designed with a 3-stage evolution path, moving from a hybrid experiment to a fully native platform.
Uint8Array; Rust flushes and renders.Create, Style, Layout).Alloy uses a Command Buffer Pattern inspired by game engines. The Frontend does not touch the OS; it simply queues instructions.
graph LR
subgraph "JS Realm (Logic)"
A[SolidJS Component] -->|Reactivity| B[Custom Renderer]
B -->|GenNode| C[Binary Encoder]
C -->|Uint8Array| D[Shared Buffer]
end
subgraph "Rust Realm (Engine)"
D -->|Flush| E[Command Parser]
E -->|Apply| F[Shadow DOM]
F -->|Render| G[GPUI Window]
end
Build the Frontend Shim
bash
cd frontend
npm install && npm run build
Compile & Run the Engine
bash
cd ..
cargo run --release
Communication happens via __alloy_flush(buffer).
Example Payload (Create a `
`):
[OpCode: 1] [ID: 1] [Len: 3] [Bytes: "div"]
div, button, text.flex-direction, gap, padding), Colors (#hex), Radius.onClick (dispatched from Rust back to JS).This is a Proof of Concept validating the SolidJS → Binary → Rust architecture, realized through AI-Accelerated Development ("Vibe Coding").
While the architectural vision is intentional, much of the implementation boilerplate was generated by LLMs. As a result, the project is fast-moving but rough around the edges—currently, only the Logic Pipeline is fully functional.
Interested in the future of GUI? We need human insight to refine the AI-generated boilerplate, understand GPUI internals, and expand the CSS subset. Feel free to open issues or PRs!
MIT
$ claude mcp add alloy \
-- python -m otcore.mcp_server <graph>