Bowire

All Your Protocols. One UI. One Setup.

The multi-protocol API workbench. Discover, invoke, record, replay, mock, scan.
Across 20+ protocols in the plugin family: a dozen bundled, the rest one bowire plugin install away, plus any custom one you ship.
Embedded or Standalone. UI, CLI or AI agent.
No cloud, no account, free and open source.
Built for API testing with even more swag than Swagger.

Ship Bowire: skip to the dock ↓

See it in action

Discovery, request, response, switch protocol — a full round-trip against the BowireDemo sample with gRPC, SignalR, REST, and WebSocket.

A single tool, every protocol — gRPC, REST, GraphQL, SignalR, MCP, SSE, WebSocket, MQTT, Socket.IO, OData, Surgewave, Kafka, DIS, UDP. No browser plugin, no separate desktop app, no protocol-specific UI quirks.

A single Bowire for every situation

Bowire understands your setup and shows the most useful tools and guidance depending on your task — from first-run welcome through single request and daily streaming workflows to recording and replays.

Walk the deck: tour every feature →

Straight into the water

From zero to running in three steps. Pick the boat — install + run snippets tailor themselves.

Which boat are you launching today?

Different rig: see every download →

Why Bowire?

What makes Bowire different from Postman, Insomnia, Scalar, and other API tools.

20+

Protocols in One Workbench

  • gRPC
  • REST
  • SOAP
  • GraphQL
  • SignalR
  • WebSocket
  • SSE
  • MQTT
  • AMQP
  • NATS
  • Socket.IO
  • OData
  • MCP
  • JSON-RPC
  • Surgewave
  • Kafka
  • Pulsar
  • DIS
  • UDP
  • AsyncAPI
  • Akka.NET
  • TacticalAPI
  • Custom

Built for every protocol you need plus your own via Bowire's plugin API — a dozen bundled in the standalone install, the rest one bowire plugin install away.

No schema files to maintain — each protocol auto-discovers through its native mechanism (e.g. reflection, OpenAPI, introspection).

Bonus for Embedded Mode: Bowire wires the server-side prerequisites in for you.

Apache 2.0

Free and open source — and staying that way

Every feature on this page is in the free tier, because there is no other tier. Clone it, fork it, embed it in commercial products, audit the code, hack on it — no asterisks, no seat count, no "commercial use requires…".

Hull-to-hull: see the comparison table ↓

Built for modern APIs

Everything you need to discover, test, record, and debug your services across every protocol.

Discover & build

Auto-discovery with hot reload

Zero manual configuration. Drop in a protocol plugin and Bowire uses its native mechanism to enumerate services — then re-scans every few seconds so new endpoints show up without a refresh or restart.

All call types

Unary, server streaming, client streaming, duplex channels, REST verbs, GraphQL queries / mutations / subscriptions, SignalR hub methods, raw WebSocket frames — every pattern in one UI.

Form & JSON

Switch between auto-generated form fields (typed, validated, nested) and raw JSON editing per request. Schema-driven validation catches errors before they hit the wire.

Test & measure

Test assertions

Newman-style assertions that auto-run after every successful response. Eleven operators (eq, ne, gt, contains, matches, type, …). Pass / fail badges right in the response pane.

Performance graphs

Repeat any call N times, watch the latency histogram + timeline render in real time. P50 / P90 / P99 / P99.9 percentiles, success rate, throughput. No external load tester needed.

Recorder

Postman Collection-Runner parity. Click record, run a sequence of calls, click stop. Replay with current environment variables, convert into test assertions, or export as HAR for sharing.

Mock server

bowire mock turns any captured recording into a live endpoint — REST, gRPC (unary + streaming + bidi), WebSocket, SSE, SignalR, Socket.IO, MQTT, GraphQL subscriptions. Hot-reload, chaos injection, capture-on-miss.

Security scan

bowire scan against any HTTP-class target with Bowire's own templates plus the 8000+ Nuclei templates via --nuclei. Findings emit as SARIF 2.1.0 — straight into GitHub Code Scanning, GitLab, or Azure DevOps.

Fuzz

Schema-aware field-level fuzzer. bowire fuzz knows not to throw SQL-injection at a latitude (lat) field; image.bytes gets magic-byte mutation, not XSS strings. Categories: sqli / xss / pathtrav / cmdinj with baseline-diff oracle.

Design-time lint

Rules that read the API surface itself — PII in responses, unbounded collections, missing versioning — before anyone calls it.

Contract matrix

Pact-style consumer contracts, rolled up into a consumer × provider grid you can read at a glance.

One rollup

