Get 50 GB free!Register for a free account and start migrating today — no credit card required.Register now →
GodwitGodwit Sync
HomePricingDownloadsDocs
Customer PortalGet Started
Get Started
Config File Reference

Configuration File Reference

Godwit Sync supports YAML configuration files as an alternative to CLI flags. Use --config (-f) to load a config file.

Basic Usage

godwit sync --config my-sync.yml
godwit sync -f my-sync.yml

# Override a config value with a CLI flag
godwit sync -f my-sync.yml --parallel 8

CLI Precedence

CLI flags always take precedence over config file values. If a flag is set on the command line, the corresponding config value is ignored.

Config File Structure

The configuration file uses YAML format with these top-level sections:

Source

Configure the source endpoint — local path or S3 bucket.

YAML KeyTypeCLI FlagDescription
source.urlstring--sourceSource path or S3 URI (s3://bucket/prefix)
source.endpointstring--source-endpointS3 API endpoint (host:port)
source.access_keystring--source-access-keyS3 access key
source.secret_keystring--source-secret-keyS3 secret key
source.session_tokenstring--source-session-tokenOptional session token for temporary credentials
source.regionstring--source-regionS3 region
source.securebool--source-secureUse TLS for S3 connections
source.disable_keepalivebool--source-disable-keepaliveDisable HTTP keep-alive

Destination

Configure the destination endpoint — local path or S3 bucket.

YAML KeyTypeCLI FlagDescription
destination.urlstring--destinationDestination path or S3 URI
destination.endpointstring--destination-endpointS3 API endpoint (host:port)
destination.access_keystring--destination-access-keyS3 access key
destination.secret_keystring--destination-secret-keyS3 secret key
destination.session_tokenstring--destination-session-tokenOptional session token for temporary credentials
destination.regionstring--destination-regionS3 region
destination.securebool--destination-secureUse TLS for S3 connections
destination.disable_keepalivebool--destination-disable-keepaliveDisable HTTP keep-alive

Policy

Comparison and skip policies for object filtering.

YAML KeyTypeCLI FlagDescription
policy.comparestring--compare-policyComparison policy (size,etag or size,mtime)
policy.skipstring[]--skipList of suffixes or patterns to skip

Options

Transfer behavior settings — parallelism, retries, overrides.

YAML KeyTypeCLI FlagDescription
options.parallelint--parallelNumber of parallel sync workers
options.plan_parallelint--plan-parallelNumber of parallel planning workers
options.buffer_multiplierint--buffer-multiplierMultiplier for the copy queue length
options.multipart_thresholdint64--multipart-thresholdMultipart upload threshold in bytes
options.overridebool--overrideOverwrite existing destination objects
options.skip_tagsbool--skip-tagsSkip reading object tags from source
options.retryint--retryMaximum retries per object
options.retry_backoffstring--retry-backoffBase delay between retries

Run

Run tracking — run ID, state driver and state file path.

YAML KeyTypeCLI FlagDescription
run.run_idstring--run-idRun identifier for tracking
run.state_driverstring--state-driverState backend driver
run.state_pathstring--state-pathPath to state database file
run.logs_dirstring--logs-dirDirectory for observability logs

Output

Console output mode — UI, brief, or silent.

YAML KeyTypeCLI FlagDescription
output.uibool--uiEnable verbose console logging
output.briefbool--briefShow only essential progress messages
output.silentbool--silentSuppress all console output

License

License file path or inline license string.

YAML KeyTypeCLI FlagDescription
license.filestring--license-filePath to license file
license.inlinestring--licenseInline base64 license string

Rate Limit

Throttling controls — RPS, bandwidth, and concurrency.

YAML KeyTypeCLI FlagDescription
rate_limit.rpsfloat64--rpsRequests per second limit (0 = disabled)
rate_limit.read_bpsint64--read-bpsRead bytes per second limit (0 = disabled)
rate_limit.max_inflightint--max-inflightMax concurrent uploads (0 = disabled)

Status

HTTP server address for metrics and status endpoint.

YAML KeyTypeCLI FlagDescription
status.addrstring--status-addrHTTP address for status/metrics server

Sample Configurations

Local Filesystem → S3

Upload a local directory to an S3-compatible bucket.

source:
  url: "./data"

destination:
  url: "s3://my-bucket/backup"
  endpoint: localhost:9001
  access_key: access_key
  secret_key: secret_key
  secure: false

options:
  parallel: 3

output:
  ui: true

status:
  addr: ":8080"

S3 → Local Filesystem

Download objects from an S3 bucket to a local directory.

source:
  url: "s3://my-bucket/data"
  endpoint: localhost:9001
  access_key: access_key
  secret_key: secret_key
  secure: false

destination:
  url: "./downloads"

policy:
  skip:
    - .md5

options:
  parallel: 6

output:
  ui: true

S3 → S3

Copy data between two S3-compatible endpoints.

source:
  url: "s3://source-bucket/data"
  endpoint: localhost:9001
  access_key: access_key
  secret_key: secret_key
  secure: false

destination:
  url: "s3://dest-bucket/backup"
  endpoint: localhost:9101
  access_key: access_key
  secret_key: secret_key
  secure: false

policy:
  skip:
    - .md5

options:
  parallel: 9

output:
  ui: true

status:
  addr: ":8080"

Full Example (All Sections)

A complete configuration file showing every available option.

source:
  url: "s3://source-bucket/prefix"
  endpoint: source.storage.example.com
  access_key: SOURCE_ACCESS_KEY
  secret_key: SOURCE_SECRET_KEY
  region: us-east-1
  secure: true

destination:
  url: "s3://dest-bucket/backup"
  endpoint: localhost:9000
  access_key: access_key
  secret_key: secret_key
  secure: false

policy:
  compare: "size,etag"
  skip:
    - .md5
    - .tmp

options:
  parallel: 4
  plan_parallel: 8
  buffer_multiplier: 4
  multipart_threshold: 67108864
  override: false
  skip_tags: false
  retry: 3
  retry_backoff: "1s"

run:
  run_id: "daily-backup"
  state_driver: sqlite
  state_path: "./godwit-sync.state.db"
  logs_dir: "./logs"

output:
  ui: true
  brief: false
  silent: false

license:
  file: "./license.json"

rate_limit:
  rps: 50
  read_bps: 104857600
  max_inflight: 10

status:
  addr: ":8080"

CLI-Only Flags

These flags have no config file equivalent and must be passed on the command line:

  • --config (-f) — Selects which config file to load
  • --plan-only — Plan transfer without copying data
  • --resume — Resume a previously planned transfer
  • --register — Register a license to disk

CLI Reference

See the complete list of all CLI flags with types, defaults, and descriptions.

View CLI Reference
← GuidesCLI Reference →
Godwit Sync

Production-grade data migration and synchronization for large object storage. Control, predictability, and safety at scale.

Product

  • Pricing
  • Documentation

Legal

  • Terms of Service
  • User Agreement
  • Privacy Policy

© 2026 Godwit Sync. All rights reserved.

Version v1.0.19