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

# Commands

Complete reference for every hookstream CLI command — authentication, resources, testing, observability, and more.

The hookstream CLI exposes 19 command groups and 50+ subcommands. Every command supports the global flags below, and every list/get command supports `--json` for machine-readable output.

Run `hookstream <command> --help` at any time to see options for a specific command.

## Global flags

Available on every command. Global flags must come **before** the subcommand: `hookstream --json sources list`.

Use a specific API key for this command. Overrides `HOOKSTREAM_API_KEY` and the config file.

Override the API base URL — useful for staging or self-hosted instances.

Output JSON instead of formatted text. Every command supports this. Designed to pipe into `jq`.

Show help for any command or subcommand.

Print the CLI version.

## Commands

**login, logout, whoami — Authentication**

Manage CLI authentication. See [CLI Authentication](/cli/authentication) for the full device-flow walkthrough.

```bash
# Browser login (opens hookstream.io/cli-auth, 15min TTL)
hookstream login

# Don't open a browser — print the URL and code instead (headless / SSH)
hookstream login --no-browser

# Skip the first-run wizard
hookstream login --no-wizard

# Interactive prompt for key (fallback)
hookstream login -i

# Save a key you already have
hookstream login --api-key hs_live_abc123...

# Show current user, org, and project
hookstream whoami

# Clear stored credentials
hookstream logout
```

**init — First-run wizard**

Interactive onboarding. Asks for a name and provider template, creates a source, and prints the ingest URL with a ready-to-run `curl` command.

```bash
hookstream init
```

Runs automatically after `hookstream login` if you have zero sources. Skip with `hookstream login --no-wizard`.

**sources — Inbound webhook sources**

Manage inbound webhook sources — the endpoints that receive events.

```bash
# List
hookstream sources list
hookstream sources list --status active

# Create (with optional provider template)
hookstream sources create "My Webhook" --template stripe
hookstream sources create "GitHub Events" --slug github-events --template github

# Get details
hookstream sources get <source-id>

# Delete (-f skips confirmation)
hookstream sources delete <source-id> -f

# List available templates
hookstream sources templates
```

**destinations — Delivery destinations**

Manage where events are delivered. Supports 8 destination types including HTTP, AWS SQS/S3/EventBridge, GCP Pub/Sub, Kafka, RabbitMQ, and WebSocket broadcast.

```bash
# List
hookstream destinations list
hookstream destinations list --status active --type http

# HTTP destination
hookstream destinations create "My API" \
  --url https://api.example.com/webhooks --method POST

# HTTP with auth + custom headers
hookstream destinations create "Slack" \
  --url https://hooks.slack.com/... \
  --header "Authorization:Bearer token" \
  --auth-type bearer_token --timeout 10000

# Non-HTTP destination (SQS, S3, Pub/Sub, etc.)
hookstream destinations create "My Queue" --type aws_sqs \
  --provider-config '{"queue_url":"https://sqs.us-east-1.amazonaws.com/...","region":"us-east-1"}'

# Get details
hookstream destinations get <dest-id>

# Circuit breaker
hookstream destinations circuit <dest-id>
hookstream destinations circuit-reset <dest-id>

# Delete
hookstream destinations delete <dest-id> -f
```

**connections — Route sources to destinations**

Route events from a source to a destination. Supports content-based filters (9 operators) and JSONata transforms.

```bash
# List
hookstream connections list

# Create
hookstream connections create "My Pipeline" \
  --source <source-id> --destination <dest-id>

# Create with content-based filter
hookstream connections create "Payments Only" \
  --source <src> --destination <dest> \
  --filter '[{"field":"body.type","operator":"eq","value":"payment.completed"}]'

# Get details
hookstream connections get <conn-id>

# Delete
hookstream connections delete <conn-id> -f
```

**events — Browse event history**

Inspect received events with headers, payload, and full delivery history.

```bash
# List recent events (supports cursor pagination)
hookstream events list
hookstream events list --source <source-id> --method POST --limit 50

# Full event detail (headers + payload)
hookstream events get <event-id>

# Retry all deliveries for an event
hookstream events retry <event-id>

# Replay to a specific URL (bypasses connections)
hookstream events replay <event-id> --to http://localhost:3000/webhook
```

**deliveries — Inspect delivery attempts**

Each delivery attempt (initial + retries) is tracked individually.

```bash
# List
hookstream deliveries list
hookstream deliveries list --event <event-id> --status failed

# Detail
hookstream deliveries get <attempt-id>

# Manual retry
hookstream deliveries retry <attempt-id>

# Dead-letter queue
hookstream deliveries dlq
```

**metrics — Usage and latency**

View aggregated metrics — hybrid query (real-time raw for the last 48h, pre-aggregated for longer windows).

