# `Replicant.Pipeline`
[🔗](https://github.com/baselabs/replicant/blob/v0.3.1/lib/replicant/pipeline.ex#L1)

Per-pipeline `Supervisor` (spec §4): supervises the `Replicant.AssemblerServer`
and the `Replicant.Connection` under **`:one_for_all`** — a crash of either
restarts both together, so a fresh Connection (resuming from the sink checkpoint)
is never paired with a stale in-memory assembler buffer. Registered by slot in
`Replicant.Registry` so `Replicant.Supervisor.halt/2` can terminate the whole
pipeline permanently on a fail-closed condition.

The AssemblerServer starts before the Connection (the Connection casts decoded
messages to it; with `sync_connect: false` the Connection does not stream until
after boot). In lib mode the CheckpointStore starts first of all, so the
Connection can read it on connect and the AssemblerServer can write through it.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

```elixir
@spec start_link(Replicant.Config.t()) :: Supervisor.on_start()
```

# `via`

```elixir
@spec via(String.t()) :: {:via, module(), term()}
```

The Registry via-name a pipeline supervisor registers under.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
