An engine-free fork of Chromium·macOS arm64·private preview

Distill the web into a native binary.

Blink stays for layout and paint. The browser, V8 and Node are gone; JavaScript is compiled ahead of time. An Electron app runs from its own source.

attar buildzsh
$ 
  → dist/balenaEtcher.app   73 MB · one process

$ 
  → dist/balenaEtcher.dmg   35 MB
29×
fewer idle threads
13 vs 383
5.1×
lighter on disk
73 vs 375 MiB
3.2×
less memory at idle
92 vs 294 MB, one process
2.3×
faster to the first window
0.47 vs 1.08 s
Benchmarks

Attar versus Electron, on the same app.

balena Etcher as Electron ships it, and balena Etcher as Attar builds it from the same source. Medians; lower is better.

.app on diskMiB
Attar73.3
Electron375.1
5.1×
Processes at idle
Attar1
Electron5
Threads at idle
Attar13
Electron383
29×
Launch to first windowmedian of 5, ms
Attar469
Electron1,081
2.3×
Memory at idlephysical footprint, all processes, MB
Attar91.8
Electron293.9
3.2×
CPU at idle% of one core
Attar2.06
Electron2.99
1.5×
apps
balena Etcher on Electron 37.2.4 and the same app compiled by Attar
machine
Apple M5 Max, macOS 27, one machine for both sides
method
5 launches timed to the first window through the Accessibility API; 3 idle samples of 60 s each; footprint and CPU summed over every process of the app
caveat
taken beside four concurrent builds (load 5 to 12), so a comparison, not a ceiling; on a quiet machine Attar reaches its first frame in 274 ms
What ships

What is inside the binary.

The same app, to one scale. Hover a part.

Electron375 MiB · 5 processes
Chromium · V8 · Node  165 MiB
locales · ICU · media  84
second Node (helper)  118
Tauri · Etcher UI shell10.8 MiB · 4 processes
WebView (WebKit), on the OS
Attar73 MiB · 1 process
64 MiB
not a WebView wrappernot a browsernot a JavaScript runtime
How it works

Own the giant. Carve away its bulk.

A real Chromium fork. Blink stays and runs your app; the browser around it does not ship.

Deleted from the binary
V8the browser processChrome UIruntime HTML parserextension hostNode.jsElectronCSS-in-JSa second DOM/style engine
Carved in from Blink
DOMCSS parserthe cascadelayoutpainthit testingevent dispatchStatic Hermes (AOT JS)

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

Feature support

Can I use it in Attar?

Explore support across Attar, Attar AOT and Attar Electron: HTML, CSS, JavaScript, React and desktop APIs. Each feature has a scope note and an assessment date.

353features across the Attar platformElectron 37.2.4 · Node 22.17.1 · reviewed 2026-09-13
Supported 27Partial support 134Not supported 180Not planned 12

Support applies to the scope in each feature’s note. Counts are not completion percentages or a certification of the current release.

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.

Proven on a real app

The same app on both stacks, verified equal.

balena Etcher, rebuilt by Attar from its own source, driven through the same user journeys as the Electron original.

flash from filesource URLsettingsvalid logomalformed logo
16 screens diffed pixel by pixel · largest remaining difference: one code value of red, a colour-space rounding
0divergences across every journey
Security by construction

A class of attacks that is simply absent.

No eval, no runtime HTML parser, no markup from the network. Not mitigated; missing from the file.

injectionRCEXSSevalprototype pollutionDOM clobberingsupply-chain runtime
0eval calls in the release
The input is ordinary web

Write the stack you already know.

React-shaped components, HTML and CSS, typed TSX. Or an existing Electron app, as is.

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: #1a1206;
}
.tally:active {
  transform: scale(.97);
}

Boundaries are explicit. What Attar can't prove in a closed world is a compile error that names the reason.

One of a line

Attar is the first product of Occam.

One method: keep the giant as the source of truth, move it out of runtime and into the build.

Chromiumthe web
shipping · attar
Postgresone engine
on the line
Kubernetesstate machines
on the line
Linuxone app
on the line
Status

Private preview.

No public install yet. Early access opens in small groups while the first product ships. Leave an address; we write once, when it is your turn.

today
balena Etcher, a native macOS app on Apple Silicon
next
Windows and Linux