LocalValet is an all-in-one local development orchestrator inspired by Laragon and Laravel Valet, designed natively for Linux. Built with a clean architecture combining Go on the backend and React + TypeScript + Tailwind CSS on the frontend (powered by Wails v2).
LocalValet gives developers an instant, native alternative to heavy Docker setups for daily web development, offering zero-delay process startup, multi-version runtime hot-switching, automatic framework discovery, virtual hosts generation, and a pure-Go local SSL Certificate Authority.
- Supported Modules: Apache, Nginx, MariaDB / MySQL, PostgreSQL, Redis, and PHP-FPM.
- Port Conflict Auto-Remapping: Automatically detects when default ports are occupied and remaps across a
+200range with dynamic CLI argument injection (--port,-p,-D PORT). - Health Check Engine: Real-time process PID polling, TCP socket connection probes, and HTTP response validation.
- Graceful Shutdown: Strict process group isolation (
syscall.Setpgid) with 5-secondSIGTERMpolling andSIGKILLtimeout fallback. - Dependency Auto-Start: Starting web servers (
apacheornginx) automatically bootsphp-fpm.
- PHP Multi-Version: Switch between PHP 8.4, 8.3, 8.2, and 8.1 seamlessly.
- Node.js Multi-Version: Switch between Node.js 22, 20, and 18.
- Seamless Hot-Restart: If a service is currently running when its version is changed, LocalValet gracefully restarts it using the new binary without crashing.
- Dynamic Discovery: Drop new version folders into
runtime/linux/<service>/<version>and LocalValet will auto-detect them dynamically.
- Framework Auto-Detection:
- Laravel: Detected via
artisan/composer.json(document root:public/). - WordPress: Detected via
wp-config.php/wp-load.php. - Next.js / Nuxt: Detected via
next.config.*/nuxt.config.*(reverse-proxy to:3000). - React / Vue / Vite: Detected via
vite.config.*(document root:dist/). - Generic PHP / Static HTML: Automatically served.
- Laravel: Detected via
- Nginx Virtual Hosts: Automatically generates
.confvirtual host templates inruntime/linux/nginx/vhosts/<domain>.confwith FastCGI proxying, SPA fallback routing (try_files $uri $uri/ /index.php?$query_string), and WebSocket-enabled reverse proxying. - Local
.testDomains: Standardized local domain mapping (e.g.my-project.test).
- Zero CLI Dependencies: Built exclusively with Go standard library
crypto/x509,crypto/rsa, andencoding/pem(nomkcertoropensslCLI needed). - Local Root CA: Generates a persistent Root CA (
runtime/certs/ca.crt&ca.key) with 10-year validity. - Per-Project Certificates: Auto-issues signed leaf certificates with Subject Alternative Names (
DNS:project.test,DNS:*.project.test,IP:127.0.0.1). - System Trust Helper: 1-click installer to trust the Root CA in
/usr/local/share/ca-certificates/so browsers display a trusted padlock (https://).
- Injected PATH Environment: Launches your favorite Linux terminal (
kitty,alacritty,gnome-terminal,konsole,xfce4-terminal, etc.) with active PHP, Node.js, Composer, and MySQL binaries placed at the front ofPATH. - Direct IDE Opening: Open discovered projects in VS Code (
code), Cursor, PhpStorm, or system$EDITORin one click.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React 18 / TS / Vite) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ ββββββββββ β
β β Service β β Project β β VHost β β Version β β Logs β β
β β Control β β Browser β β Manager β β Switch β β Viewer β β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ βββββ¬βββββ β
β βββββββββββββ΄ββββββββββββΌββββββββββββ΄βββββββββββ β
β β Wails v2 IPC Bridge β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ€
β β Go Backend β
β ββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββ β
β β Use Case Layer β β
β β ServiceUC β ProjectUC β VHostUC β SSLUC β β
β ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββ β
β β Domain & Platform Layer β β
β β LinuxManager β Scanner β NginxGen β CAManager β DNS β β
β ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββ β
β β Runtime Filesystem (Isolated) β β
β β runtime/linux/* β runtime/certs/* β runtime/logs β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Linux (Ubuntu, Debian, Fedora, Arch, Manjaro, Pop!_OS, etc.)
- Go 1.21+
- Node.js 18+ &
npm - Wails v2 CLI (
go install github.com/wailsapp/wails/v2/cmd/wails@latest)
# 1. Clone the repository
git clone https://github.com/Kocannn/LocalValet.git
cd LocalValet
# 2. Setup runtime environment structure
./scripts/setup-runtime.sh
# 3. Install frontend dependencies
cd frontend && npm install && cd ..
# 4. Run in development mode
wails dev# Build standalone optimized binary & frontend bundle
./scripts/build-linux.shThe compiled executable is created at build/bin/localvalet.
To route *.test domains to 127.0.0.1, click Sync Domains to /etc/hosts in the Settings page or let LocalValet sync automatically. It updates only the managed block:
# BEGIN LocalValet Managed Domains
127.0.0.1 my-laravel-app.test
127.0.0.1 my-wp-blog.test
127.0.0.1 nextjs-app.test
# END LocalValet Managed DomainsIn Settings, click Trust Root CA in System Store. This copies runtime/certs/ca.crt to /usr/local/share/ca-certificates/ and runs update-ca-certificates.
- Chrome / Chromium / Brave / Edge: Automatically respects system CA certificates.
- Firefox: Ensure
"Security & Privacy" -> "Certificates" -> "View Certificates" -> "Authorities"has importedruntime/certs/ca.crtor setsecurity.enterprise_roots.enabled = trueinabout:config.
LocalValet/
βββ config/
β βββ runtime.json # Service versions & binary definitions
β βββ projects.json # Configured scan roots & project metadata
βββ runtime/
β βββ certs/ # LocalValet Root CA & per-domain SSL certs
β βββ logs/ # Service log outputs
β βββ pids/ # Running service process IDs
β βββ linux/ # Portable service runtime binaries
β βββ php/ # Multi-version PHP (8.4, 8.3, 8.2)
β βββ node/ # Multi-version Node.js (22, 20, 18)
β βββ mysql/ # MariaDB / MySQL
β βββ nginx/ # Nginx binary & vhosts/
β βββ apache/ # Apache httpd
β βββ redis/ # Redis server
β βββ postgresql/ # PostgreSQL
βββ scripts/
β βββ build-linux.sh # Production build automation script
β βββ setup-runtime.sh # Runtime folder initialization script
βββ build/bin/localvalet # Standalone application binary
LocalValet includes an extensive unit and integration test suite covering domain interfaces, platform implementations, framework scanners, cryptographic certificate generators, and use case orchestration:
# Run all Go unit and integration tests
go test -v ./internal/...
# Run frontend type-check & Vite build verification
cd frontend && npm run buildThis project is licensed under the MIT License - see the LICENSE file for details.