Workflow · Backend developers

A debug UI inside your own app

You ship an ASP.NET service. Your team needs to poke at it — not through a separate Electron app behind a sign-up flow.

Two lines of code turn any WebApplication into a Bowire host. Every endpoint your service registers shows up in the sidebar, typed and invokable, without a schema file to maintain.

Wire it in

One NuGet install, one MapBowire(). Bowire reuses your app’s service provider and EndpointDataSource — nothing to configure twice.

Program.cs — that’s the whole setup

Add the package, register the services, map the endpoint. The browser UI mounts at /bowire and picks up every protocol plugin you have installed.

builder.Services.AddBowire();
builder.Services.AddBowire<BowireGrpcProtocol>();
builder.Services.AddBowire<BowireSignalRProtocol>();
// ...other plugins

var app = builder.Build();

app.MapBowire();

Hit https://localhost:5001/bowire and the sidebar already has your services in it. gRPC via Server Reflection, REST via your OpenAPI endpoint, SignalR hubs from the endpoint data source, GraphQL via introspection — all at once.

Read the embedded-mode docs →
Bowire first-run view — sidebar populated with discovered services seconds after the embedded MapBowire() call Bowire first-run view — sidebar populated with discovered services seconds after the embedded MapBowire() call

Every protocol, one sidebar

Your service probably speaks more than one protocol already. Bowire lists everything in a single tree — gRPC method next to SignalR hub next to REST endpoint.

Streaming views, duplex channels, binary frames

Invoke any method, watch the response render in the right pane — or open a persistent channel for long-running duplex work.

gRPC server-stream, client-stream, and duplex show up as the same Wireshark-style message list. SignalR invokes render inline, streams open a duplex channel. Raw WebSocket? Text + binary frame editor. MQTT subscribe? Topic tree with QoS. You never leave the sidebar + response pane pattern — the UI adapts per protocol, not per tool.

All call types on the feature tour →
Streaming response pane — append-only frame list on the left, detail on the right Streaming response pane — append-only frame list on the left, detail on the right

Hot reload — no restart after a route change

Add a new method to a service, save, re-run. The next discovery tick picks it up; you never hit refresh.

Bowire polls discovery every few seconds against every configured URL. A new gRPC method, a new SignalR hub handler, a new REST route — shows up within a tick without anyone disconnecting or re-uploading a schema. Cuts the inner dev loop from “change, rebuild, reconnect, click” down to “change, rebuild, click.”

Auto-discovery in detail →
Bowire sidebar showing services discovered across multiple protocols Bowire sidebar showing services discovered across multiple protocols

Debug, measure, share

Inline auth, per-environment variables, perf smoke tests, recordings. Everything a backend dev needs to reproduce a bug or confirm a fix.

Record — send to the bug tracker as a repro

Click record, reproduce the bug, click stop. You have a file that replays the exact same calls against any environment.

Recordings capture request, response, status, timing, metadata across every protocol. Replay against another environment to check drift, or against a colleague’s laptop to confirm the fix landed. Convert the recording into test assertions for CI, or export as HAR to attach to a ticket.

Record & replay in detail →
Recording manager — timeline of captured calls with per-step pass/fail markers Recording manager — timeline of captured calls with per-step pass/fail markers

Performance smoke test, right in the pane

Repeat any call 500× and watch P50 / P90 / P99 render live. No k6 setup.

Exact-enough for “did my change regress this endpoint?” — not a replacement for proper load testing, but enough to spot a 10× slowdown before it hits staging. Export the call as k6 or vegeta when you do need a proper soak test.

Performance testing in detail →
Performance graph — latency histogram with P50 / P90 / P99 percentiles Performance graph — latency histogram with P50 / P90 / P99 percentiles

Ready to embed it?

Two-line setup, zero schema files, every protocol your service already speaks.

Go to the embedded-mode docs