pg-cdc is configured via pg-cdc.yml. Pass --config <path> to override the default location.
All subcommands — init, start, compact, mcp, status, discover, teardown, catalog register — read the same config file. The MCP server (pg-cdc mcp) does not open a Postgres connection; it only uses storage to locate the Parquet output. The source.postgres block is read by the daemon (init, start) only.
GCS service account JSON path (uses ADC if omitted)
partition_by_tag
No
false
Group tables by tag in storage paths
replication
Field
Required
Default
Description
publication
No
pg_cdc_pub
PostgreSQL publication name
slot
No
pg_cdc_slot
Replication slot name
flush
Field
Required
Default
Description
interval_sec
No
10
Flush delta Parquet every N seconds
max_rows
No
1000
Or every N rows
state
Field
Required
Default
Description
type
No
sqlite
State backend (only sqlite currently)
path
No
.pgcdc/state.db
SQLite file path
tables
Field
Required
Default
Description
exclude
No
[]
Tables to skip (exact names or glob patterns)
tags
No
{}
Tag definitions: tag name to list of table patterns
policy
No
{}
Tag policies: tag name to include or exclude
profiles
Field
Required
Default
Description
source
No
Set to pg_acl to derive from PostgreSQL
roles
No
[]
Which Postgres roles to publish in manifest
aliases
No
{}
Role name to friendly alias mapping
sync_interval
No
1h
How often to re-read ACLs
catalog
Optional metadata-catalog integration. When type: glue, pg-cdc init and pg-cdc catalog register register active tables in AWS Glue after the manifest is written.