```bash
# Overview stats (events, success rate, p95 latency)
hookstream metrics overview

# Volume over time
hookstream metrics volume --granularity hour
hookstream metrics volume --granularity day --source <source-id>
```

**test, listen — Local development**

Send test events and stream webhooks live to your terminal.

```bash
# Send a test event to a source
hookstream test <source-id>
hookstream test <source-id> --payload '{"action":"test"}'
hookstream test <source-id> --file payload.json -H "X-Custom:value"
hookstream test <source-id> --method PUT --payload '{"update":true}'

# Stream webhooks live (creates an ephemeral URL)
hookstream listen

# Forward to local dev server
hookstream listen --forward http://localhost:3000/webhook

# Show full payloads (default truncates for readability)
hookstream listen --full
```

`hookstream listen` connects over WebSocket to the EventStream Durable Object and prints each event as it arrives. Pair it with `hookstream test` in another terminal for end-to-end local dev.

**topics — Pub/sub fan-out**

Topics let one event fan out to multiple destinations via subscriptions. Each subscription supports its own filters and transforms.

```bash
# List
hookstream topics list

# Create
hookstream topics create "Orders" --slug orders

# Subscribe a destination to a topic
hookstream topics subscribe <topic-id> <destination-id>

# Publish an event
hookstream topics publish orders --data '{"type":"order.created","id":"ord_123"}'

# Unsubscribe
hookstream topics unsubscribe <topic-id> <subscription-id>

# Delete
hookstream topics delete <topic-id> -f
```

**replay — Replay historical events**

Replay events from a time window to any destination, with optional rate limiting.

```bash
# Create a replay job
hookstream replay create --destination <dest-id> \
  --from 2026-03-01T00:00:00Z --to 2026-03-07T00:00:00Z

# Scoped + throttled
hookstream replay create --destination <dest-id> \
  --from <iso> --to <iso> \
  --source <source-id> --rate-limit 100 --max-events 5000

# Check job status
hookstream replay status <job-id>
```

Jobs are stored in KV with auto-expiry. See [Event replay](/guides/event-replay) for background.

**issues — Delivery failures**

Issues are auto-created when deliveries fail consistently. Use them to triage, mute, or bulk-retry.

```bash
# List
hookstream issues list
hookstream issues list --status all
hookstream issues list --status resolved --limit 20

# Detail
hookstream issues get <issue-id>

# Update status
hookstream issues update <issue-id> --status resolved
hookstream issues update <issue-id> --status muted

# Retry all failed deliveries for this issue
hookstream issues retry <issue-id>
```

**alerts — Alert rules**

Alert rules fire on delivery failures, high latency, volume spikes, and more. Every rule targets a notification channel.

```bash
# List
hookstream alerts list

# Create
hookstream alerts create "High Failure Rate" \
  --type failure_rate --channel <channel-id>

hookstream alerts create "Latency Alert" \
  --type high_latency --channel <channel-id> \
  --threshold 5000 --source <source-id>

# Detail
hookstream alerts get <alert-id>

# Delete
hookstream alerts delete <alert-id> -f
```

**channels — Notification channels**

Notification channels receive alert events. Supports webhook (Slack, PagerDuty, Discord, etc.) and email.

```bash
# List
hookstream channels list

# Create
hookstream channels create "Slack" \
  --type webhook --url https://hooks.slack.com/...

hookstream channels create "PagerDuty" \
  --type webhook --url https://events.pagerduty.com/...

# Detail
hookstream channels get <channel-id>

# Send a test notification
hookstream channels test <channel-id>

# Delete
hookstream channels delete <channel-id> -f
```

**collections — Instant Database**

Collections turn inbound webhooks into queryable tables via last-write-wins upsert.

```bash
# List
hookstream collections list

# Detail
hookstream collections get <collection-id>

# Stats (record count, inferred schema)
hookstream collections stats <collection-id>

# Export
hookstream collections export <collection-id>
hookstream collections export <collection-id> --format csv --output data.csv
```

**applications — Outbound webhooks**

Applications group outbound endpoints for your customers (Standard Webhooks).

```bash
# List
hookstream applications list

# Create
hookstream applications create "My App"
hookstream applications create "Notifications" --uid my-app-001

# Detail
hookstream applications get <app-id>

# Delete
hookstream applications delete <app-id> -f
```

**billing — Plan and usage**

View current plan and monthly usage counters.

```bash
# Current month usage
hookstream billing usage

# Active subscription
hookstream billing subscription
```

## Related

**[Authentication](/cli/authentication)**

Browser device flow, API keys, env vars, and config precedence.
  **[API reference](/api/authentication)**

Every CLI command maps to an HTTP endpoint — drop down to the API when you need it.