CloudtoidCloudtoid / interprocess

Developer documentation

Move bytes between processes with a shared-memory queue. Pick the API that fits your language; every implementation speaks the same v3 protocol.

Choose your language

Your first queue

  1. Install the package for your language. Go also needs the C SDK.
  2. Choose a short queue name and a capacity, such as 65536 bytes. On Unix, choose an explicit shared directory when processes use different runtimes.
  3. Open a subscriber and a publisher using the same identity and capacity.
  4. Send bytes. Check the result: a full queue needs an application-level retry or backpressure policy.
  5. Receive bytes and close each endpoint when its work is finished.

Which receive should I use?

Use a nonblocking receive when your application already controls scheduling. Use a waiting receive when you want the library to wait for work. Reuse caller-owned buffers in Rust, Go, C, or .NET to avoid allocating a result buffer on each receive.

LanguageTry onceWait for work
Rusttry_recv()recv() / recv_timeout(Duration)
Node.jstryReceive()await receive({ signal })
GoTryReceive()Receive(ctx)
Ccip_receive(handle, 0, &buffer)cip_receive(handle, timeout_ms, &buffer)
Pythontry_receive()receive(timeout=seconds)
.NETTryDequeue(out message)Dequeue(cancellation)

Platforms and compatibility

The protocol targets little-endian, 64-bit Linux, macOS, and Windows on x86-64 and ARM64. Prebuilt package availability varies: check your language's installation section. All connected processes must use protocol v3. Package versions can differ while remaining compatible with that protocol.

Rust provides the native core behind C, Node.js, Python, and Go. .NET implements the same protocol independently. See queue concepts for delivery guarantees and benchmarks for measured throughput and latency.