Ziewziew
Ziew

Desktop apps in kilobytes,
not megabytes.

Native performance. Native size.
Desktop apps, minus the bloat.

$ curl -fsSL ziew.sh/install | sh
View on GitHubQuick Start
220KB
Hello World
680x
Smaller than Electron
~40MB
Toolchain size

The Post-Electron Era

Other desktop frameworks ship entire browser engines. We don't.

FrameworkHello WorldLanguage
Electron~150 MBJavaScript
Tauri~3-5 MBRust
Wails~5-10 MBGo
Ziew220 KBZig

Why Ziew

Tiny Binaries

220KB hello world. Real apps under 2MB. No bundled browser engine.

Native Webviews

Uses system WebKit/WebView2. Zero deps on Windows & macOS.

Local AI

First-class llama.cpp & whisper.cpp bindings. Ship AI apps offline.

Cross-Compilation

Build for any OS from any OS. Zig makes it trivial.

Install

One command. All platforms.

macOS / Linux
curl -fsSL ziew.sh/install | sh
Windows (PowerShell)
irm ziew.sh/install.ps1 | iex

What this installs: Zig toolchain (~40MB) + ziew CLI. That's it. No Node, no Cargo, no 500MB of dependencies.

Windows & macOS: Zero additional dependencies. Just works.
Linux: Needs GTK3 and WebKit2GTK:
sudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev

Quick Start

Terminal
# Create a new project
ziew init myapp
cd myapp

# Run in development mode
ziew dev

# Build for production
ziew build --release

One Command. Every Platform.

Ship to Windows, macOS, and Linux from any machine.

Terminal
$ ziew ship

Building for all platforms...

 myapp-windows-x64.exe    320 KB
 myapp-macos-x64          380 KB
 myapp-macos-arm64        360 KB
 myapp-linux-x64          340 KB

Total size: 1.4 MB (all platforms combined)
Electron equivalent: 600 MB
Windows
320 KB
macOS
380 KB
Linux
340 KB
Combined size for all 4 binaries: What Electron needs for one.

Simple API

Built-in APIs for common tasks. Plugins when you need more.

app.js
// Built-in APIs - no backend code needed
const files = await ziew.fs.readDir('./docs');
const data = await ziew.fs.readFile('./config.json');

// Local AI - runs on device, no API keys
const summary = await ziew.ai.complete('Summarize this...');

// Stream responses
for await (const token of ziew.ai.stream(prompt)) {
  output.textContent += token;
}
backend.lua
-- Custom backend logic in Lua
function processDocument(path)
  local content = ziew.fs.read(path)
  local summary = ziew.ai.complete("Summarize: " .. content)
  return { text = summary, words = #content }
end
app.js
// Call your Lua functions from JavaScript
const result = await ziew.lua.call('processDocument', './report.md');
console.log(result.summary, result.words);

Lua is optional. Apps using only built-in APIs are 220KB. Adding Lua scripting brings it to ~500KB — still 300× smaller than Electron.