Connectors / Bridges & output

Singer bridge

sink

Singer 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

FieldTypeDefaultDescription
target_command
required
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