mrkeyoor.com_
Sun 01 Nov 21:56 UTC
AI Toolsevaluationupdated 26 Oct 2026

Pake review

Pake packages a website, local HTML file, or static web build as a desktop app for macOS, Windows, or Linux. It uses Tauri and system webviews. Its packaging commands simplify the wrapper, but local compilation still requires a native toolchain.

+387stars / 7d
Verdict

Pake is worth evaluating when an existing website or static build needs a desktop wrapper. Our September 29, 2026 run at 9c674e4 completed dependency installation, but it did not produce a verified desktop app: the source build could not execute Cargo, and the test runner's native build check also failed. Those environment-limited results do not establish that Pake is broken. Check local routing, exact-origin permissions, and your target system's webview before committing. Printing is no longer a blanket reason to reject Pake: the maintainer reports a fix in pake-cli 3.17.3, which we did not test.

We ran it

Lab card: what happened when we ran PakeScreenshot of Pake (github.com/tw93/Pake)
Install✓ · 22s220 packages · 155 MB
Build✗ · 11s
Tests✗ · 25s496 passed · 0 failed · 1 skipped of 497 (vitest)
Repo268 files~23,192 lines of source · 16.4 MB · 6 CI workflows · Dockerfile · tests dir

Answers from our run

Does Pake build from source?

Dependencies installed in 22 seconds (220 packages), and the build failed. We cloned commit 9c674e4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Pake's tests pass?

No. The project's own test command finished in 25 seconds and reported 496 passed, 0 failed, 1 skipped (vitest).

Who should not use Pake?

Developers expecting local packaging to require only JavaScript dependencies: Rust and platform prerequisites still apply.

What are the alternatives to Pake?

Tauri, Electron. Pake is worth evaluating when an existing website or static build needs a desktop wrapper.

Setup3/5The September 29 run at 9c674e4 completed dependency installation in 22 seconds; the source build could not execute Cargo. Native prerequisites remain part of local setup.
Docs4/5Supplied CLI and advanced guides specify prerequisites, local-routing limits, exact-origin permissions, JSON output, exit codes, and platform options; our run did not validate every procedure.
Community3/5Issues 1396 and 1192 contain concrete reporter, contributor, and maintainer exchanges through October 2026. Adoption and typical response times were not measured.
Maturity3/5V3.17.2 release notes and the maintainer-reported 3.17.3 printing fix document maintenance. Our 3.17.2 run produced no verified native artifact or cross-platform runtime results.

Discussed on

  1. hnPake: Turn any webpage into a desktop app with one command5 points

Who it’s for

Developers who want a desktop window around an existing website or static web build.
Teams willing to check login, downloads, printing, and window behavior on each target platform.
People choosing between ready-made packages, CLI packaging, and the documented online build route.
Developers automating packaging with the documented --json output or official agent skill.

Who it’s NOT for

Developers expecting local packaging to require only JavaScript dependencies: Rust and platform prerequisites still apply.
Local applications that require history-mode SPA routing without changing their routing strategy.
Applications that need Pake's native commands on origins beyond the exact configured website origin.
Teams requiring the same browser engine across all desktop platforms.
Buyers who need verified installer-size, memory, or runtime-performance comparisons: our recorded run did not measure those workloads.

Setup reality

In our recorded run on September 29, 2026, at commit 9c674e4, the dependency-install step succeeded in 22 seconds. The stored summary records 220 dependencies and 155 MB; the pnpm log separately reports 219 packages added and an internal duration of 5.4 seconds. These are different recorded scopes, not interchangeable package counts or timings. This step does not establish that the published CLI or a desktop app was installed.

The source-build command exited 1 after 11 seconds because tauri build could not execute cargo metadata: the executable was unavailable. The test command exited 1 after 25 seconds. Its Vitest summary reported 496 passed, zero failed, and one skipped out of 497, while the outer runner reported 15/16 checks passed. The failing outer check was Native GitHub.com Build, which exited 4 after a system-dependency warning.

