Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
FlashLin is a single-binary Rust web server: HTTP/1.1, HTTP/2 and optional HTTP/3, reverse proxy and WebSocket support, the RealWeb realtime hub, supervised Node.js and Python apps, automatic HTTPS, i
Developer toolsRust · HTMLGitHub @endurasolutionOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
FlashLin — a single-binary Rust web server combining Nginx's reverse-proxy power, Apache's PHP flexibility and Caddy's zero-friction TOML config. HTTP/1.1, HTTP/2, optional HTTP/3, automatic HTTPS.
Translation pending
Loading the full README.
Read the full README ↗Nginx's reverse-proxy power, Apache's PHP hosting flexibility, and Caddy's zero-friction TOML setup — in a single, memory-safe Rust binary. Version 3.1 adds RealWeb, a built-in realtime hub: authenticated channels, resume after reconnect and backend publishing over HTTP, alongside plain WebSocket proxying. Version 3.0 added supervised Node.js and Python apps. See the roadmap below for ongoing hardening work.
Website · Documentation · Docker Hub
FlashLin is a single-binary web server built on Tokio + Hyper, with optional HTTP/3 through Quinn. Its feature set includes capabilities familiar from other servers:
| FlashLin does this | Like |
|---|---|
| Reverse proxy, round-robin upstream routing | Nginx |
| PHP-FPM / FastCGI hosting, virtual hosts | Apache |
| In-memory response cache | OpenLiteSpeed |
| Simple TOML config, zero-friction setup | Caddy |
Memory-safe, zero unsafe code | Rust |
| Feature | Status |
|---|---|
| HTTP/1.1 + HTTP/2 (Tokio + Hyper) | ✅ |
| HTTP/3 over QUIC + TLS 1.3 | ✅ Optional experimental http3 build; setup and limits |
| TLS / HTTPS (rustls — no OpenSSL required) | ✅ |
| PHP-FPM + FastCGI (full protocol) | ✅ |
| Reverse proxy | ✅ |
Virtual hosts (per-domain .toml files) | ✅ |
| In-memory response cache (RAM, with TTL) | ✅ |
| Gzip + Brotli compression | ✅ |
| ETag / Last-Modified / 304 Not Modified | ✅ |
| Security headers (CSP, HSTS, X-Frame, …) | ✅ |
| Rate limiting (req/min + burst) | ✅ |
| IP allow / deny lists | ✅ |
| Path traversal prevention | ✅ |
| Dotfile + sensitive file blocking | ✅ |
Per-directory config (.flashweb files) | ✅ |
.htaccess redirect / rewrite rules | ✅ |
nginx.conf redirect rules | ✅ |
| Prometheus metrics endpoint | ✅ |
| Connection overload limit (HTTP 503) | ✅ |
| Graceful shutdown | ✅ |
| Structured JSON logging | ✅ |
| Per-virtual-host cache and rate-limit state | ✅ v2 |
| Static directory mounts | ✅ v2 |
.flashweb directory ACLs and error pages | ✅ v2 |
| Configured Tokio worker count and header-read limits | ✅ v2 |
| Single binary — no runtime dependencies | ✅ |
| Hot config reload | ✅ Opt-in --watch, validated snapshots |
| WebSocket proxy (HTTP/1 upgrades) | ✅ v2 |
| RealWeb realtime hub: authenticated channels, resume after reconnect, acks, presence, backend publish |
curl -fsSL https://flashlin.com/install_linux.sh | bash
Tested with Rust 1.95; use a current stable toolchain:
rustup update stable
# HTTP-only binary
cargo build --release
# With TLS/HTTPS support
cargo build --release --features tls
# All three protocols, plus automatic certificates
cargo build --release --locked --features acme,http3
Binary is at target/release/flashlin.
HTTP/3 also needs [http3] enabled = true, TLS certificates and an open UDP port.
See the protocol guide and example config.
# Pull the public image
docker pull endurasolution/flashlin:latest
# Run (HTTP)
docker run -d -p 80:80 \
-v ./config/server.toml:/etc/flashlin/server.toml:ro \
-v ./public:/var/www/html:ro \
endurasolution/flashlin:latest
# Run (HTTPS)
docker run -d -p 80:80 -p 443:443 \
-v ./config/server.toml:/etc/flashlin/server.toml:ro \
-v ./public:/var/www/html:ro \
-v ./certs:/etc/flashlin/certs:ro \
endurasolution/flashlin:latest
See dockerflashlin/README.md for the full Docker + docker-compose guide.
# 1. Clone
git clone https://github.com/endurasolution/flashlin.git
cd flashlin
# 2. Build
cargo build --release
# 3. Run (uses server.toml in current directory)
./target/release/flashlin
# 4. Custom config path
./target/release/flashlin /etc/flashlin/server.toml
Open http://localhost:80.
All config lives in a single server.toml. See server.toml for the full reference with every option documented inline.
[server]
host = "0.0.0.0"
port = 80
root = "./public"
[[routes]]
path = "/"
root = "./public"
index = "index.html"
This is the beginning of the README. Read the rest at the original. Read the full README ↗
| ✅ New; guide |
| HTTP QUERY method (RFC 10008) | ✅ Application/proxy transport, body validation and safe failover |
| Streaming files, byte ranges, precompressed assets | ✅ v2 |
| Pooled HTTP/HTTPS upstreams and streamed responses | ✅ v2 |
| Round-robin upstreams and passive failover | ✅ v2 |
| Auto TLS / ACME (Let's Encrypt) | ✅ Optional acme build; deployment validation pending |
Supervised Node.js / Python / any-command apps ([[apps]]) | ✅ v3: auto-restart with backoff, health checks, multi-instance load balancing; guide |
flashlin apps status and restart commands | ✅ v3 |
Per-client connection limit (max_connections_per_ip) | ✅ v3 |
| IPv6 /64-aware rate limiting | ✅ v3 |
| Control endpoint hardening (proxy-header refusal, optional token) | ✅ v3 |