# Sources A source is a stream that is not writable. You *must* have a source at the start of a pipeline for data to move through. in general: ``` js pull(source, through, sink) ``` See also: * [Throughs](../throughs/index.md) * [Sinks](../sinks/index.md) ## [values](./values.md) ## [keys](./keys.md) ## [count](./count.md) ## [infinite](./infinite.md) ## [empty](./empty.md) ## [once](./once.md) ## [error](./error.md)