Cannectors is a cross-platform CLI for running declarative data pipelines. It
reads YAML pipeline files and moves records through an input -> filters -> output flow.
- Pull records from HTTP APIs, SOAP APIs, webhooks, PostgreSQL, MySQL, or SQLite.
- Transform records with mapping, condition, script, set, remove, HTTP call, SOAP call, and SQL call filters.
- Send records to HTTP APIs, SOAP APIs, or databases.
- Handle authentication, retries, scheduling, state persistence, and dry-run previews from configuration.
# Build from source
go build -o cannectors ./cmd/cannectors
# Validate a maintained example
./cannectors validate ./examples/01-http-polling-basic-to-http-batch.yaml
# Preview a pipeline without sending output data
./cannectors run --dry-run ./examples/01-http-polling-basic-to-http-batch.yaml
# Run a pipeline
./cannectors run ./examples/01-http-polling-basic-to-http-batch.yamlname: sync-orders
version: 1.0.0
description: Poll orders from an API and send them as a batch.
input:
type: httpPolling
schedule: "*/15 * * * *"
endpoint: https://source.example.com/api/orders
dataField: orders
filters:
- type: mapping
mappings:
- source: order_id
target: id
- source: customer.email
target: email
output:
type: httpRequest
endpoint: https://destination.example.com/api/orders/import
method: POST
requestMode: batch- Documentation index
- Configuration format
- Module reference
- CLI reference
- Operations guide
- Maintained examples
- Module extensibility
The canonical examples live in examples/. They are validated by the test suite and should be used as templates for new pipelines.
./cannectors validate ./examples/10-mapping-transforms-all.yaml
./cannectors validate ./examples/22-defaults-inheritance.yamlmake build
make test
make validate-examples
make lintUseful test-lab commands:
make test-lab-up
make test-lab-run
make test-lab-down- Go 1.25.0+
- Docker, for the local test lab
golangci-lintv2.7.1+, for linting
See CONTRIBUTING.md.
See COMMERCIAL.md.