Connectors / Bridges & output
Singer bridge
sinkSinger target bridge (runs an external Singer target; bookmarks advance after the target confirms)
Install
cargo install faucet-cli --features sink-singer faucet init --sink singer
# Cargo.toml — use it as a library cargo add faucet-sink-singer
Starter config
sink:
type: singer
config:
target_command: "" # REQUIRED — The target executable to run (looked up on `PATH`, or an absolute path), e.g.
# args: [] # Extra arguments appended after faucet's own `--config <file>` flag.
# target_config: {} # The target's configuration object.
# env: {} # Extra environment variables for the target process, set on top of whatever `inherit_env` passes.
# inherit_env: null # The `inherit_env` setting of a Singer tap or target.
# stream: null # The Singer stream name records are sent under.
# schema: null # The JSON Schema sent in the stream's `SCHEMA` message.
# key_properties: null # `key_properties` for the `SCHEMA` message.
# flush_on: null # When the sink treats written records as durably persisted by the target.
# flush_timeout_secs: 600 # How long a flush waits for the target to echo `STATE` (or to exit, with `flush_on: exit`) before failing, and how long one write may block on a target that stopped reading its stdin.
# write_mode: null # Write semantics for a sink.
# key: [] # Key columns.
# delete_marker: null # Optional.
# rollback: null # Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table.
# _activate_version: null # Internal: the table version for `write_mode: overwrite`, shared by every writer of a run.
Capabilities
| Delivery | At-least-once |
|---|---|
| Write modes | append, upsert, overwrite |
| Exactly-once writes | No |
| Schema evolution | No |
| Scoped cleanup | No |
| Staged bulk load | No |
| Run rollback | No |
| Compression | No |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
target_commandrequired | string | — | The target executable to run (looked up on PATH, or an absolute path), e.g. target-jsonl or /opt/targets/target-postgres. |
args | array | [] | Extra arguments appended after faucet's own --config <file> flag. |
target_config | any | {} | The target's configuration object. Written to a private (0600) temp file passed as --config; its string values are scrubbed from the target's echoed stderr. |
env | object | {} | Extra environment variables for the target process, set on top of whatever inherit_env passes. |
inherit_env | boolean | array | true | Which of faucet's environment variables the target receives: true (default) the whole environment, false only PATH, HOME, LANG, LC_ALL and TMPDIR, or a list of variable names passed on top of that baseline. Set it to keep faucet's own credentials away from the target. |
stream | string | — | The Singer stream name records are sent under. The faucet CLI fills it from the matrix row id (or the pipeline name for a single-row config) when unset; Template Hub sink templates set it to ${stream}. Library callers default to faucet. |
schema | any | — | The JSON Schema sent in the stream's SCHEMA message. When unset the faucet CLI uses the pipeline's contract: (as JSON Schema) if one is declared; otherwise the schema is inferred from the records and a new SCHEMA is sent whenever a page widens it. |
key_properties | array | — | key_properties for the SCHEMA message. Defaults to key under write_mode: upsert, else empty. |
flush_on | object | exit | When written records count as persisted: exit (default) closes the target at every flush and waits for a clean exit; state keeps it running and waits for it to echo a STATE. |
flush_timeout_secs | integer | 600 | How long a flush waits for the target to echo STATE (or to exit, with flush_on: exit) before failing, and how long one write may block on a target that stopped reading its stdin. Default 600. |
write_mode | object | append | Append (default), upsert, or delete. |
key | array | [] | Key columns. Required and non-empty for upsert/delete; ignored for append. |
delete_marker | object | — | Optional. Upsert only: rows whose field matches one of values are deletes; all others are upserts. The marker field is stripped from upsert rows before writing. |
rollback | object | — | Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table. Injected per invocation by the CLI when a config has a top-level rollback: block — not meant to be written by hand. |
_activate_version | integer | — | Internal: the table version for write_mode: overwrite, shared by every writer of a run. Injected by the faucet CLI (the run clock in milliseconds); library callers may leave it unset (a millisecond timestamp is chosen on first use). |
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