v0.2.1 · stable
Askr · The Production Server

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.

askr serve — Laravel 12 + Livewire
# 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
Real Laravel 12 + Livewire

per-request

~110 ms

worker mode

~9 ms

speed-up

~9×

throughput (8 workers) 37 → 347 req/s

Verified correct under load. Raw embedding overhead is ~0.02 ms/request — the framework bootstrap is the cost, and worker mode removes it.

Download · v0.2.1

Download Askr

Self-contained Linux tarballs — the binary, embedded PHP, opcache and examples in one download. Or build from source.

All releases
Runtime libs (usually present): sudo apt-get install -y libssl3 libxml2 libonig5 libsqlite3-0
S.01 — What it does

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.

shell
# 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
Boot once, serve many

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
Worker mode guide
Up in minutes

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.

shell
# 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
Colophon — Get Askr

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.

Askr · v0.2.1 Built in Norway · MMXXVI