Current documentation requires Node.js 20.9.0 or newer and Rust 1.85.0 or newer; Node 22 is recommended for development. Platform packages are also required. The recorded image was lab-node:22, with 3 CPUs and 8 GB of memory. Its label does not verify the runtime version. No successful native build, installed-app check, or runtime workload was recorded.

A short packaging command still needs a native toolchain

Pake suits a specific job: putting an existing website or static web build in a desktop application. It uses Tauri and system webviews across macOS, Windows, and Linux. You still need to check how the website behaves in each target platform's webview.

The README offers ready-made packages, CLI packaging, online building, and source development. It also describes shortcuts, window customization, CSS and JavaScript injection, machine-readable --json output, and an official agent skill. These are documented capabilities, not features verified by our sandbox run.

The README's claims about installers typically under 10 MB, comparisons with Electron package sizes, speed, and memory use are project claims. Our 155 MB dependency measurement describes the development setup. It measures neither a packaged application's size nor its memory use.

What our recorded run established

Our stored run began on September 29, 2026, at 04:12:01.444 UTC, using commit 9c674e48bc16d7f0bc872dabfa67d0f17c377c68 (short form 9c674e4). The build log identifies pake-cli 3.17.2. The recorded configuration specifies 3 CPUs, 8 GB of memory, and image lab-node:22; the image name does not verify which Node runtime executed the commands.

The dependency-install step succeeded in 22.487 seconds, rounded to 22 seconds in the stored summary. That summary records 220 dependencies and 155 MB. The raw pnpm tail reports Packages: +219 and completion in 5.4 seconds using pnpm v10.26.2. We have not reconciled the summary's dependency-count definition with pnpm's added-package count. The outer step duration and pnpm's own duration also describe different scopes.

This was dependency installation in a source checkout. It does not prove that the published CLI was globally installed, that a desktop installer was created, or that an installed application launched.

The source-build step ran tauri build and exited 1 after 11.441 seconds, rounded to 11 seconds. It could not execute cargo metadata, returning No such file or directory. Native compilation did not get past that prerequisite. This is evidence that Cargo was unavailable to the command, not evidence of a Rust compilation defect in Pake.

The test step exited 1 after 25.489 seconds, rounded to 25 seconds. Its Vitest summary reported 53 passing files and 496 passing tests, zero failed tests, and one skipped test out of 497. Separately, the outer runner reported 15/16 checks passed. Its failed check was explicitly named Native GitHub.com Build, which returned code 4 after warning that first use requires system dependencies. The current CLI guide defines code 4 as a missing environment or dependency-setup failure; the recorded tail does not identify every missing prerequisite in that check. The local artifact fixture was also skipped because it used macOS .app paths.

These are reported results from the stored run. They do not establish exhaustive unique test coverage, and the two runner totals should not be added together. No new execution or complete-log reconciliation was performed. There was no successful native build, installed-binary check, application workload, memory benchmark, or security audit result.

Choose a setup route before evaluating the result

The current CLI guide requires Node.js 20.9.0 or newer and Rust 1.85.0 or newer. Development documentation recommends Node 22 and lists platform prerequisites: Xcode command-line tools on macOS, Windows build tools and an SDK for the documented MSVC route, and native development packages on Linux. The CLI guide also documents a Windows GNU toolchain option, so Visual Studio is not the only documented Windows route.

The CLI can accept a URL, a local HTML file, or a directory containing index.html at its root. The README also offers online building for readers who want to move compilation out of their local environment. Neither route was validated by our source-checkout run.

For automation, the CLI guide says --json moves logs to stderr and writes one JSON result to stdout. Interactive prompts are disabled. Missing Rust can therefore produce ENV_MISSING rather than an installation prompt. On Linux builds requesting several package formats, inspect the returned outputs and warnings: the guide says a partially successful build can report success with fewer outputs than requested.

Routing and origin permissions determine fit

Local packaging supports hash routing; history-mode SPA routing is not yet supported. A directory needs index.html at its root. Single-file packaging requires CLI 3.0.0 or newer, and directory packaging requires 3.15.0 or newer. A local app using #/settings fits the documented routing model. An app expecting /settings to be rewritten to index.html needs a routing change for this packaging route.

