An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
node-ipc
node-ipc 14.0.0 source for the aligned npm, NuGet, and crates.io release
Fast local and remote process communication for Node.js, C#, and Rust on Linux,
macOS, and Windows. The aligned implementations share the normal node-ipc event
envelope and delimiter framing across local sockets, TCP, and UDP.
A great solution for complex multiprocess Neural Networking in Node.JS
npm install --save-exact node-ipc@14.0.0
Rust: cargo add node-ipc@14.0.0 --exact
C#: dotnet add package node-ipc --version 14.0.0
Use an exact, reviewed version. Do not use a mutable tag or version range for security-sensitive deployments.
Runtime
Version 14 requires Node.js 22.13.0 or newer. The native ports require Rust
1.85 or newer and .NET 8 or newer. Version 12 remains the legacy Node release
line; version 13 was never published.
node-ipc ships native ES modules only. Node.js loads the same entry point through import or synchronous require(); no transpiled CommonJS bundle is generated.
The node-ipc JavaScript package is Node.js-only. It uses Node's raw TCP,
TLS, UDP, Unix-domain socket, Windows named-pipe, filesystem, OS, process, and
Buffer APIs. It is not supported in browsers, with or without a bundler.
“Native ESM” means that Node loads the one JavaScript implementation without a
transpiler; it does not mean native-browser ESM. The documentation website's
browser code is separate and is not part of the npm package runtime.
Node.js runtime profiles
The Node.js implementation selects its parser and hot-path handlers once, when each client or server is created. It does not poll a security flag for every message. Set the profile before calling connect*() or serve*().
Profile
Work on every message
Intended boundary
raw
No node-ipc framing, JSON parsing, or message checks. Buffers pass through the data event.
Trusted peers using a caller-owned binary or text protocol.
fast
JSON event-envelope encoding/decoding and delimiter framing. Malformed JSON becomes a protocol error; stream connections close.
Default for trusted local peers where the application owns payload validity.
guarded
Fast framing plus frame-size, stream pending-write, event-name, reserved/prototype-name, envelope, and incomplete-message-time controls.
Mixed-trust local services and authenticated network applications.
assured
Guarded controls plus a required event allow-list. Network use requires mutually authenticated TLS; each Unix local server endpoint must be a direct child of the secure socket root. Built-in Windows local service is rejected because node-ipc cannot prove its named-pipe ACL.
Hostile-network building block with verified peer certificates and application authorization; not a certification.
ipc.config.parser = 'guarded';
ipc.config.maxMessageSize = 1024 * 1024;
ipc.config.maxPendingBytes = 8 * 1024 * 1024;
These transport guarantees are Node.js-specific. Rust shares the four codec
profiles but requires the caller to establish and verify the transport boundary.
See Profiles, Parsers, and Security before choosing a network-facing configuration.
Rust
The paired Rust crate requires Rust 1.85 or newer and has no runtime or build
dependencies. Its sole development dependency is exact vanilla-test 2.1.0.
use node_ipc::{tcp, CodecConfig, Connection, Event};
fn main() -> node_ipc::Result<()> {
let stream = tcp::connect(("127.0.0.1", 9763))?;
let mut connection = Connection::new(stream, CodecConfig::fast())?;
connection.send(&Event::new("app.message", "hello"))?;
Ok(())
}
Rust supplies TCP, UDP, Unix-domain sockets, Windows named pipes, raw bytes,
and the Fast, Guarded, and Assured codecs. Applications supply their own
verified TLS stream; the crate does not choose or reimplement cryptography.
See the Rust engineer guide
and native examples.
C#
The aligned C# package targets .NET 8, has no NuGet dependencies, and mirrors
the JavaScript facade: IPCModule, config, of, server, serve*,
connect*, event subscriptions, targeted emit, and broadcast. It supplies
async TCP, TLS, UDP4/UDP6, Unix-domain sockets, Windows named pipes, Raw, Fast,
Guarded, Assured, reconnect, and sync request queues.
using NodeIpc;
await using var ipc = new IPCModule();
ipc.config.silent = true;
var client = ipc.connectToNet("service", "127.0.0.1", 9763)!;
await client.waitForConnectAsync();
await client.emitAsync("app.message", new { text = "hello" });
See the C# package guide
and native examples.
Use
ESM: import ipc from 'node-ipc';
CommonJS: const ipc = require('node-ipc').default;
CommonJS loading uses Node.js 22.13+'s native require(esm) support.
NPM Stats
npm info : See npm trends and stats for node-ipc
GitHub info :
Code Coverage Info :
Run npm run coverage to host a local version of the coverage report on 127.0.0.1:8080.
Testing done with vanilla-test
vanilla-test provides native V8 coverage for the ESM test suite without transpilation or bundling.
Package details websites :
GitHub.io site. Engineer documentation and tracked evidence.
NPM Module. The npm page for the node-ipc module.
This work is licenced via the MIT Licence.
Testing
npm test runs 195 Node correctness cases, native V8 coverage, both module
loaders, installed-package smoke, and benchmark validation. Reports are written
to coverage/node/.
cargo test --manifest-path rust/node-ipc/Cargo.toml --all-targets runs the 38
Rust-native VanillaTest cases. node rust/node-ipc/interop/vanilla-test.js runs
the separate two-direction Node/Rust interoperability gate.
dotnet run --project csharp/node-ipc/tests/NodeIpc.Tests -c Release runs the
exact C# native case inventory. node csharp/node-ipc/interop/vanilla-test.js
runs the separate two-direction Node/C# interoperability gate, and
pwsh -File csharp/node-ipc/package-smoke.ps1 validates the NuGet boundary.
npm run test:behavioral runs the shared black-box Fast TCP transcript across
all nine JavaScript, Rust, and C# server/client pairings. Seven pipelined
payload-shape and ordering cases must pass before a separa
Read the full README on GitHub