electrobun README

The project's README from github.com/blackboardsh/electrobun. As one markdown file: README.md.

Logo

Electrobun

Get started with a template
hutch electrobun init

What is Electrobun?

Electrobun aims to be a complete solution-in-a-box for building, updating, and shipping fast, compact, cross-platform desktop applications written in TypeScript. Hutch is the native build and workspace CLI. Cottontail is Electrobun's JSC-based default JavaScript runtime. Electrobun's platform layer combines Zig, Objective-C, and C++.

Visit https://framework.blackboard.sh/electrobun/ to see api documentation, guides, and more.

Install Hutch globally, then use it to create and build a project. Published templates include the exact Electrobun release they were tested with. In a hand-written project that pin is optional; without one, Hutch uses an npm-supplied paired default or floats on the active release channel. Hutch verifies and installs the resolved release's platform archive under ~/.hutch/releases/electrobun and copies its SDKs into the project's generated .hutch/devkit sysroot:

curl -fsSL https://hutch.blackboard.sh/hutch/install.sh | sh
hutch electrobun init

Initialization requires network access to fetch the current template catalog and selected template. Later builds can reuse exact releases and managed toolchains that are already installed.

Or bootstrap the same interactive initializer from npm or Bun. The single, dependency-free npm package downloads the exact paired Hutch archive from that version's Electrobun GitHub Release when needed, verifies and caches it, and forwards the command. The initializer also ensures a compatible global launcher for the generated project's hutch tasks. It does not carry or own the Electrobun runtime or SDKs:

npx electrobun init
# or
bunx electrobun init

Hutch's built-in npm-compatible resolver installs JavaScript dependencies by default and writes hutch.lock; hutch pm exec runs project-local package binaries. A project's hutch.config.ts may instead select npm, Bun, pnpm, Yarn, or a custom executable, and Hutch delegates package operations to that explicit choice. Package management is independent of whether the app's main process runs on Cottontail or Bun.

Don't miss our:

Project Goals

Apps Built with Electrobun

Video Demos

Audio TTS Demo

Co(lab) Demo

DOOM Demo

Star History

Electrobun star history four weeks after the v1 launch
star history 4 weeks after v1 launch

Contributing

Electrobun is one piece of a vision I'm building. I'm optimizing for focus and execution. Issues and PRs can be used to share ideas, but there should be no expectation that I will review, respond to, or merge them.

Ways to get involved:

Development Setup

Building apps with Electrobun is as easy as installing Hutch and running hutch electrobun init.

This section is for building Electrobun from source locally in order to contribute fixes to it.

Prerequisites

Install Hutch globally before building Electrobun:

curl -fsSL https://hutch.blackboard.sh/hutch/install.sh | sh

On Windows PowerShell:

& ([scriptblock]::Create((irm https://hutch.blackboard.sh/hutch/install.ps1)))

macOS:

Windows:

Linux:

On Ubuntu/Debian based distros: sudo apt install build-essential cmake pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev libpipewire-0.3-dev librsvg2-dev

Linux applications also require the corresponding GTK 3, WebKitGTK 4.1, Ayatana AppIndicator, and librsvg runtime packages on end-user systems. See the cross-platform development guide for distro-specific install commands. The launcher reports the exact missing shared library when these dependencies are unavailable. Wayland screen-region capture additionally requires a working desktop portal, PipeWire, and the libpipewire-0.3.so.0 runtime library (provided by libpipewire-0.3-0, or libpipewire-0.3-0t64 on newer Ubuntu/Debian releases).

First-time Setup

git clone --recurse-submodules https://github.com/blackboardsh/electrobun.git
cd electrobun/package
npm ci
hutch dev:clean

Development Workflow

# All commands are run from the /package directory
cd electrobun/package

# After making changes to source code
hutch dev

# Exercise one repository template against the same local package/dist
hutch dev:template hello-world

# If you need a completely fresh start
hutch dev:clean

hutch dev builds package/dist and runs Kitchen against that local Electrobun devkit. Running hutch dev directly from kitchen/ continues to use the Electrobun version pinned in kitchen/hutch.config.ts.

hutch dev:template <template-name> builds the same local devkit, runs the template's configured dependency installation, and starts its dev task against those local bytes. Repository templates stay unpinned for this workflow; the release publisher injects the shipped Electrobun version into each staged template archive.

The native build generates package/src/native/compile_flags.txt from the compiler flags resolved for the current machine. clangd-compatible editors discover it automatically; rerun the build after changing native dependencies or system toolchains.

With sibling jsc, cottontail, dash-cloud, and electrobun checkouts, use --local to additionally build and select the local JSC, Cottontail, and Hutch layers:

hutch dev --local

The first Hutch is globally installed. Stack preparation explicitly selects the completed local Hutch engine and Cottontail build for the remainder of the command.

Additional Commands

All commands are run from the /package directory:

Debugging

macOS: Use lldb <path-to-bundle>/Contents/MacOS/launcher and then run to debug release builds

Platform Support

OS Status
macOS 14+ Official
Windows 11+ Official
Ubuntu 24.04+ Official
Other Linux distros (gtk3, webkit2gtk-4.1) Community
Raspberry Pi Unofficial fork: kortexa-ai/electrobun (linux-wpe) — follow the author @francip

electrobun (blackboardsh/electrobun)

Searching Database…

What is this?Electrobun is a framework for building fast, tiny, cross-platform desktop apps written entirely in TypeScript, with its own bundled build tooling, runtime, and native platform layer.
Is this basically Electron, or something built from scratch?It is its own framework, not an Electron wrapper: instead of bundling Node and Chromium, it uses Cottontail, a custom JSC-based JavaScript runtime, plus a native platform layer written in Zig, Objective-C, and C++.
How do I start a new project?Install Hutch, Electrobun's native build and workspace CLI, then scaffold a template with 'electrobun init'.
What runtime does it use instead of Node and Chromium?It ships Cottontail, Electrobun's own JSC (JavaScriptCore)-based default JavaScript runtime, run through the Hutch CLI for builds and workspace management.
Is support equally solid on every OS?Only macOS 14+, Windows 11+, and Ubuntu 24.04+ are officially supported; other Linux distros (gtk3, webkit2gtk-4.1) are community-maintained, and Raspberry Pi only works through an unofficial fork.
What is Hutch?Hutch is Electrobun's native build and workspace CLI, used to scaffold projects, run dev builds, and compile release bundles.
What does it do differently to keep apps small and updates fast?It aims for small self-extracting app bundles when using the system webview, and small updates that use binary patches before falling back to a full compressed download.
Can I use WebGPU or 3D libraries directly?Yes, Electrobun exposes WGPU to control a native GPU surface without a webview, and ships Three.js and Babylon.js adapters that run directly in the Cottontail main process.
What kinds of apps have people actually built with it?Community projects include a PDF/DOCX editor, a Git client, a password manager for AIs, a markdown editor, a comic book reader, and even a DOOM port, among dozens of other desktop tools.
Size
151.1 MB
Stars
12.9K
Age
2y
Commits · 90 Days