WinRavel turns any Laravel application into a single, self-contained Windows .exe. FrankenPHP (PHP 8.5 + Caddy) runs inside the executable, the database is baked in, and the whole thing just runs — no PHP, no web server, and no installation required on the target machine.

What it does

  • One .exe per app. Double-click it and a small dark control window opens — status indicator, "Open in browser", Stop, and a live server log — while it serves your Laravel app on 127.0.0.1.
  • Set up at build time. composer install, key:generate, migrate, and optional db:seed all run during the build, so the shipped executable is ready to go.
  • Source protection. Optional obfuscation of your app/ directory (deflate + XOR + base64 into self-decoding stubs) while class and namespace names stay intact so Laravel keeps working.
  • No orphan processes. A Windows Job Object ties the PHP server (and bundled database) to the launcher, so closing the app cleans everything up.

The builder

Pick a source — a local folder or a GitHub repository (public or private with a token) — set the app name, port, and an optional .env, then choose your toggles and hit Build.

WinRavel building from a local Laravel folder

Building straight from a private GitHub repository — git is bundled, so nothing extra is needed on the build machine:

WinRavel building from a GitHub repository

Everything is bundled

The installer ships with FrankenPHP, Composer, portable Git, and the launcher runtime. The build machine doesn't need PHP, Node, the .NET SDK, or anything else installed.

Database options

  • SQLite (default) — fully self-contained, baked and migrated at build time.
  • Bundle MariaDB — ships a real MySQL-compatible server inside the app, migrated at build and automatically started and stopped by the launcher.
  • Force SQLite — rewrite a MySQL/PostgreSQL .env to SQLite (handy, but may break MySQL-specific SQL).
  • External MySQL/PostgreSQL — drivers are bundled; connect to your own server.

How it works

WinRavel precompiles a launcher "stub" once, with the FrankenPHP runtime baked in. Each build simply appends your Laravel app (plus a small config) to a copy of that stub — a self-extracting executable. No recompilation per build, so builds are essentially instant. At runtime the executable extracts the runtime and your app to %APPDATA% and starts the server.

Tech stack

Built in C# / .NET (WinForms) for the builder and the launcher, on top of FrankenPHP and Caddy. The builder itself is a single self-contained executable.

Download

WinRavel is open source. Grab the installer and source from GitHub:


Note: the shipped executables target Windows x64 and rely on the Visual C++ Redistributable, which is preinstalled on current Windows 10/11.