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
- Discovery — enumerate services / methods / topics / events from the target
- Invocation — send a request and return the response (or the stream)
- 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.