Build desktop apps with JavaScript.
Ship them under 5MB.
Go from zero to a running desktop app in under 30 seconds.
npm install -g @lightshell/cli
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.
~2.8MB
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()
~3.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)
~3.0MB
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!')
~2.9MB
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 | ~2.8MB | 0.3s | 30MB | 30 sec |
LightShell uses system webviews (WKWebView on macOS, WebKitGTK on Linux) — no bundled browser engine. Electron bundles Chromium. Tauri uses system webviews like LightShell 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/meherpanguluri/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.