graph TD
NR[NetRunner] --> S[NetRunner.Stream]
NR --> P[NetRunner.Process]
S --> P
P --> EX[Process.Exec]
P --> ST[Process.State]
P --> OP[Process.Operations]
P --> PI[Process.Pipe]
P --> NI[Process.Nif]
P --> SIG[NetRunner.Signal]
P --> STATS[Process.Stats]
EX --> NI
PI --> NI
ST --> PI
ST --> OP
ST --> STATS
W[NetRunner.Watcher] --> NI
W --> SIG
APP[NetRunner.Application] --> W
D[NetRunner.Daemon] --> P
subgraph "C Native"
SH[shepherd.c]
NIFC[net_runner_nif.c]
PROTO[protocol.h]
UTIL[utils.h]
end
NI -.->|loads| NIFC
EX -.->|spawns| SH
NIFC --> PROTO
NIFC --> UTIL
SH --> PROTO