Skip to content
@elixir-crab

Elixir Crab

Native UI and Rust tooling for Elixir

Elixir Crab 🦀

Native UI and Rust tooling for Elixir.

Elixir Crab builds tools for native software that keeps application behavior, state, supervision, and public contracts in Elixir while using Rust for bounded platform mechanics and performance-sensitive work.

Start here

Project What it does Hex
gpui Declarative native desktop UI for Elixir/OTP, with GPUI windows, HEEx-style views, native controls, testing, and remote displays Hex
rustq Typed Rust and Rustler code generation from Elixir, including quasiquoting, ASTs, and generated NIF boundaries Hex

How it fits together

Elixir application
├── gpui                    — declarative applications, sessions, snapshots, and UI
│   ├── gpui_components     — conventional controls backed by gpui-component
│   └── gpui_native         — statically composed vanilla and component native hosts
└── rustq                   — generated Rust, Rustler boundaries, codecs, and native glue

GPUI

GPUI keeps authoritative application state, window topology, UI composition, events, and accessibility policy in Elixir. Rust owns the native event loop, rendering, focus, text shaping, IME, measurement, and platform windows. The same application can use native, deterministic test, or remote displays.

The project is distributed as three coordinated packages:

  • gpui provides renderer-independent application, UI, text, resource, remote, and testing contracts.
  • gpui_components provides conventional declarative controls rendered by gpui-component.
  • gpui_native provides complete RustlerPrecompiled vanilla and component hosts while retaining source-build fallback.

RustQ

RustQ turns typed, Elixir-shaped code into readable Rust. It can derive Rust signatures, codecs, Rustler entrypoints, Elixir stubs, Cargo projects, and complete NIF boundaries from ordinary Elixir modules and typespecs.

RustQ scales from zero-handwritten-Rust NIFs to schema-driven native libraries that retain substantial handwritten Rust for domain and platform mechanics.

Why this exists

Native Elixir software should be able to retain OTP ownership without maintaining repetitive boundary code or moving application policy into Rust. Elixir Crab projects make the boundary typed, inspectable, generated where appropriate, and narrow enough that each runtime does the work it is best at.

Popular repositories Loading

  1. rustq rustq Public

    Typed Rust and Rustler code generation from Elixir — quasiquoting, ASTs, and zero-handwritten-Rust NIF boundaries

    Elixir 19 1

  2. gpui gpui Public

    Declarative native desktop UI for Elixir/OTP — GPUI windows, HEEx-style views, native controls, testing, and remote displays

    Elixir 5

  3. .github .github Public

    Organization profile for Elixir Crab

Repositories

Showing 3 of 3 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…