Browser as compiler, not runtime macOS arm64 · preview

Distill the web into a native binary.

Attar runs your HTML, CSS and typed TSX through real Chromium at build time, then throws Chromium away. What ships is one small native binary holding only what your app needs.

no browser  ·  no JS engine  ·  no runtime parsers

Private preview · public release coming
attar buildzsh
$ attar build ./app

  reading graph        ok  47 nodes
  chromium (pinned)    ok  web ir captured
  dropping universal   ok  dom · cascade · parsers
  carving runtime      ok  layout · paint · input
  linking              ok
  → ./dist/app
    16 MB · macos arm64 · 0 runtime parsers
16MB
release binary for a real app
0
parsers, eval or V8 in the output
100%
of the declared WPT baseline
43ms
launch overhead to full paint
Benchmarks

The same app, three ways.

Representative desktop app on macOS arm64. Shorter is better.

Release binary — MB
Attar16 MB
Tauri9.6 MB
Electron276 MB
Idle memory — MB
Attar28 MB
Tauri172 MB
Electron375 MB
Launch overhead to full paint — ms
Attar43 ms
Tauri167 ms
Electron162 ms
0 V80 runtime parsersclosed-world attack surface
How it works

Use the giant, then leave it behind.

Chromium holds decades of correct answers about how the web looks and behaves. Attar treats that as a compile-time judge and donor, never as freight in your binary.

Attar deletes most of a browser at build time.
Deleted from the binary
HTML parserCSS parserDOMCSSOMthe cascadestyle resolverselector matchingreconcilervirtual DOMV8JITgarbage collectorevent loopextension host
Carved in
text layoutpaintscrollinputstate bindings
01 read the graph 02 ask real Chromium 03 drop the universal 04 carve, don't rewrite

Anything the oracle cannot prove is a build error, not a silent guess.

What we sell is provability

Not a smaller binary. A binary you can reason about.

Size and speed are consequences. The product is knowing exactly what remains, why, and what it cannot do.

Conformance

Parity is proven, not argued.

Attar classifies the pinned WPT manifest and runs reftest, testharness and crashtest against the generated app, compared with real Chromium. The declared baseline passes in full, or the build fails.

100% pass
Security by construction

A class of attacks that is simply absent.

No eval, no runtime parser, no markup from the network. These aren't mitigated — they're missing from the file:

injectionRCEXSSevalprototype pollutionDOM clobberingsupply-chain runtime
0 runtime parsers
The input is ordinary web

Write the stack you already know.

React-shaped components, standard HTML and CSS, typed TSX. One command turns them into a native app.

App.tsxtyped TSX
export function Counter() {
  const [n, setN] = useState(0)
  return (
    <button class="tally" onClick={() => setN(n + 1)}>
      pressed {n} times
    </button>
  )
}
styles.cssplain CSS
.tally {
  font: 600 15px/1 system-ui;
  padding: 10px 16px;
  border-radius: 8px;
  background: #ffb23e;
  color: #160f02;
}
.tally:active {
  transform: scale(.97);
}

Boundaries are explicit. What Attar can't prove in a closed world is a compile error, documented in LANGUAGE.md and UNIMPLEMENTED.md.

One of a line

Attar is the first product of Occam.

One method: compiling away the unnecessary. Keep the giant as the source of truth, but move it out of runtime and into the build. Every other giant is a residual program waiting to happen.

Chromium the web
shipping · attar
Postgres one engine
on the line
Kubernetes state machines
on the line
Linux one app
on the line

Your compiled apps are yours.

Attar's license restricts one thing: reselling the compiler as a hosted service. It never touches what you build with it. Ship and sell your binaries with no strings, no royalties, no runtime license.

Status

Not yet, but soon.

Attar is in private preview. There is no public install yet — the compiler, its docs and source open when the first product is ready.

Today: standalone macOS arm64 (core-v0). Next: full HTML/CSS, then Windows and Linux.