Static file server. Pre-loads and pre-compresses all files at startup for near-zero latency serving.
- Raw hyper (no framework overhead)
- SO_REUSEPORT for multi-core scaling
- Files pre-compressed at startup (brotli/gzip/zstd)
- Lock-free concurrent routing (DashMap + FxHash)
- Zero-copy responses (Bytes)
Benchmark (M3 Max):
wrk -c 50 -d 10 -t 50 http://localhost:3000
Requests/sec: 149838.48
Latency: 328.63us avg
# mise
mise install ubi:radiosilence/nano-web
# cargo
cargo install nano-webPre-built binaries on GitHub Releases.
FROM ghcr.io/radiosilence/nano-web:latest
COPY ./dist /public/nano-web serve # ./public on :3000
nano-web serve ./dist --port 8080 # custom dir/port
nano-web serve --spa --dev # SPA mode + hot reload| Flag | Default | Description |
|---|---|---|
--port, -p |
3000 |
Port |
--spa |
false |
Serve index.html for unknown routes |
--dev, -d |
false |
Reload modified files |
--config-prefix |
VITE_ |
Env var prefix for template injection |
--log-level |
info |
debug/info/warn/error |
--log-format |
console |
console/json |
--log-requests |
false |
Log each request |
Inject env vars into HTML at startup:
<script>
window.ENV = JSON.parse("{{EscapedJson}}");
</script>Variables: {{env.VAR_NAME}}, {{Json}}, {{EscapedJson}}
/_health returns {"status":"ok","timestamp":"..."}
MIT