Poem
Set up debugger in a Rust project using the Poem framework.
Last updated March 19, 2026
Rust + Poem
This guide covers adding debugger to a Rust API using Poem.
| Feature | Support |
|---|---|
| Server console | Yes |
| Server errors | Via tracing |
| HTTP requests | Yes |
| Browser script injection | Manual |
Prerequisites
- Rust 1.75 or later
Install
Add the crate to your Cargo.toml:
[dependencies]
ephem-debugger = { version = "0.1", features = ["poem"] }
Set up
use poem::{Route, Server, get, handler, listener::TcpListener};
use ephem_debugger::poem_middleware;
use tracing_subscriber::prelude::*;
#[handler]
fn index() -> &'static str { "hello" }
#[tokio::main]
async fn main() {
let (middleware, capture_layer) = poem_middleware::layers(3000);
tracing_subscriber::registry()
.with(capture_layer)
.with(tracing_subscriber::fmt::layer())
.init();
let app = Route::new()
.at("/", get(index))
.with(middleware);
Server::new(TcpListener::bind("0.0.0.0:3000"))
.run(app)
.await
.unwrap();
}
Verify
cargo run
npx dbg statuspnpm dlx dbg statusbun x dbg statusyarn dlx dbg statusnpx dbg server consolepnpm dlx dbg server consolebun x dbg server consoleyarn dlx dbg server consoleBrowser support
The middleware automatically handles /_/d.js and /_/d POST
routes. To enable browser capture, add these script tags before
</body> in your HTML templates:
<script>window.__DEBUGGER_INGEST_URL__="/_/d";</script>
<script src="/_/d.js" defer></script>
Query browser data with:
npx dbg browser consolepnpm dlx dbg browser consolebun x dbg browser consoleyarn dlx dbg browser consolenpx dbg browser errorspnpm dlx dbg browser errorsbun x dbg browser errorsyarn dlx dbg browser errorsnpx dbg browser networkpnpm dlx dbg browser networkbun x dbg browser networkyarn dlx dbg browser networknpx dbg browser storagepnpm dlx dbg browser storagebun x dbg browser storageyarn dlx dbg browser storageFull example
See the complete working example at examples/rust/poem.



