Build desktop apps with JavaScript.
Ship them under 1MB.
Go from zero to a running desktop app in under 30 seconds.
git clone https://github.com/lightshell-dev/lightshell.git
cd lightshell && make && cd cli && make
lightshell init my-app
cd my-app
lightshell dev
A native window opens with your app. Edit files — it reloads instantly.
lightshell build
Outputs a native .app (macOS) or AppImage (Linux). That's it.
// Read a file
const data = await lightshell.fs.readFile('./notes.txt')
// Open a native file dialog
const path = await lightshell.dialog.open({
filters: [{ name: 'Text', extensions: ['txt', 'md'] }]
})
// Send a notification
lightshell.notify.send('Saved!', 'Your file has been saved.')
// Get system info
const platform = await lightshell.system.platform() // "darwin"
const arch = await lightshell.system.arch() // "arm64"
Each app was built with lightshell build. Sizes are the final .app bundle.
~1MB
Minimal app showing system info cards. Calls lightshell.system APIs to display platform, arch, hostname.
const platform = await lightshell.system.platform()
const arch = await lightshell.system.arch()
const hostname = await lightshell.system.hostname()
~1.2MB
Split-pane editor with live preview. Open/save files via native dialogs. Keyboard shortcuts: Cmd+O, Cmd+S.
const path = await lightshell.dialog.open({
filters: [{ name: 'Markdown', extensions: ['md'] }]
})
const content = await lightshell.fs.readFile(path)
await lightshell.fs.writeFile(path, editor.value)
~1.1MB
Dark-themed dashboard showing system info, directory listings, clipboard copy, and notifications. Live uptime counter.
const entries = await lightshell.fs.readDir(homeDir)
await lightshell.clipboard.write(systemInfo)
lightshell.notify.send('Copied', 'Info copied!')
~1MB
RGB sliders with live preview and hex output. Copy to clipboard with one click using native APIs.
const hex = '#6C5CE7'
await lightshell.clipboard.write(hex)
lightshell.notify.send('Copied!', hex)
Try these in the playground — no install needed.
Same app (hello world + file dialog), measured on macOS, Apple M2.
| Framework | You Write | Binary Size | Startup | Memory | Setup Time |
|---|---|---|---|---|---|
| Electron | JS + Node | ~180MB | 1.2s | 120MB | 2 min |
| Tauri | JS + Rust | ~8MB | 0.5s | 45MB | 10 min |
| LightShell | JS only | ~1MB | <100ms | 15MB | 30 sec |
LightShell has its own JS engine (r8e) and GPU renderer (Metal/Vulkan) — no browser, no webview, zero dependencies. Electron bundles Chromium. Tauri uses system webviews but requires Rust for the backend.
Desktop app development shouldn't require learning Rust, fighting Electron's bloat, or shipping 200MB binaries for a todo app.
LightShell is built on three beliefs:
You write JS, HTML, and CSS. LightShell compiles your code into a native binary that uses the system's built-in webview (WKWebView on macOS, WebKitGTK on Linux). Your app assets are embedded directly in the binary — one file, no dependencies.
Native APIs (file system, dialogs, clipboard, notifications, system tray) are exposed through a clean JavaScript API: window.lightshell.*.
LightShell is MIT licensed. Built by developers who got tired of shipping bloated desktop apps.
github.com/lightshell-dev/lightshell
Apps built with LightShell. All under 5MB.
Split-pane editor with live preview. Native file dialogs, keyboard shortcuts, and system notifications.
Real-time dashboard showing platform info, directory listings, and clipboard integration.
RGB/HSL sliders with live preview. One-click copy hex values to clipboard.
Persistent todos with JSON file storage. Add, complete, delete — all saved locally.
Open any JSON file with a native dialog. Collapsible tree view with syntax highlighting.
Focus timer with system notifications when sessions end. Minimal, distraction-free UI.
Every app above was generated by AI in a single prompt. Build yours →
These apps were generated by AI in a single message. Copy a prompt, paste it into ChatGPT or Claude, and get a working desktop app.
"Build me a LightShell desktop app: a markdown editor with a split pane layout. Left side is a textarea for editing, right side shows a live HTML preview. Add native file open/save dialogs with Cmd+O and Cmd+S shortcuts. Show a notification when the file is saved."
"Build me a LightShell desktop app: a todo list that saves to a JSON file. I should be able to add todos, mark them complete, and delete them. Use lightshell.fs to persist the data and lightshell.app.dataDir() for the storage path. Clean, minimal design."
"Build me a LightShell desktop app: a JSON file viewer. Use lightshell.dialog.open() to pick a JSON file, then display it as a collapsible tree with syntax highlighting. Show the file name in the window title."
"Build me a LightShell desktop app: a pomodoro timer. 25 min focus, 5 min break. Big countdown display. Send a system notification with lightshell.notify.send() when each session ends. Start/pause/reset buttons."
"Build me a LightShell desktop app: a system info dashboard. Show platform, arch, hostname, home directory, and temp directory using lightshell.system APIs. Add a button to list files in the home directory using lightshell.fs.readDir(). Copy info to clipboard on click."
LightShell's simple API surface means AI gets it right on the first try.