Llux is a tool for independent creators.
It turns your interface ideas into native software that runs anywhere—without platform lock-in, hidden dependencies, or surprises.
You describe the intent. Llux compiles it to a binary. You own it.
Every interactive system—whether a smart-home dashboard, a CNC machine HMI, or a museum installation—follows the same pattern: Surface ↔ Transit ↔ Engine. Llux compiles the Surface and the Transit rules. You bring the Engine.
No platform lock-in. No hidden dependencies. No surprises.
Status: Pre-release documentation + pre-release early-to-mid alpha
Project: The public project name is Llux.
Targets: The first stabilisation target is a local compiler pipeline with the zero-dependency dump UI engine. Translators for SwiftUI, Qt/QML, HTML, React, and other UI systems are planned work, not yet shipped functionality.
Documentation: llux.org
| Path | Purpose |
|---|---|
guide.how/ |
Tutorials and task-oriented guides. |
reference.what/ |
Language, platform, ecosystem, and layout references. |
philosophy.why/ |
Working philosophy and human-centred design material. |
community.who/ |
Contributing, governance, and community process. |
roadmap.when/ |
Roadmap and project status. |
guide.how/quickstart.md.reference.what/language.md.roadmap.when/index.md.philosophy.why/index.md.community.who/contributing.md.LICENCE.md.As Llux is in early development, the present focus is on building the central technical supports needed for upcoming design matters.
The core toolchain currently exposes a llux CLI and a C-based compiler layout. Basic examples, keyword and localisation docs, and build scripts exist in the implementation workspace.
The active language direction is:
# Contract (app.llux)
app state {
count: int = 0
}
action Increment(amount: int = 1) {
app.count += amount
}
# Surface (app.llux.md)
::: page
::: flex gap-4
# Inbound: Label's @text pulls from app.count
::: Label { @text <- "Count: " + app.count }
# Sync: Slider's @value syncs with app.count
::: Slider { @value <-> app.count min=0 max=100 }
# Action: Button's @press pushes to app.increment
::: Button { @press -> app.increment label="+1" }
:::
:::
Key:
@ on the target (component property) = live and reactive<- = inbound stream (state → UI)<-> = bi‑directional sync (state ↔ UI)-> = outbound stream / action (UI → state)= = static configuration (not live)Llux should be of interest to:
The Llux implementation is intended to use the MIT licence. The website, specifications, research, and explanatory documentation use separate documentation terms so the authoritative language material remains clear and controlled. See LICENCE.md.