neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
A file describes what a page shows; the compiler turns it into a static site, a single-page app, a PDF or a slide deck, with accessibility and search built in.
Developer toolsC · RustGitHub @monzeromer-labOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
WebFluent is a readable syntax, makes coding accessible and enjoyable. (AI written, Human Directed)
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
One binary in, a website out. Write .wf, get HTML, CSS and JavaScript — no framework, no node_modules, no build config. The same source also compiles to PDF documents and slide decks.
That is the whole app — routing, reactivity, styling and the components included.
macOS and Linux — the binary for your platform, no Rust needed:
Windows: irm https://raw.githubusercontent.com/monzeromer-lab/WebFluent/master/install.ps1 | iex · With Rust (everywhere Rust runs, and the way to install on Linux arm64): cargo install webfluent · A .deb, .msi and tarballs are attached to each release.Read the full README ↗If you are an open-source contributor and find this project helpful and have experience writing docs, I need help writing the docs for the language, as it's currently pure AI generated.
One binary. Websites, PDFs and slide decks from one language. No Node, no framework, no build config — and no browser for your PDFs.
See it · Docs · Tutorial · Components · Guide source
WebFluent compiles .wf files to a website (HTML, CSS and a small JavaScript runtime), to PDF documents with real page layout, and to slide decks. The same file can be all three. The PDFs come from WebFluent's own layout engine — flexbox and grid, shaped text, Arabic and right-to-left, embedded font subsets — built into wf, a 10 MB download.
store Todos {
state items = []
action add(title: String) {
items = items.concat([{ id: uuid(), title: title, done: false }])
}
}
page Home(path: "/", title: "Todos") {
use Todos
state draft = ""
Container {
Heading("Todos").h1
Row(gap: .sm) {
Input(bind: draft, placeholder: "What needs doing?").text
Button("Add").primary { on click { Todos.add(draft) draft = "" } }
}
for todo in Todos.items by todo.id {
Card { Text(todo.title) }
}
}
}
app { Router }
That is the whole app — routing, reactivity, styling and the components included.
macOS and Linux — the binary for your platform, no Rust needed:
curl -sSL https://raw.githubusercontent.com/monzeromer-lab/WebFluent/master/install.sh | bash
Windows: irm https://raw.githubusercontent.com/monzeromer-lab/WebFluent/master/install.ps1 | iex, then type webfluent where these docs type wf (a bare wf is the Windows Firewall console) · With Rust (everywhere Rust runs, and the way to install on Linux arm64): cargo install webfluent · A .deb, .msi and tarballs are attached to each release.
wf --version
wf init my-app # -t spa (default) · static · pdf · slides
cd my-app
wf serve # http://localhost:3000, rebuilds on save
wf build writes the finished site to build/ — static files any host serves. Deploying has GitHub Pages, Netlify, Vercel, Cloudflare and nginx.
If the shell cannot find wf, open a new terminal — the installer adds its directory to your PATH in your shell's startup file. WF_INSTALL_DIR installs elsewhere, WF_VERSION pins a release.
fetch as a typed api, i18n with automatic RTL, animations, dark mode..wf template with your own data to HTML, a fragment or a PDF: Template::from_dir("templates")?.page("Invoice")?.render_pdf(&invoice) with any Serialize struct, or npm install webfluent. Untrusted data is escaped, and a URL that would run script is dropped..js file under src/ is linked as written, and .wf code calls its functions directly, checked against their JSDoc. Libraries load from a CDN through meta.scripts; any element can be handed to a script with mount: and cleanup:./// A person, at a glance.
component UserCard(_ name: String, role: String, active: Bool = true) {
Card.elevated {
Row(align: .center, gap: .md) {
Avatar(initials: "U").primary
Stack {
Text(name).bold
Text(role).muted
}
if active { Badge("Active").success }
}
}
}
UserCard("Monzer", role: "Developer")
A .flag sets a boolean prop or picks an enum case. A flag the component does not declare is a compile error, with the ones it does take listed.
resource users = fetch("/api/users")
match users {
loading { Spinner }
error(err) { Alert("Failed to load").danger }
ready(users) { for u in users by u.id { UserCard(u.name, role: u.role) } }
}
Describe a whole service once with api, and every call site is typed, cached, retried and cancellable.
Button("Save").primary.lg.rounded
Button("Custom") {
style {
background: $surface
padding: $xl
&:hover { background: $primary }
@md { padding: $lg }
}
}
$token is a design token, {expr} reads state. Any .css file under src/ is bundled too.
A .wf file writes blocks in braces; a .wfx file writes them by indentation. Same grammar, same output — wf fmt --to wfx switches a project either way.
page Home(path: "/", title: "Home")
state count = 0
Container
Heading("Welcome").h1
Button("+1").primary
on click
count = count + 1
page Deck(path: "/", title: "Q1 Review") {
Presentation {
TitleSlide("Q1 Review", subtitle: "March 2026")
Slide {
Heading("Highlights").h1
List { Text("Revenue grew 15%") Text("Expanded to 5 markets") }
}
SectionSlide("Q2 Plan").primary
}
}
Set "output_type": "slides" (or "pdf") and wf build writes the PDF, laid out by WebFluent's own paged engine — no browser, no external tool. Interactive components are rejected at compile time rather than silently dropped.
wf init <name> [-t spa|static|pdf|slides] Create a project
wf build [-d DIR] [--stats] [--cache] Compile; --stats prints what it weighs, --cache renders only what an edit changed
wf check [--format json|sarif|github] Every finding, nothing written; --deny-warnings for CI
wf explain [CODE] What a diagnostic means, and the fix
wf serve [-d DIR] Dev server with live reload
wf generate page|component|store <name> Scaffold a file
wf fmt [path] [--check] [--to wfx|wf] Format, or switch layout
wf test [path] [--update] Run the project's tests, in a browser when one acts
wf verify [path] [--json] [--budget MS] Visit every route in a headless browser (--returning-visitor: again, with storage)
wf docs [-d DIR] [-o OUT] Write a component gallery
wf render <tpl|dir> [--data f.json] [-f pdf] [--page P] Use WebFluent as a template engine
wf audit [path] [--json] What the project trusts
wf registry|types [--json] The registry, and what a project declares
wf migrate [path] [--check] [--wfx] Bring an older project up to date (WebFluent 2 onward)
just bench-pdf.wf source → Lexer → Parser → Type checker → Linters → Code generator → HTML + CSS + JS
→ Static HTML + CSS → Paged engine → PDF
The compiler is Rust. The generated JavaScript is a small signal-based runtime with no dependencies, and the build keeps only the parts a program reaches.
A PDF or a deck is the page, printed: the program is rendered to the static HTML and CSS a template renders, and the paged engine lays that out on paper — the cascade, block, flex and grid layout, pagination, then text and paint. It stands on excellent crates: taffy for flexbox and grid, rustybuzz for text shaping, ttf-parser and fontdb for fonts, unicode-bidi and unicode-linebreak for text direction and line breaking, usvg for SVG, and krilla — the PDF writer Typst's PDF export also uses — for the file itself.
WebFluent is AI-written and human-directed: the language, its design and every decision are mine; most of the code is written with AI under that direction. What keeps it honest is checked, not promised — every code block in the guide is parsed, type-checked and compiled by the test suite, CI builds every wf init template and the documentation site, and each release is gated on it.
5.x is the stable line. From the first launch video until four weeks after it, releases are patch-only and batched at most weekly — no syntax changes and no breaking changes — so the code in the videos keeps compiling on the latest release.
To build the compiler from a clone — for an unreleased change, or to work on it:
git clone https://github.com/monzeromer-lab/WebFluent.git
cd WebFluent && cargo install --path .
Contributions welcome — see the spec for what the language promises.
MPL-2.0. Changes to WebFluent's own files stay open; using it in a closed product is fine.
The sites, PDFs and slide decks you build with WebFluent are yours, under any license you choose. The runtime WebFluent writes into a site is MPL-2.0, which lets it ship inside closed code.