Lint, contract, benchmark, scan and test reports read into one row per service — the same shape in the UI, the CLI and MCP.

Connect & scale

Auth helpers

Bearer, Basic, API Key (header or query), JWT (HS / RS / ES), OAuth 2.0 client_credentials + authorization_code with PKCE, custom token endpoint with auto-refresh, AWS Signature v4 — per environment.

Environments & variables

Postman-style {{var}} substitution in URLs, headers, and bodies. Switch between Dev / Staging / Prod, or connect to several servers in parallel — per-URL status indicators, per-service origin tagging.

CLI & standalone tool

bowire list, describe, call for scripting against any server. Or run as a global tool with the browser UI — every protocol plugin built in. No host code changes required.

Secrets from the OS keyring

Read credentials from the platform's own credential store instead of a file next to your workspace.

Power tools

Vim-style keyboard navigation

j/k to hop methods, f to flip form/JSON, r to repeat, t to cycle themes, Ctrl+Enter to execute. Power users never touch the mouse.

Command palette

Press / anywhere to search methods, jump environments, apply protocol filters, or pin a name filter. Recently-used methods surface when the query is empty.

Click-to-chain responses

Hover any value in a response — click it and paste {{prev.path.to.value}} straight into the next request's body or URL. Works in JSON, tree, and streaming views.

A map you can read

Trajectories per entity, contacts told apart by their own identity, and a time cursor that rewinds the stream you already collected.

Walk the deck: tour every feature →

Multi-protocol by design

One UI for every protocol your service stack speaks.
Each protocol is a plugin — install only what you need.

gRPC

Server Reflection, proto schema browser, all four streaming types (unary / server / client / duplex) over native HTTP/2 or gRPC-Web. Auto-generated request templates from protobuf definitions, plus HTTP transcoding for methods with google.api.http annotations.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Grpc
$ bowire --url <url> built in

REST

OpenAPI / Swagger document discovery with full path / query / header / body parameter forms. AWS Sig v4 signing built in. Drop in any swagger.json as a fallback when introspection isn't available.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Rest
$ bowire --url <url> built in

GraphQL

Schema introspection via __schema, visual selection-set picker for picking which fields you want returned, support for queries, mutations, and graphql-transport-ws subscriptions.

$ dotnet add package Kuestenlogik.Bowire.Protocol.GraphQL
$ bowire --url <url> built in

SignalR

Hub auto-discovery via endpoint metadata, method invocation with parameter type reflection, real-time bidirectional channels with the same UI as gRPC duplex streaming.

$ dotnet add package Kuestenlogik.Bowire.Protocol.SignalR
$ bowire --url <url> built in

MCP

AI agent integration for Claude Desktop, Cursor, and Copilot. Discovered methods are exposed as MCP tools with JSON Schema input. Bidirectional MCP server browser for inspecting tools published by other agents.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Mcp
$ bowire --url <url> built in

SSE

Server-Sent Events — register endpoints via attribute or fluent API, watch live event streams render in the response pane. The same plugin powers GraphQL subscriptions and MCP server-push.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Sse
$ bowire --url <url> built in

WebSocket

Raw WebSocket frame editor with text + binary support, sub-protocol selection, per-frame type toggle. Open a channel, send a frame, watch responses arrive — same UI as the duplex gRPC and SignalR channels.

$ dotnet add package Kuestenlogik.Bowire.Protocol.WebSocket
$ bowire --url <url> built in

MQTT

Broker connect over TCP or WebSocket, topic subscribe with wildcards, retained-message inspection, QoS 0/1/2 publishes. Bidirectional channel reuses the same Wireshark-style stream pane as gRPC and SignalR.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Mqtt
$ bowire --url <url> built in

NATS

Built on the official NATS.Net 2.x client. Three discovery sources fan out from one shared connection: subject sampling on the > wildcard, JetStream stream enumeration, and the Services API via $SRV.PING broadcast. Pub / sub / request reuse the same Wireshark-style stream pane.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Nats
$ bowire plugin install Kuestenlogik.Bowire.Protocol.Nats

SOAP

WSDL 1.1 discovery (operations → methods, port types → services), SOAP 1.1 + 1.2 envelopes, automatic Fault detection. No WCF or SoapCore dependency — the wire is hand-rolled XML over HTTP, so the plugin works on every .NET LTS.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Soap
$ bowire --url <url> built in

JSON-RPC

Generic JSON-RPC 2.0 client over HTTP. Discovery via OpenRPC's rpc.discover reflection method; servers that don't advertise OpenRPC still work with a freeform fallback so you can invoke any method by name.

$ dotnet add package Kuestenlogik.Bowire.Protocol.JsonRpc
$ bowire --url <url> built in

Apache Pulsar

Built on the Apache-maintained DotPulsar 3.5.x client. Topic discovery via Pulsar's HTTP admin API; produce (Unary) and subscribe (ServerStreaming) over the binary protocol with an exclusive subscription that auto-acks so the cursor advances.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Pulsar
$ bowire plugin install Kuestenlogik.Bowire.Protocol.Pulsar

AMQP

RabbitMQ, ActiveMQ, Solace, Azure Service Bus — one plugin covers both AMQP 0.9.1 and AMQP 1.0. URL scheme picks the wire: amqp:// for 0.9.1, amqp1:// for 1.0. Discovery uses the RabbitMQ Management HTTP API; consume streams render in the same Wireshark-style pane.

$ dotnet add package Kuestenlogik.Bowire.Protocol.Amqp
$ bowire plugin install Kuestenlogik.Bowire.Protocol.Amqp

Socket.IO

Namespace + room aware client, event emit / ack with JSON payloads, auto-reconnect with exponential backoff, binary event support. Works against any v2/v3/v4 Socket.IO server.

$ dotnet add package Kuestenlogik.Bowire.Protocol.SocketIO
$ bowire --url <url> built in

OData

CSDL metadata discovery, entity-set browser with typed filters ($filter, $orderby, $expand), batch requests, navigation-property follow-through. Works with ASP.NET's Microsoft.AspNetCore.OData.

$ dotnet add package Kuestenlogik.Bowire.Protocol.OData
$ bowire --url <url> built in

AsyncAPI

Discovery source — not a wire. Drop in an asyncapi.yaml or .json document (2.x + 3.0); Bowire walks channels, operations, and per-message overloads, then dispatches each call through the wire plugin its bindings: block declares. Today that means MQTT, Kafka, AMQP, WebSocket, and HTTP — every binding resolves to a shipped first- or third-party plugin. NATS follows.

$ dotnet add package Kuestenlogik.Bowire.AsyncApi

Surgewave

Küstenlogik's Surgewave broker — native protocol via the Kuestenlogik.Surgewave.Client SDK or Kafka-compatible wire (?protocol=kafka). Topic browse, produce, server-streaming consume, in-process tap via surgewave://embedded.

$ bowire plugin install Kuestenlogik.Bowire.Protocol.Surgewave

Kafka

Apache Kafka via Confluent.Kafka. Topic discovery via the Admin API, produce / consume with the standard JSON envelope, mTLS + SASL auth, plus optional ?schema-registry=… for live Avro decode of consumed messages.

$ bowire plugin install Kuestenlogik.Bowire.Protocol.Kafka

DIS

IEEE 1278 Distributed Interactive Simulation. UDP multicast listener for live PDU traffic, structured rendering of EntityState / Fire / Detonation / Collision PDUs, on-wire hex dump for binary inspection. Standalone-mode plugin for simulation environments.

$ bowire plugin install Kuestenlogik.Bowire.Protocol.Dis

UDP

Raw UDP datagram listener — feed any UDP source into the Bowire streaming pane. Auto-detects UTF-8 text payloads, falls back to base64 + canonical hex dump for binary. Sibling to the DIS plugin via the same IBowireMockEmitter contract.

$ bowire plugin install Kuestenlogik.Bowire.Protocol.Udp

Akka.NET

Live tap on any Akka.NET ActorSystem — the BowireTapMailbox wraps the standard mailbox and streams every Tell into the workbench. Embedded mode only; opt in globally via the default-mailbox swap or per-actor with Props.WithMailbox.

$ bowire plugin install Kuestenlogik.Bowire.Protocol.Akka

TacticalAPI

Rheinmetall's TacticalAPI — gRPC interface for situational-awareness systems. Bundled schema means the Situation service tree shows up in the sidebar even without Server Reflection. v1.0: discovery + typed unary CRUD + server-streaming pump all wired through, mTLS client-cert via metadata for the field-default deployment shape, recording-replay via TacticalApiMockEmitter.

$ dotnet add package Kuestenlogik.Bowire.Protocol.TacticalApi
$ bowire plugin install Kuestenlogik.Bowire.Protocol.TacticalApi

Coming soon

Surgewave tap-stream subscription, Connect (Buf) phases 1 + 3 (unary + bidi-streaming over HTTP/2). OTLP receive-side has already shipped as a first-party plugin (Kuestenlogik.Bowire.Protocol.Otlp). More on the roadmap →

Planned plugins

Your Protocol

Scaffold a new plugin with the bowire-plugin template — implements IBowireProtocol, ships as a NuGet package with <PackageType>BowirePlugin</PackageType>, picked up by assembly scanning at startup.

$ dotnet new install Kuestenlogik.Bowire.Templates
$ dotnet new bowire-plugin --name MyProtocol

Want to ship one? Join the crew

Built for your workflow

Bowire isn't a Postman replacement — it's a workbench for the situations where Postman doesn't fit. Pick the workflow that sounds most like yours.

Backend developers

embedded mode · zero account walls

You're building an ASP.NET service and you want a debug UI inside your app for your team and your users — not a separate Electron app behind a sign-up flow. Add app.MapBowire(), ship the binary, every endpoint is browsable at /bowire.

→ gRPC reflection · OpenAPI · GraphQL introspection · SignalR endpoint scan · AsyncAPI discovery

API integration testers

recorder · environments · assertions

You're verifying that an external API behaves the way the docs claim. Click Record, run a sequence of calls, click stop. Replay against Dev / Staging / Prod with environment-variable substitution. Convert the captured responses into regression assertions with one click.

→ Postman Collection-Runner parity · HAR export · Newman-style assertions

AI agent builders

MCP adapter · Claude / Cursor / Copilot

You're wiring an AI agent up to internal services. Bowire's MCP adapter exposes every discovered method as an MCP tool with JSON Schema input — without writing the MCP server boilerplate yourself. Drop the URL into your agent config and your assistant has typed access to your service surface.

--enable-mcp-adapter · auto-tool generation · streaming support

Documentation teams

interactive docs · live examples · code export

You're writing API docs and you want every example to be runnable without a curl-paste-and-pray loop. Embed Bowire next to your written guides — readers click a method, edit the JSON, hit Send, see the actual response. Export the call as curl, grpcurl, or a typed C# / TypeScript snippet.

→ Live examples · per-language code export · embedded in your own docs site

Security engineers

scan · SARIF · intercepting proxy · templates

You're auditing an API surface that spans gRPC, GraphQL, MQTT, SignalR — protocols where Burp Suite and ZAP stop being useful. Recordings double as vulnerability templates; bowire scan replays each one against the target, emits SARIF for GitHub Code Scanning / GitLab / Azure DevOps, and the intercepting proxy with HTTPS MITM captures live traffic the way you're used to.

bowire scan · SARIF 2.1.0 · CA-trusted proxy · JWT toolkit

DevOps & platform engineers

CI/CD container · scan · mock · fuzz

You're wiring the CI/CD pipeline. Bowire ships as a single binary + Docker image that drops into any runner — bowire scan as a SAST gate, bowire mock spun up as an integration-test fixture for ephemeral environments, bowire fuzz as a security-regression step. Real exit codes, native SARIF output, no translation layer between the runner and your Code-Scanning surface.

bowire scan · bowire mock · bowire fuzz · GitHub Actions / GitLab CI / Azure DevOps

For another workflow: join the crew

Pick the right tool

Postman, Scalar, Swashbuckle, Insomnia, Bruno — every API tool has its sweet spot.
Here's where Bowire lands.

Bowire .NET + multi-protocol deployment

Shell tools (curl, HTTPie) aren’t listed — Bowire exports every call as a curl snippet when you need one.

Pick a tool above to see when it fits better than Bowire — and when Bowire is the right call.

Dig into the details

The positioning above is the quick read. The table below is the exhaustive top-5-competitors check — useful when you're evaluating Bowire for a specific project.

  • Full support
  • Partial / limited (hover for details)
  • Not supported
Bowire Postman Scalar Swashbuckle Insomnia Bruno
20+ 7 1 1 5 4
gRPC
REST / HTTP
SOAP
GraphQL partial
SignalR
MCP client only
JSON-RPC
SSE
WebSocket
MQTT
AMQP
NATS
Socket.IO
OData
AsyncAPI partial
Surgewave
Kafka
Apache Pulsar
DIS (IEEE 1278)
UDP (raw datagrams)
Akka.NET (mailbox tap)
TacticalAPI (situational awareness)
OTLP (OpenTelemetry listener)
Custom protocol plugins
manual OpenAPI OpenAPI manual manual
gRPC Reflection
OpenAPI / Swagger import
GraphQL introspection
Proto file loading
Service catalogue (Consul / Kubernetes) paid cloud
Schema drift watch paid cloud
Embedded in ASP.NET app
Standalone tool
CLI mode
Enterprise (paid) Enterprise (paid)
Docker image
Compose manifest
Kubernetes / Helm planned manual
Air-gapped install Enterprise (paid) Enterprise (paid)
SSO / SCIM Enterprise (paid) Enterprise (paid) Enterprise (paid)
Native .NET via Scalar.AspNetCore
Collections partial
Record session
Replay against env
HAR export
Convert to test assertions via Inso CLI
Correlated multi-protocol timeline
Native export format .bwr Collection JSON Insomnia JSON .bru
Replay as mock server Free tier Free tier (1k req/mo)
Mock from schema (no recording) examples REST only
Mock engine depth basic basic
Multiple duplex channels one at a time one at a time one at a time
paid cloud
Branching (if / else) paid cloud
Loops paid cloud
Delays / wait steps paid cloud
Variable forwarding paid cloud
Per-step assertions paid cloud
Performance / load testing
CI test runner (JUnit / SARIF / HTML) Inso CLI
Contract testing (consumer / provider) schema checks
Snapshot testing
Data-driven test runs Inso CLI CLI
Endpoint test coverage
Security scanning ✓ OWASP API Top 10 secrets + governance
Out-of-band (OAST) detection
API monitoring / scheduled probes ✓ local cloud
Traffic interception / reverse proxy capture only
AI assistant (local-first, BYOK) cloud
Local-first, no account account required cloud-hosted
Git-native workspace Git Sync (cloud)
internal ✓ / public via Registry Public Workspaces Swagger UI partial
Hosted docs page Kong portal
Custom domain Enterprise (paid) Pro (paid)
Try-It-Out widget via client
API versioning via Surgewave Registry Pro (paid) manual
Catalog / search ✓ built-in Public API Network
✓ every protocol REST only REST docs only client only
Tools capability
Resources capability docs-as-resources
Prompts capability
stdio transport client only
Streamable HTTP transport
✓ 15 tools
Recording start / stop
Environment list
Replay execute
Mock spin-up
Collection / workspace mgmt
License Apache 2.0 Proprietary MIT MIT Apache 2.0 (core only!) MIT
Price Free Freemium Freemium Free Freemium Free

Comparison reflects the public feature matrix as of 2026-08. Postman, Scalar, Swashbuckle, Insomnia and Bruno are excellent tools in their own niches — Bowire is designed for the .NET ecosystem and devs who want every protocol in one place, embeddable into their own service, with zero account walls.

Spotted something wrong? Tools move fast — if we’ve misrepresented a feature or missed one that has since shipped, please open an issue and we’ll update the matrix.

Below decks: tour every feature →

On course

A short look at what just landed — and what’s on the way.

The Security pillar v2.3

bowire scan runs the full OWASP API Security Top 10 — 10/10, with protocol-specific probes for GraphQL, gRPC, WebSocket, SSE, MQTT and MCP — plus an opt-in active attack tier and a complete out-of-band (OAST) chain with a self-hosted bowire oast serve catcher. The Monitoring rail runs saved recordings as scheduled health probes with Slack / PagerDuty / OTLP signalers.

The Dev pillar v2.4

Mock-from-schema without a recording, the schema-watch diff that shows what moved in your API while you were away, side-by-side service compare across two versions or deployments, the correlated multi-protocol timeline for recordings — and CLI / UI / MCP parity, so every capability is reachable from all three.

The CI pillar v2.5

Design-time lint reads the discovered surface for design smells — PII in responses, unbounded collections, missing versioning. Latency gates and a contract matrix turn a run into a pass/fail a pipeline can act on, one rollup puts every signal on one page, and the workbench arrives in your editor as a VS Code extension.

Multi-tenancy v2.6

One Bowire, several authenticated passengers. Point it at any OIDC provider and every identity gets its own slot on disk — workspaces, recordings, collections, plugin settings — with SCIM 2.0 provisioning keeping the roster in step and per-user plugins so one person’s install is not everybody’s.

The map you can read v2.7

The map widget stops being a scatter of dots: trajectory LineStrings join an entity’s frames into a path, per-entity grouping tells thirteen contacts apart by their own identity rather than merging them, and a time cursor with playback rewinds a stream you already collected. Alongside it, the gRPC plugin reaches a server with Server Reflection switched off — the state Bowire’s own scanner recommends — and the scanner learns three failures that survive every “is it public?” check.

Nothing on this list is a commitment — Bowire is built in the open, and priorities shift with what users actually hit in practice. If something here matters to you, file an issue or start a discussion.

Chart the course: roadmap on GitHub →

Join the crew

Bowire is Apache 2.0 and developed publicly on GitHub. Issues, pull requests, and the roadmap live in one place — all visible, all welcome.

All hands on deck: every community channel →

No paid tier, no account wall, no telemetry. Fork it, audit it, embed it.

Set sail. Discover APIs.