Pake: Turn Any Webpage Into a Desktop App With One Command (Free, Open Source, Rust-Powered)
Pake converts any URL into a native desktop app for macOS, Windows, and Linux in one CLI command. Built with Rust and Tauri, the output is ~5MB — twenty times smaller than Electron. No full browser bundled. Here is what it is, how it works, and how to use it.
Open SourceDeveloper ToolsTauriRustDesktop AppsProductivity
Electron made it possible to ship web apps as desktop apps. It also made desktop apps 200MB and hungry for RAM. A Slack install is 350MB. A Notion desktop app uses half a gigabyte of memory before you open a single page.
The trade-off felt inevitable — until Pake.
Pake by @tw93 is a CLI tool that turns any URL into a native desktop application in one command. The output app is around 5MB. That is roughly 20 times smaller than the equivalent Electron build, and the memory footprint follows proportionally.
It has 55,000 GitHub stars, 63 contributors, and pre-built apps for ChatGPT, Grok, YouTube, Gemini, Excalidraw, and more already available to download. It is free, open source, and works on macOS, Windows, and Linux.
Why Pake Works Differently
The reason Electron apps are heavy is structural. Electron embeds an entire Chromium browser inside every application — the same browser engine that powers Chrome, shipped as a private copy inside each app. When you install Notion, you are installing a custom Chromium build that runs only Notion's web app.
Pake uses Tauri instead. Tauri wraps a web page using the WebView engine already present on your operating system:
macOS: WebKit (the same engine Safari uses, already on your machine)
Windows: WebView2 (the Chromium-based renderer Microsoft ships with Windows 11)
Linux: WebKitGTK
There is no bundled browser. There is no extra 150MB of Chromium. The resulting app is a thin native shell that says "open this URL in a system WebView window" — and your OS does the rest with infrastructure it already has.
The output is a proper native desktop application: it appears in your Dock or taskbar, has its own icon, opens independently of your browser, supports keyboard shortcuts, and can be set as a login item. It just weighs 5MB instead of 200MB.
Pre-Built Apps: Download and Go
If you just want a lightweight desktop wrapper for a popular web app, Pake ships pre-built binaries ready to download from the GitHub Releases page — no CLI, no Rust, no setup.
Go to Releases, find the app you want, download the .dmg (macOS), .exe or .msi (Windows), or .AppImage/.deb (Linux), and run it. Done.
CLI: Package Any URL in One Command
The more powerful use case is packaging any URL yourself — internal tools, AI models, dashboards, web apps that don't have desktop clients, or sites you use constantly and want out of your browser tab bar.
--icon — custom icon URL or local file path (.icns for macOS, .ico for Windows, .png for Linux)
--width / --height — window dimensions
--hide-title-bar — immersive mode, no macOS title bar
--transparent-title-bar — blurred title bar that blends with the page
--always-on-top — keep window in front
Online Building: No Local Setup Required
If you don't want to install Rust or Node locally, Pake offers GitHub Actions-based online building. Fork the repository, trigger the workflow with your URL and options, and GitHub's CI builds the app for all three platforms and makes it available as an artifact.
This is the recommended path for non-developers or anyone who wants a one-time build without setting up a local Rust environment.
What You Actually Get
The output of pake <url> is a native application, not a bookmark or a shortcut. Specifically:
Native window management. The app has its own window, independent of your browser. You can use Cmd+Tab (macOS) or Alt+Tab (Windows/Linux) to switch to it. It appears in your Dock or taskbar. You can minimize, maximize, and close it like any other app.
Keyboard shortcuts. Pake ships built-in shortcut handling. The most useful defaults:
Cmd+[ / Cmd+] — back and forward navigation within the web app
Cmd+R — refresh
Cmd+W — close window
Immersive window options.--hide-title-bar removes the macOS traffic lights for a full-screen web experience. --transparent-title-bar gives the blurred glass look common in native macOS apps.
Drag-and-drop support. Files and text can be dragged into Pake windows where the web app supports it.
Style customization. For advanced users, Pake supports CSS injection to override page styles — useful for removing ads, adjusting font sizes, or hiding UI elements you don't want in the desktop version.
Why Use This Instead of a Browser Tab?
The honest answer: for most use cases, a pinned browser tab works fine. Pake is compelling specifically when:
You want OS-level separation. An AI assistant in a browser tab competes with 40 other tabs for your attention. An app in your Dock is a context switch target you can Cmd+Tab to. Many people find a dedicated app reduces the friction of switching to tools they use constantly.
You want a smaller footprint. If you use ChatGPT or Claude through a browser, your browser is doing the heavy lifting plus running all your other tabs. A Pake-wrapped app uses only the memory the web app itself needs, routed through the system WebView, with no browser overhead.
You want to ship something. If you have built a web app — an internal tool, a dashboard, a side project — and want to give users a desktop version without building a native app from scratch, Pake generates a distributable binary for all three platforms. The GPLv3 Output Exception means apps you build with Pake are yours to distribute however you want.
You want to remove a site from your browser. Some sites (YouTube, Twitter) are easier to manage when they live outside the browser — no cross-contamination with other tabs, no accidental notifications, cleaner focus.
Pake vs Electron: The Size Comparison
Metric
Electron (typical)
Pake
App bundle size
100–350 MB
~5 MB
Memory at idle
200–500 MB
30–80 MB
Startup time
2–5 seconds
< 1 second
Bundled browser
Yes (Chromium)
No (uses OS WebView)
Cross-platform
Yes
Yes
Custom native features
Full access
Limited to Tauri APIs
The trade-off: Pake apps are wrappers. They can't do things that require deep native OS integration — no system notifications with custom actions, no background services, no deep file system access beyond what the web app implements. If you need those things, you are building a real native app, not wrapping a web page. But for the use case of "I want this web app to feel like a desktop app," Pake covers it at a fraction of the weight.
License
Pake is open source under GPLv3. The GPL applies to Pake itself. Under the Pake Output Exception (see LICENSE-EXCEPTION in the repository), apps you generate with Pake are entirely yours — you can distribute them however you want without the GPL applying to your output.
If you fork Pake itself into a separate product, the GPL applies and you need to credit Pake as the source and give your fork a different name.