irpc 1.0.0

A streaming rpc system based on quic
Documentation
# IRPC

A streaming rpc system for iroh

[<img src="https://img.shields.io/badge/github-irpc-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20" >][repo link] [![Latest Version]][crates.io] [![Chat](https://img.shields.io/discord/1161119546170687619?logo=discord&style=flat-square)](https://discord.com/invite/DpmJgtU7cW) [![Docs Badge]][docs.rs] ![license badge] [![status badge]][status link]

[Latest Version]: https://img.shields.io/crates/v/irpc.svg
[crates.io]: https://crates.io/crates/irpc
[Docs Badge]: https://img.shields.io/badge/docs-docs.rs-green
[docs.rs]: https://docs.rs/irpc
[license badge]: https://img.shields.io/crates/l/irpc
[status badge]: https://github.com/n0-computer/irpc/actions/workflows/rust.yml/badge.svg
[status link]: https://github.com/n0-computer/irpc/actions/workflows/ci.yml
[repo link]: https://github.com/n0-computer/irpc

# Goals

See the [module docs](https://docs.rs/irpc/latest/irpc/).

# Feature flags

| Feature | Default | Description |
|---------|---------|-------------|
| `rpc` | yes | Remote transport over noq. Without it, irpc only has in-process channels. |
| `iroh` | yes | Remote transport over iroh. Enables `rpc`. |
| `stream` | yes | Convert channels to [`Stream`] and [`Sink`]. |
| `derive` | yes | The `rpc_requests` macro. |
| `noq_endpoint_setup` | no | Helpers to create noq endpoints, for tests and for rpc on localhost. |
| `varint-util` | no | Varint helpers in `irpc::util`, without `rpc`. |
| `tracing-subscriber-03` | no | Span propagation to the remote, with a layer for `tracing-subscriber` 0.3. [`irpc-opentelemetry`]irpc-opentelemetry enables it. |

[`Stream`]: https://docs.rs/futures-core/latest/futures_core/stream/trait.Stream.html
[`Sink`]: https://docs.rs/futures-sink/latest/futures_sink/trait.Sink.html

# Docs

Properly building docs for this crate is quite complex. For all the gory details,
see [DOCS.md].

# Development

Run `cargo make format` before committing, it will run `cargo fmt` with the arguments expected by this project.

## License

Copyright 2026 N0, INC.

This project is licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or
   http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or
   http://opensource.org/licenses/MIT)

at your option.

## Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.