# Repost Development

**Develop on real webhooks. Without the staging dance.**

The Repost CLI is a single static binary that brings the full webhook
workflow to your terminal: tunnel live traffic to localhost, search every
event, replay failures, generate types, deploy safely.

## Install

| Platform | Command |
|---|---|
| macOS (Homebrew) | `brew install repost-sh/tap/repost` |
| macOS / Linux / WSL | `curl -fsSL https://releases.repost.sh/cli/install.sh \| sh` |
| Windows (PowerShell) | `irm https://releases.repost.sh/cli/install.ps1 \| iex` |
| npm | `npm install -g @repost/cli` |
| Docker | `docker run --rm repostsh/cli forward queue` |

No Node, no Python, no Docker required. Single binary for amd64 and arm64 on
all platforms.

## Commands

### `repost forward` — tunnel live webhooks to localhost

```
repost forward queue --to localhost:3060
```

Connects your terminal to a Repost bucket and forwards every incoming event
to a local port. Replaces ngrok for webhook development.

### `repost search` — query events from the terminal

```
repost search queue --status 5xx --since 1h
repost search queue --query "customer.email:*@acme.com" | jq
```

Same query syntax as the dashboard. Pipe to `jq` for further processing.

### `repost replay` — re-deliver events

```
repost replay --query 'status:failed' --limit 100
repost replay --event-id evt_abc --to forwarder-id
```

Idempotent. Throttled. Scriptable.

### `repost types` — generate type definitions

```
repost types queue --lang ts --out ./src/webhooks.ts
repost types queue --lang go --package webhooks --out ./webhooks.go
```

Supported languages: TypeScript (Zod or Effect Schema), Go, Python (Pydantic),
Java, C#, Swift, Kotlin.

### `repost tail` — live-stream events to stdout

```
repost tail queue --format json | jq .body
repost tail queue --format pretty
```

Three output formats: `json`, `plain`, `pretty`.

### `repost deploy` — pause forwarders during deploys

```
repost deploy pause queue && ./deploy.sh && repost deploy resume queue
```

Pauses all forwarders on a bucket. Incoming webhooks queue up. After
`deploy resume`, Repost drains the queued events in order. Zero events lost
during deploys.

## Why a CLI?

The dashboard handles visual workflows (live tail, click-to-inspect,
modal-driven replay). The CLI handles scriptable workflows (CI/CD pipelines,
ad-hoc queries, type generation, batch replays). Same backend, two surfaces.

See also:
- [Observability](https://repost.sh/observability.md) for the dashboard equivalents
- [Pricing](https://repost.sh/pricing.md) — CLI is included on every plan, including Free