Start here

Evaluate Canopy by running one generated RPC path end to end.

The fastest useful test is not reading every design document. Build the primary C++ implementation, run the WebSocket calculator demo, then inspect the IDL and generated proxy/stub code that made the browser call possible.

First evaluation checklist

1. BuildClone Canopy, configure the C++ preset, and run the test suite before judging the API surface.
2. RunStart the WebSocket demo server and exercise Echo, Calculator, Chat, and Video from the browser.
3. InspectRead the calculator IDL and generated client/server code to see what Canopy writes for you.
4. PortDefine one small service from your own system and check whether the generated shape matches your build and deployment constraints.

What to inspect first

The IDLCheck whether the interface captures the service without leaking transport or wire-format decisions into the contract.
The generated proxyLook at how a local-looking call becomes a marshalled remote call.
The generated stubLook at dispatch, deserialization, output parameters, and error-code flow on the server side.
The transport constructionConfirm that TCP, TLS, WebSocket, local, or enclave-oriented paths are selected around the interface rather than inside it.

Where Canopy is different

Compared with gRPC-style APIsCanopy is aimed at C++ object-like interfaces, callbacks, transport choice, and distributed lifetimes rather than only public request/response service APIs.
Compared with hand-written WebSocketsThe IDL and generator keep the browser/client contract tied to the C++ service contract instead of duplicating schemas by hand.
Compared with serializer-only stacksSerialization is only one layer: Canopy also handles proxy/stub generation, transport integration, routing, and remote references.
Compared with local C++ interfacesThe call shape stays familiar while the object can live across a process, network, plugin, or trusted-execution boundary.

Good first use cases

Browser operator panelA C++ service that needs a browser operator panel without a hand-written protocol layer.
Typed plugin boundaryA plugin or child process that should expose a typed interface to a host application.
Confidential-computing prototypeA confidential-computing prototype with a narrow RPC surface at the enclave boundary.
Streaming & one-way eventsA high-throughput callback or one-way event stream where plain request/response is a poor fit.