> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pipedata.io/llms.txt
> Use this file to discover all available pages before exploring further.

# pd commands

> Every pd command with flags and a one-line example.

The full surface of `pd`, one section per command. Run `pd <command> --help` for the same synopsis at the terminal.

## `pd login`

Authenticate this device with Pipedata via a device-code flow. Saves credentials to `~/.pd/config.json`.

| Flag     | Default                    | Purpose                   |
| -------- | -------------------------- | ------------------------- |
| `--host` | `eu-central-1.pipedata.io` | Region host to log in to. |

```bash theme={null}
pd login
```

## `pd push`

Read NDJSON from stdin and write it to a named pipe. Creates the pipe if it doesn't exist.

```bash theme={null}
cat data.jsonl | pd push orders
```

`pd push` reads stdin only — there's no flag for inline data. Use `echo … | pd push <name>` or redirect a file.

## `pd pull`

Read NDJSON from a named pipe to stdout.

| Flag         | Default                      | Purpose                                                                         |
| ------------ | ---------------------------- | ------------------------------------------------------------------------------- |
| `--start-id` | last cursor for this machine | Read starting from this record ID (one-off, doesn't move the cursor backwards). |
| `--follow`   | `false`                      | Tail the pipe and stream new records as they arrive.                            |

```bash theme={null}
pd pull orders --follow
```

## `pd ls`

List pipes with their kind, source, status, and counts.

| Flag      | Default | Purpose                                                      |
| --------- | ------- | ------------------------------------------------------------ |
| `--range` | `all`   | Window for stats: `15m`, `1h`, `24h`, `7d`, `30d`, or `all`. |

```bash theme={null}
pd ls --range 24h
```

## `pd delete`

Request deletion of a pipe and all its data. Data is purged within 72 hours.

| Flag    | Default | Purpose                                        |
| ------- | ------- | ---------------------------------------------- |
| `--yes` | `false` | Skip the interactive name-confirmation prompt. |

```bash theme={null}
pd delete orders --yes
```

## `pd source http`

Create (or look up) an HTTP ingestion pipe and print its ingest URL.

```bash theme={null}
pd source http webhooks
```

POST records to the printed URL with `Authorization: Bearer <api-key>`. One JSON record per request, or NDJSON for batches.

## `pd dest http`

Create or update an HTTP destination. On create, `--url` and `--method` are required. Destinations start paused — verify DNS, then `pd resume`.

| Flag           | Default | Purpose                                                                        |
| -------------- | ------- | ------------------------------------------------------------------------------ |
| `--source`     |         | Source pipe to forward from.                                                   |
| `--url`        |         | Target URL.                                                                    |
| `--method`     |         | HTTP verb: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`.                            |
| `--rate`       | `10`    | Max requests per second.                                                       |
| `--header K=V` |         | Request header. Repeatable. `Content-Type: application/json` added if not set. |
| `--retry`      | `false` | Retry non-2xx responses with exponential backoff (max 15 min, \~100 attempts). |
| `--start-id`   | `0`     | First record ID to deliver.                                                    |

```bash theme={null}
pd dest http alerts --source logs --url https://example.com/hook --method POST --retry
```

## `pd uniq`

Create or update a deduplication transform that emits each unique record from a source pipe once.

| Flag           | Default | Purpose                                                          |
| -------------- | ------- | ---------------------------------------------------------------- |
| `--from`       |         | Source pipe to dedupe. Required on create.                       |
| `--duplicates` | `false` | Invert: emit only duplicates (one per group) instead of uniques. |
| `--start-id`   | `0`     | First record ID in the source to consider.                       |

```bash theme={null}
pd uniq orders-unique --from orders
```

## `pd verify`

Verify DNS ownership of an HTTP destination. Interactive: prints a TXT record, waits for you to add it, then polls DNS.

```bash theme={null}
pd verify alerts
```

## `pd pause`

Pause a pipe so it stops reading and accepting new data. Works for any pipe kind. Downstream pipes pause too.

```bash theme={null}
pd pause events
```

## `pd resume`

Resume a paused pipe.

```bash theme={null}
pd resume events
```

## `pd self-update`

Check for and install a newer `pd` binary in place. The previous binary is saved alongside as `pd.old`.

```bash theme={null}
pd self-update
```

## `pd examples`

Print a few copy-pasteable recipes for common tasks.

```bash theme={null}
pd examples
```

## Global flags

These work on every command:

| Flag                       | Purpose                                           |
| -------------------------- | ------------------------------------------------- |
| `-o json`, `--output json` | Emit machine-readable JSON instead of human text. |
| `--no-color`               | Disable colored output.                           |
| `-h`, `--help`             | Print the command's synopsis.                     |

## Environment variables

| Variable         | Purpose                                                         |
| ---------------- | --------------------------------------------------------------- |
| `PD_CONFIG_PATH` | Override the config file location. Default `~/.pd/config.json`. |
| `NO_COLOR`       | Disable colored output (same as `--no-color`).                  |
