Two ways to get records into a pipe: stream NDJSON from a shell with pd push, or expose an HTTP endpoint with pd source http.
TL;DR
From stdin: pd push
pd push <name> reads NDJSON from stdin and writes it to the named pipe. The pipe is created on first use.
Each line of stdin must be a single JSON value. Status output goes to stderr, so redirects stay clean.
pd push is streaming — the writer doesn’t wait for a reader. Push as fast as you like; readers catch up at their own pace.
Over HTTP: pd source http
pd source http <name> creates (or looks up) an HTTP ingestion pipe and prints its ingest URL.
Send one record per request, or batch many as NDJSON:
A 2xx response means the records were accepted and persisted.
Common patterns
Backfill a pipe from a file
Convert CSV on the fly
Mirror an HTTP webhook into a pipe
See also