qaws
qaws stands for Quick Arm Webserver. It is a small, dependency-free static file webserver written in Zig, built for direct binary use, Termux, Docker, and simple deployments where serving files should stay boring and fast.
qaws is currently documented for version 0.2.7.
By default, running qaws serves ./public on 0.0.0.0:80:
qawsThe common local development shape is:
qaws --host 127.0.0.1 --port 8080 --serve ./publicOr with Docker:
docker run --rm -p 8080:80 -v "$PWD/public:/public:ro" ghcr.io/nulldoubt/qaws:0.2.7What qaws does
Static files
Serves files from one directory with index resolution and no directory listing.
HTTP/1.1
Supports GET, HEAD, keep-alive, ordered pipelining, validators, ranges, and sidecars.
Fast path
Uses small-file caching, event workers, async logging, and sendfile where supported.
Simple ops
Runs in the foreground, as a daemon, as a single binary, or as a scratch Docker image.
Defaults
| Setting | Default |
|---|---|
| Host | 0.0.0.0 |
| Port | 80 |
| Serve directory | ./public |
| Config loading | Explicit only with --config |
| Access logs | Enabled |
| Log format | plain |
| Keep-alive | Enabled |
| Keep-alive timeout | 5000 ms |
| Max requests per connection | 1000 |
| Max connections | 1024 |
| Static cache | Enabled |
| Sendfile | Enabled |
| ETags | Enabled |
| Byte ranges | Enabled |
| Precompressed sidecars | Enabled |
Design limits
qaws intentionally does not include TLS, authentication, directory listings, runtime compression, multipart range responses, custom error pages, automatic config discovery, or reverse-proxy routing. Put qaws behind a TLS reverse proxy or CDN when you need public HTTPS.