The real server
for Laravel & PHP
.
Askr embeds the PHP interpreter in-process — no FastCGI, no FPM — and serves it from a memory-safe Rust hot path. In worker mode it boots your app once and serves many requests against it, eliminating per-request framework bootstrap. TLS, HTTP/2, static files, worker supervision and an admin dashboard in a single binary.
# Boot once, serve many — worker mode $ askr serve --root public \ --worker-script examples/laravel-worker.php \ --workers "$(nproc)" --tls-self-signed ✓ 8 workers booted · listening on :443 (HTTP/2) ✓ 300/300 requests → 200 · zero state bleed → each worker booted exactly once
per-request
~110 ms
worker mode
~9 ms
speed-up
~9×
Verified correct under load. Raw embedding overhead is ~0.02 ms/request — the framework bootstrap is the cost, and worker mode removes it.
Download Askr
Self-contained Linux tarballs — the binary, embedded PHP, opcache and examples in one download. Or build from source.
Linux · x86_64
askr-0.2.1-linux-x86_64.tar.gz
22.1 MB
Linux · ARM64
askr-0.2.1-linux-aarch64.tar.gz
21.2 MB
sudo apt-get install -y libssl3 libxml2 libonig5 libsqlite3-0
One binary,
no proxy in front.
TLS, HTTP/2, static files, worker supervision, a shared cache, SSE broadcasting, queue workers, a scheduler and an admin dashboard are all built into the Rust core. No Nginx, no FPM, no Redis, no Horizon, no cron.
Worker mode
Octane-style boot-once-serve-many with per-request state reset — no bleed. Eliminates framework bootstrap on every request.
Process per core
One worker process per core on a shared listen socket. Non-ZTS PHP, real multi-core parallelism without threads.
Memory-safe in Rust
A memory-safe Rust hot path serves every request; all unsafe code is confined to the PHP FFI boundary.
Paranoid mode
--paranoid is a state-bleed detector that tells you whether your app is actually worker-safe before you ship it.
CoW template
Boot once, fork workers with copy-on-write for ~ms warm respawn and shared memory (experimental).
Queues + scheduler
Queue workers and the scheduler are supervised in the same binary — no separate Horizon or cron to run.
Shared cache, no Redis
In-binary cache with a Laravel driver: cache, atomic counters and rate limiting — no Redis to run.
Broadcasting via SSE
Live updates to browsers with askr_broadcast() over Server-Sent Events — no Reverb, no Pusher.
TLS + HTTP/2
rustls (ring, no OpenSSL) with ALPN HTTP/2, plus --tls-self-signed for local development.
Zero-downtime reload
Rolling reload on SIGHUP with an optional canary — a bad deploy hits one worker, not all of them.
Built-in metrics
In-process metrics split PHP vs I/O time, a latency histogram and per-worker RSS — via the admin API and dashboard.
Typed config + doctor
A typed askr.toml with config-check, and askr doctor pre-flight checks before you serve.
# Is your app actually worker-safe? $ askr serve --paranoid \ --worker-script examples/laravel-worker.php ✓ no state bleed detected across 500 requests # Recycle workers + auto-respawn on crash $ askr serve --max-requests 1000 --workers 8 worker 3 recycled after 1000 reqs · respawned
Kill the bootstrap,
keep the safety.
Worker mode boots your Laravel app once and serves thousands of requests against the warm instance, with per-request state reset so nothing bleeds between requests. --paranoid proves it.
- Per-request state reset — no bleed between requests
- --paranoid state-bleed detector tells you if you are worker-safe
- Graceful recycling (--max-requests) + auto-respawn on crash
- CoW template forks warm workers for ~ms respawn
One tarball,
serve in production.
Grab a self-contained release for Linux (x86_64 or arm64) — binary, embedded PHP, opcache and examples in one tarball. Then serve your app with TLS and worker mode.
# Download a self-contained release $ VER=v0.2.1; ARCH=$(uname -m) $ curl -fsSLO https://github.com/kwhorne/askr/\ releases/download/$VER/askr-${VER#v}-linux-$ARCH.tar.gz $ tar xzf askr-${VER#v}-linux-$ARCH.tar.gz # Pre-flight, then serve with worker mode + TLS $ ./askr-run.sh doctor $ ./askr-run.sh serve --root /var/www/app/public \ --worker-script examples/laravel-worker.php \ --workers "$(nproc)" --tls-self-signed ✓ serving on :443 · HTTP/2 · 8 workers
Your app, warm.
Your server, in Rust.
Download Askr and serve real Laravel in-process — ~9× faster than the FPM model, verified correct under load. Free, open source, single binary.