brew install occam-tech/attar/attar
attar init my-app --template tsx
attar build my-app
macOS 15 or newer on Apple silicon, with Xcode Command Line
Tools. Builds a signed .app.
Build desktop apps with React, TypeScript and CSS.
Attar turns your JavaScript into native code before the app runs. It keeps Chrome’s rendering engine for the interface.
Build your first app Early access · Start on macOS / Apple siliconCheck your libraries and APIs ↗Your code and supported dependencies compile together. The linker keeps the engine code they need.
The result opens in its own native window. Blink, Chrome’s rendering engine, draws your HTML and CSS.
The app runs compiled code, with no Electron or Node.js runtime.
The aim: keep familiar web development while reducing the runtime your users need to download and run.
The SDK already compiles stateful React interfaces, generated stylesheets and selected UI components. Each link below shows the supported APIs and their limits.
Functions, classes, closures, modules and async code, compiled before the app runs. Executable dependencies resolve at build time.
JS · TS · TSXComponents, hooks, refs, controlled inputs and keyed updates. React updates the interface through a native host connected to Blink.
React 19Static stylesheets, compiled Tailwind utilities, React style values, bundled fonts and SVG. Blink provides layout and paint.
CSS · Tailwind 4The packaged macOS gallery passes 61 component scenarios from the pinned Radix / New York v4 set.
Radix · shadcn/uiA C ABI connects the UI engine to native programs. Explore the Rust and C host adapters and their client-SDK requirements.
C ABI · RustSupport is scoped to the listed APIs and component variants. The compatibility guide distinguishes working subsets, unavailable features and unverified behavior. React is the current framework adapter; more frameworks will follow.
We compared the Etcher USB-flashing app on Electron with an Attar research build on the same Mac. That build came from our experimental Electron compatibility work. Attar Electron is planned and is outside this SDK release.
| Measurement | Electron | Attar |
|---|---|---|
| Application on disk MiB | 375.1 | 73.3 |
| Memory at idle MB, all processes | 293.9 | 91.8 |
| First window ms, median of 5 launches | 1,081 | 469 |
| Processes at idle | 5 | 1 |
| Threads at idle | 383 | 13 |
| CPU at idle % of one core | 2.99 | 2.06 |
Etcher built by Attar was driven through the same five recorded journeys as the Electron original: file selection, source URL, settings, valid logos and malformed logos.
Sixteen screen comparisons recorded a remaining red-channel rounding difference of one code value. These checks cover those journeys; they do not establish complete Electron compatibility.
These earlier research results describe one app and one machine. Read the roadmap ↗
Attar compiles React’s rendering logic together with your application. A native host connects React’s updates to Blink, the same engine that gives Chrome its HTML and CSS behavior.
That is how familiar components and styles can become a desktop interface. The compiled JavaScript runtime still handles objects and memory; the UI engine still handles layout, text and input.
We are two cofounders working with AI across the compiler, engine and native tooling. Explore the work behind the SDK, or read how its C interface connects to Rust and other native code.
The current SDK builds standalone apps. Attar Electron, the planned Electron and Node API compatibility layer, is a separate project and is not included. The Etcher measurements above come from that research work. Read the roadmap.
Your JavaScript is compiled into native code before the app starts. HTML and CSS render through Blink in a native window. The interface keeps web rendering behavior; it is not converted into AppKit or Windows widgets. JavaScript runtime services, including memory management, still exist. How the engine works.
It depends on the libraries and APIs they use. React 19, static CSS, compiled Tailwind utilities and selected shadcn components have a supported scope. Executable dependencies must be known at build time; runtime code loading and eval are unsupported.
The standalone SDK also lacks some common browser APIs, including networking, storage and the Clipboard API. Check compatibility before planning a port.
Check libraries and APIs ↗Use macOS 15 or newer on Apple silicon for the standalone React workflow. Linux x86_64 compiler packages are available, but equivalent React and shadcn coverage is not verified. This release has no supported Windows package. See the release scope.
No. You can use the SDK directly. When you do write code with an agent, we recommend our published Attar skill for project setup, supported APIs and build instructions. The compiled application does not require an AI service.
Early access / SDK
Install the SDK, create the included TSX starter and build it. Start on macOS for the standalone React workflow. Source examples show the project files and where to find the built application.
Recommended / Agent workflow
We recommend installing the Attar skill first. It provides the project layout, accepted APIs, compiler diagnostics and the build-and-verify loop for a standalone app.
Read the skill and install it ↗npx skills add occam-tech/attar-skills
Published as attar-demo. Includes a starting
project.
View the repository ↗
brew install occam-tech/attar/attar
attar init my-app --template tsx
attar build my-app
macOS 15 or newer on Apple silicon, with Xcode Command Line
Tools. Builds a signed .app.
curl -fsSL https://attar.dev/install.sh -o install.sh
sh install.sh
export PATH="$HOME/.local/bin:$PATH"
attar init my-app --template tsx
attar build my-app
glibc 2.39 or newer, with Python 3.11, gpg and binutils. Ubuntu and Debian can use the signed apt repository instead. The standalone React / shadcn path is not yet verified on Linux. Check Linux scope.
Every package is signed. The installer pins the release key and checks the archive against the signed index. Releases and checksums ↗
Leave your email. We’ll send one message when the next release is ready.