finds.dev← search

// the find

sammhicks/picoserve

★ 388 · Rust · MIT · updated Jul 2026

An async no_std HTTP server suitable for bare-metal environments, heavily inspired by axum

picoserve is a no_std async HTTP server for embedded Rust, designed for microcontrollers like the Raspberry Pi Pico W running embassy. It brings axum-style routing and extractors to bare-metal environments where you have no allocator and no OS. If you're building a web-accessible gadget in Rust, this is the most ergonomic option in that space right now.

The axum-inspired API is a real win — handler functions that take typed extractors and return IntoResponse work the same way you'd expect from the desktop world, which drastically reduces the learning cliff for embedded newcomers. Zero heap usage is not a gimmick; the type-level routing construction means the entire router can live in static memory, which matters a lot when your total RAM is 264KB. WebSockets and Server-Sent Events on a microcontroller are genuinely impressive inclusions. The example set is thorough — graceful shutdown, chunked responses, custom extractors, SSE with JS clients — and they target real embassy/Pico W hardware, not just mocked scenarios.

The README itself warns against direct internet exposure, which is a significant caveat for something billing itself as an HTTP server — if you need a reverse proxy anyway, the embedded-specific constraints matter less. URL-encoded string parsing is capped at 1024 bytes with no way to raise it, which will silently truncate large form payloads in ways that are hard to debug. The serialization contract — that the same value must serialize identically across multiple calls — is a sharp edge that's easy to violate and produces wrong Content-Length headers with no runtime error. Pre-1.0 with breaking API changes still happening means you can't treat your Pico firmware and this library as a stable pair for a product.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →