Protocol Guides

Bowire ships with ten first-party protocol plugins plus five sibling plugins (Storm, Kafka, DIS, UDP, Akka.NET) that live in their own NuGet packages and install via bowire plugin install. Each implements IBowireProtocol and auto-registers at startup. Install only the ones you need.

First-party protocols

Protocol Package Discovery Call types
gRPC Kuestenlogik.Bowire.Protocol.Grpc Server Reflection · .proto upload Unary, Server / Client / Bidi streaming
REST Kuestenlogik.Bowire.Protocol.Rest OpenAPI 3 / Swagger 2 · IApiDescriptionGroupCollectionProvider Request / response
GraphQL Kuestenlogik.Bowire.Protocol.GraphQL Schema introspection · SDL upload Query, Mutation, Subscription
SignalR Kuestenlogik.Bowire.Protocol.SignalR Endpoint metadata scan Invoke, Server streaming, Duplex
WebSocket Kuestenlogik.Bowire.Protocol.WebSocket Manual (no inherent discovery) Duplex with text / binary frames
SSE Kuestenlogik.Bowire.Protocol.Sse Attribute · manual registration Server streaming
MQTT Kuestenlogik.Bowire.Protocol.Mqtt Topic subscribe / publish (MQTT 3.1.1, 5.0 via MQTTnet) Pub / Sub, Request / Response
Socket.IO Kuestenlogik.Bowire.Protocol.SocketIo Manual (namespace / event) Duplex with ack
OData Kuestenlogik.Bowire.Protocol.OData CSDL metadata endpoint Request / response
MCP Kuestenlogik.Bowire.Protocol.Mcp Wraps other protocols as MCP tools Unary (tool invocation)

Sibling plugins

These ship from their own repos / NuGet packages on independent release cadences. Install via the CLI:

Protocol Package Discovery Call types
Storm Kuestenlogik.Bowire.Protocol.Storm Cluster service · pending native admin API Consume (ServerStreaming), Produce (Unary)
Kafka Kuestenlogik.Bowire.Protocol.Kafka IAdminClient.GetMetadata Consume (ServerStreaming), Produce (Unary)
DIS Kuestenlogik.Bowire.Protocol.Dis Mock-emit only (replay path) UDP-multicast PDU bytes
UDP Kuestenlogik.Bowire.Protocol.Udp URL-bind any UDP endpoint Datagram listener (multicast / broadcast / unicast)
Akka.NET Kuestenlogik.Bowire.Protocol.Akka DI-resolved ActorSystem (embedded only) Mailbox tap (server-streaming Tap/MonitorMessages)

Writing your own: see Custom protocols.

Architecture at a glance

graph LR
    A[Bowire Core] --> B[gRPC]
    A --> C[REST]
    A --> D[GraphQL]
    A --> E[SignalR]
    A --> F[WebSocket]
    A --> G[SSE]
    A --> H[MQTT]
    A --> I[Socket.IO]
    A --> J[OData]
    A --> K[MCP]
    A --> M[Storm]
    A --> N[Kafka]
    A --> O[DIS]
    A --> P[UDP]
    A --> Q["Akka.NET"]
    A --> L[Custom plugins]
    style A fill:#6366f1,color:#fff
    style L stroke-dasharray: 5 5

What every plugin provides

  1. Discovery — enumerate services / methods / topics / events from the target
  2. Invocation — send a request and return the response (or the stream)
  3. Streaming / channels — where the protocol supports it, yield messages as they arrive

The UI stays protocol-agnostic: the same sidebar, request editor, and response viewer renders every plugin's output. Protocol-specific details (e.g. gRPC metadata, SignalR hub methods, MQTT topic wildcards) show up as extra fields in the request form only when the active plugin declares them.

Multiple protocols in one session

Every installed plugin runs simultaneously. A single Bowire instance against a service that speaks gRPC, REST, and SignalR shows all three in the sidebar with per-protocol badges. Filter to a single protocol via the command palette or the sidebar protocol pills.