From 9bb0e8f05f72d8d1940106a157011525810c9712 Mon Sep 17 00:00:00 2001 From: Rae McKelvey <633012+okdistribute@users.noreply.github.com> Date: Mon, 6 Apr 2026 11:55:52 -0700 Subject: [PATCH 1/2] add more detail around pro/con of ffi --- deployment/other-languages.mdx | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/deployment/other-languages.mdx b/deployment/other-languages.mdx index 7e87044..586b412 100644 --- a/deployment/other-languages.mdx +++ b/deployment/other-languages.mdx @@ -25,26 +25,25 @@ us](https://cal.com/team/number-0/n0-protocol-services?overlayCalendar=true) to discuss your requirements. -### Write a Wrapper +### Build Your Own Wrapper -If you're comfortable with a little bit of Rust, write your own small -wrapper around iroh that covers just what you need and exposes your application -specific functionality over a local http server or daemon. This approach: +If you're comfortable with a little bit of Rust, you can write your own wrapper +around iroh. This can be a small application-specific binary that exposes +functionality over a local HTTP server or daemon, or a full FFI wrapper from +Rust to your target language (Python, Go, etc.). Either way, this gives you: -- Gives you full control over the functionality you expose -- Requires minimal Rust knowledge beyond basic CLI patterns -- Can be called from any language -- Check out [sendme](https://github.com/n0-computer/sendme), [callme](https://github.com/n0-computer/callme), and [dumbpipe](https://github.com/n0-computer/dumbpipe) as examples - -### Build Your Own FFI Wrapper - -Write your own FFI wrapper from Rust to your target language (Python, Go, etc.) -that covers just what you need from the iroh API and protocols. This gives you: - -- Complete control over the API surface +- Full control over the API surface you expose - The ability to tailor it to your specific use case -- Type-safe bindings for your language -- Reference [iroh-ffi](https://github.com/n0-computer/iroh-ffi) for patterns and examples +- Type-safe bindings for your language (with FFI) +- Can be called from any language (with an HTTP wrapper) +- Check out [sendme](https://github.com/n0-computer/sendme), [callme](https://github.com/n0-computer/callme), and [dumbpipe](https://github.com/n0-computer/dumbpipe) as examples, and reference [iroh-ffi](https://github.com/n0-computer/iroh-ffi) for FFI patterns + +While it's easy to get a first version working, **ongoing maintenance and +testing is the hard part**. Iroh is under active development, and keeping +wrappers up to date with new releases, testing across platforms, and handling +edge cases takes sustained effort. The number0 team runs a testing lab for +this purpose. If you need production-grade bindings, [contact +us](https://cal.com/team/number-0/iroh-services) to discuss your requirements. ### Community Bindings From bfa905a7eb2adb923511168d3746a848169f23aa Mon Sep 17 00:00:00 2001 From: Rae McKelvey <633012+okdistribute@users.noreply.github.com> Date: Mon, 6 Apr 2026 11:57:05 -0700 Subject: [PATCH 2/2] update --- deployment/other-languages.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/other-languages.mdx b/deployment/other-languages.mdx index 586b412..01a2c30 100644 --- a/deployment/other-languages.mdx +++ b/deployment/other-languages.mdx @@ -36,7 +36,6 @@ Rust to your target language (Python, Go, etc.). Either way, this gives you: - The ability to tailor it to your specific use case - Type-safe bindings for your language (with FFI) - Can be called from any language (with an HTTP wrapper) -- Check out [sendme](https://github.com/n0-computer/sendme), [callme](https://github.com/n0-computer/callme), and [dumbpipe](https://github.com/n0-computer/dumbpipe) as examples, and reference [iroh-ffi](https://github.com/n0-computer/iroh-ffi) for FFI patterns While it's easy to get a first version working, **ongoing maintenance and testing is the hard part**. Iroh is under active development, and keeping