RPC Dart

Transport-agnostic RPC framework for Dart. Write a contract once and run it in process, over HTTP/2 with the real gRPC wire, HTTP/1.1, WebSocket, isolates or a WebAssembly bridge. Unary and all three streaming shapes, deadlines, cancellation, flow control and resource limits included.

Install

dart pub add rpc_dart

Start with the rpc_dart README. Each transport package's README covers its own setup.

Using an AI coding agent

rpc_dart ships an Agent Skill: verified reference material for contracts, endpoints, streaming, errors, limits and testing, matched to the version you depend on. Install it into your project:

dart run skills@ get

It goes into .claude/skills/, .agents/skills/ or your agent's equivalent. On an SDK without dart run <package>@, add skills as a dev dependency and run dart run skills get. See the skills CLI.

Packages

rpc_dartCore: contracts, endpoints, streaming, in-process transport
rpc_dart_http2HTTP/2 transport, gRPC wire compatible
rpc_dart_httpHTTP/1.1 transport, unary only
rpc_dart_websocketWebSocket transport, web-safe client
rpc_dart_isolateIsolate and web worker transport
rpc_dart_wasmWebAssembly bridge transport (Flutter)
rpc_dart_generatorContracts generated from annotated interfaces
rpc_dart_frameworkModules, DI, lifecycle, graceful shutdown
rpc_dart_compressionGzip codec, web compatible
rpc_dart_opentelemetryTracing, metrics and logs
rpc_dart_logRemote log collector
rpc_dart_grpc_reflectiongRPC server reflection
rpc_dataData service layer: CRUD, queries, change streams (Postgres, SQLite)
rpc_notifyTopic-based push notifications (Postgres, Redis)
rpc_blobStreamed blob storage (MinIO/S3, SQLite, WebDAV)