Twenty-one published packages, all version 1.0.0, all under the @serialpilot scope (with the exception of the meta package, which is just serialpilot). Install the meta package for the common case; cherry-pick when bundle size matters.
In-memory binding for tests. Echo, record, periodic data, programmable responders. See Mocking.
A pure-Rust binding ships in the same monorepo as a Cargo crate at crates/bindings-rust. It's not on npm because it isn't a JavaScript package — use it from Rust projects directly.
All @serialpilot/* packages are released in lock-step. A 1.x release of the meta package always pins exact 1.x versions of its dependencies — there is no scenario where you should mix-and-match minor versions across the scope.
Pick the smallest set
If you're worried about install size or cold-start time:
Just opening a port and reading raw bytes? @serialpilot/bindings-cpp + @serialpilot/stream.
Plus line-oriented protocols? Add @serialpilot/parser-readline.
Need the mock for tests but only in dev? npm i -D @serialpilot/binding-mock.