Install
cargo install faucet-cli --features source-webhook faucet init --source webhook
# Cargo.toml — use it as a library cargo add faucet-source-webhook
Starter config
source:
type: webhook
config:
# listen_addr: "127.0.0.1:8080" # Address to bind the HTTP server to (default: `"127.0.0.1:8080"`).
# path: "/webhook" # Endpoint path for receiving webhooks (default: `"/webhook"`).
# max_payloads: null # Stop after receiving this many payloads.
# timeout_secs: 30 # How long to listen before returning, in seconds (default: 30).
# max_body_bytes: 1048576 # Maximum accepted request body size in bytes (default: 1 MiB).
# max_buffered_bytes: 268435456 # Most request-body bytes held in memory for one window (default: 256 MiB).
# auth_token: null # Optional shared secret.
# batch_size: 1000 # Records per emitted `StreamPage`.
# signature: null # Optional HMAC request-signature verification for senders that sign the raw body instead of sending a static secret.
Capabilities
| Replay | Non-deterministic replay |
|---|---|
| Exactly-once replay | No |
| Incremental | No |
| Dataset discovery | No |
| Reports lag | No |
| Compression | No |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
listen_addr | string | "127.0.0.1:8080" | Address to bind the HTTP server to (default: "127.0.0.1:8080"). |
path | string | /webhook | Endpoint path for receiving webhooks (default: "/webhook"). |
max_payloads | integer | — | Stop after receiving this many payloads. |
timeout_secs | integer | 30 | How long to listen before returning, in seconds (default: 30). |
max_body_bytes | integer | 1048576 | Maximum accepted request body size in bytes (default: 1 MiB). Larger POSTs are rejected with 413 Payload Too Large so a single huge request can't exhaust memory. |
max_buffered_bytes | integer | 268435456 | Most request-body bytes held in memory for one window (default: 256 MiB). Once a POST would cross it the window closes, the payloads already stored are emitted, and that POST and later ones are refused with 503 Service Unavailable + Retry-After. An empty window always takes one POST, however large (max_body_bytes bounds it), and closes once it reaches the bound. 0 removes the bound. |
auth_token | string | — | Optional shared secret. When set, every request must carry it in the Authorization header (either the raw token or Bearer <token>); requests without it are rejected with 401 Unauthorized. When None (default) the endpoint is unauthenticated. |
batch_size | integer | 1000 | Records per emitted StreamPage. The webhook source has no native streaming primitive — it accumulates incoming POSTs into an in-memory buffer during the receive window, then the default Source::stream_pages impl chunks that buffer into pages of this size. Defaults to DEFAULT_BATCH_SIZE. |
signature | object | — | Optional HMAC request-signature verification for senders that sign the raw body instead of sending a static secret. Unsigned or mis-signed requests are rejected with 401. |
Get started
Your first pipeline runs in five minutes.
Install the CLI, scaffold a config, and move real data — nothing external to stand up.
curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh brew install faucet-hq/faucet-stream/faucet-cli