| Crates.io | nano-web |
| lib.rs | nano-web |
| version | 1.1.6 |
| created_at | 2025-08-07 11:49:02.291558+00 |
| updated_at | 2026-01-12 15:28:05.103812+00 |
| description | Static file server built with Rust with pre-compressed in-memory caching |
| homepage | https://github.com/radiosilence/nano-web |
| repository | https://github.com/radiosilence/nano-web |
| max_upload_size | |
| id | 1785167 |
| size | 174,924 |
Static file server. Pre-loads and pre-compresses all files at startup for near-zero latency serving.
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-web
Pre-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