Local + remote inter-process communication
Move messages between any processes.
node-ipc 14 pairs a native-ESM Node.js package with a dependency-free Rust crate. They share the normal event envelope and delimiter framing while each runtime keeps a direct transport implementation.
Node.js covers Unix sockets, Windows named pipes, TCP, TLS, and UDP. Rust covers native local sockets, TCP, and UDP; applications supply a verified TLS stream.
The node-ipc JavaScript package is Node.js-only. It does not run in web browsers, whether bundled or unbundled. “Native ESM” here means Node.js ESM, not native browser ESM; this documentation site's browser code is separate from the npm runtime.
Choose one lane
Match the transport to the boundary
Same machine
Use Unix domain sockets or Windows named pipes for fast local process communication without the network stack.
Open local sockets →Reliable network
Use TCP for ordered, reliable remote messages. Keep loopback as the default until the application is ready for exposure.
Open TCP →Encrypted network
Use TLS with explicit certificates. Add mutual TLS or application authentication when the server must identify clients.
Open TLS →Latency over delivery
Use UDP4 or UDP6 for independent datagrams where occasional loss is acceptable and the application handles ordering.
Open UDP →Configure the runtime
Review message, retry, log, and socket-root options before the first connection is created.
Open configuration →Select message controls
Compare Raw, Fast, Guarded, and Assured by exact per-message work and trust boundary.
Open runtime profiles →Bring a parser
Use an official parser, opt into js-message compatibility, or implement the two-method custom contract.
Open parser contract →Know the contract
See the small public surface: connect, serve, disconnect, emit, broadcast, stop, events, and stores.
Open API reference →Use native Rust
Build TCP, UDP, Unix-domain, or Windows named-pipe peers with no runtime or build dependencies.
Open the Rust guide →Evidence, not a footnote
Testing stays visible
The 195-case Node.js correctness inventory is split into 39 focused five-case groups. Rust's 38 native cases and the 2-case Node/Rust interoperability gate remain separate.
Unit inventory
Small, isolated contracts for defaults, parsing, public surface, and transport state.
See 11 group pages →Functional inventory
Consumer-visible behavior across public objects, configuration, serialization, and routing.
See 11 group pages →Integration inventory
Live transport collaboration with explicit deadlines and deterministic teardown.
See 9 group pages →Regression inventory
Named compatibility contracts that prevent previously supported behavior from drifting.
See 8 group pages →The 38 Rust cases and 2 interoperability cases, 8-assertion cross-process transport smoke, runtime loader smoke, installed-package smoke, benchmark harness checks, and tracked-record validators are reported separately. They do not inflate the 195-case Node.js correctness count.
Paired release
Install exact 14.0.0 packages
npm install --save-exact node-ipc@14.0.0
cargo add node-ipc@14.0.0 --exact
Node.js requires 22.13+; Rust requires 1.85+. Pin exact releases for reproducible deployments.