Pake grants native IPC to bundled local pages and the exact configured website origin, including scheme, host, and port. Other origins do not receive those native permissions. Keeping an authentication redirect inside the app through navigation options does not establish that the redirected page gains native IPC access.

On another origin, Pake's native notifications, zoom, fullscreen controls, hidden-title-bar dragging, and system-browser link commands are unavailable; downloads fall back to browser behavior. Package the final website hostname, including its www or workspace subdomain, and check the actual sign-in and download flow.

For macOS camera and microphone access, the advanced guide requires the relevant build flags. The CLI guide also warns that popup options cannot guarantee embedded-webview sign-in when a provider blocks it.

Printing and Wayland reports need version boundaries

Issue 1396 reported window.print() failing on macOS with Pake 3.17.2 because the print permission was missing. It is now closed. In an October 4, 2026 comment, the maintainer says pake-cli 3.17.3 grants that permission for local pages and the exact packaged site, while other origins remain blocked. The issue was closed as completed on October 5. This is a maintainer-reported fix, not a result from our 3.17.2 run. If printing matters, rebuild with the documented fix and verify the print dialog in your app.

Issue 1192 is also closed, marked not planned on October 5, 2026. The maintainer says Pake 3.17.2 changed Wayland rendering for WebKitGTK 2.52 or later to retain hardware acceleration. For older WebKitGTK versions, the September 25 comment says the old flags still apply and documents PAKE_LINUX_WEBKIT_SAFE_MODE=0 as a workaround. Closure followed a lack of further feedback; it does not prove that every affected compositor and system was verified.

The V3.17.2 release notes describe fixes for Linux rendering, popup permissions, launcher matching, and Windows GNU linker flags. These notes and the issue exchanges show concrete maintenance activity. They do not establish response-time guarantees, adoption, or compatibility with every website.

How to choose

Start with Pake when the website already supplies the interface and the documented wrapper controls meet your needs. Try the appropriate packaging route, then verify login, navigation, downloads, printing, and any requested media access on each target platform.

Tauri is the underlying framework, so choosing it directly means taking responsibility for the application and Rust backend API. Its primary documentation supports web frontends and system webviews. Electron is a separate application-framework choice based on Node.js and Chromium. Neither comparison is a measured size or performance result from this review.

Rating rubric

Scores are editorial judgments about the evidence available for each category, not benchmark results. On this five-point scale, 1 means substantial documented obstacles, 2 means limited supporting evidence, 3 means a usable documented path with material limits, 4 means detailed support with only bounded gaps, and 5 requires broad independent validation. Unknown adoption or untested compatibility earns no extra credit.

Setup receives 3/5 because dependency installation succeeded but local compilation still requires native prerequisites. Documentation receives 4/5 for explicit requirements, routing limits, permission boundaries, output semantics, and troubleshooting. Community receives 3/5 for visible reporter, contributor, and maintainer exchanges, without verified adoption or support-service measurements. Maturity receives 3/5 because versioned fixes are documented, but our run produced no verified desktop artifact and platform compatibility remains a workflow-specific check.

Alternatives

ProjectWhat it isPick it when
Tauri gh↗A framework combining a web frontend, a Rust backend, and system webviews.Choose Tauri directly when you want to build the application around your own Rust backend API rather than start with Pake's website-packaging workflow.
Electron gh↗A framework for desktop applications written with JavaScript, HTML, and CSS, based on Node.js and Chromium.Choose Electron when Node.js and Chromium are requirements for the desktop application you intend to build.

What people are saying

  1. [github-trending] tw93/Pake

Sources

  1. Pake README
  2. Pake advanced usage guide
  3. Pake CLI usage guide
  4. Pake V3.17.2 release
  5. macOS printing issue 1396
  6. Wayland WebKit flags issue 1192

More ai tools reviews

kornia · skills · anarlog · pr-agent · agent-sprite-forge · KiroCrew · the whole board →