NetRunner vs Alternatives

Copy Markdown View Source

Feature Matrix

FeatureNetRunnerExileMuonTraperlexecSystem.cmd
Independent stdin closeYesYesNoYesNo
BackpressureYes (enif_select)Yes (enif_select)No (Port)LimitedNo (Port)
Zero zombies (BEAM SIGKILL)Yes (shepherd)NoYes (muontrap)NoNo
Zero zombies (GenServer crash)Yes (watcher)PartialNoYesN/A
Process group killsYes (kill -pgid)NoYesYesNo
PTY supportYesNoNoYesNo
cgroup supportYes (Linux)NoYesNoNo
Stream APIYesYesNoNoNo
Per-process statsYesNoNoNoNo
Daemon modeYesNoYesNoNo
Window size controlYesNoNoNoNo
Kill escalation timeoutConfigurableFixedFixedConfigurableN/A
Concurrency modelProcess-per-cmdProcess-per-cmdProcess-per-cmdSingle managerBlocking
LanguageC NIF + ElixirC NIF + ElixirC wrapper + ElixirC port + ErlangBuilt-in
BEAM scheduler safeYes (dirty IO)Yes (dirty IO)N/AN/ANo

Architecture Comparison

System.cmd / Erlang Ports

BEAM  Port Driver  child (stdin+stdout coupled)
  • Stdin and stdout lifecycle tied together
  • No backpressure — data floods mailbox
  • No zombie prevention on BEAM crash

Exile

BEAM  NIF (enif_select)  child (spawner execvp's away)
  • Excellent I/O model with backpressure
  • Spawner calls execvp — no watchdog for BEAM crashes
  • No process group kills

MuonTrap

BEAM  Port  muontrap binary  child
  • Persistent wrapper prevents zombies
  • Port-based I/O — no backpressure
  • cgroup support on Linux

erlexec

BEAM  single exec-port  all children
  • Single port manages all children — bottleneck
  • Rich feature set (PTY, process groups)
  • Erlang-native, Elixir wrapper available

NetRunner

BEAM  NIF (enif_select) + shepherd binary  child
  • Best of Exile (NIF I/O) + MuonTrap (persistent wrapper)
  • Process group kills with grandchild cleanup
  • Three-layer zombie prevention
  • PTY + cgroup + stats + daemon mode

When to Use What

Use CaseRecommended
Simple command execution, don't care about edge casesSystem.cmd
Need backpressure for large data streamsNetRunner or Exile
Must guarantee no zombies under all failure modesNetRunner or MuonTrap
Need PTY/terminal emulationNetRunner or erlexec
Need cgroup resource isolation (Linux)NetRunner or MuonTrap
Erlang-only project, no Elixirerlexec
Need all of the aboveNetRunner