Your first transfer
Weik.io 2026.2A transfer is one YAML document with a schedule, a source, a destination, an operation and filters, and weikio apply publishes it like any integration. Product page · Video
Watch: Your first transfer, 3:40
The video writes the supplier-invoices transfer with weikio init --kind mft and applies it.
A transfer is a document of kind: mft. You don’t write a Camel route for it: the platform generates the route that runs rclone on the schedule, and the agent carries rclone in its image.
Start from the scaffold#
weikio init writes a transfer that runs as soon as you deploy it:
$ weikio init supplier-invoices --kind mft --project financeThe scaffold has a schedule, a source and a destination with their remotes and paths, and operation: copy. Its destination is a local folder under /var/lib/weikio/mft/supplier-invoices, which the agent of a Linux site can write. Commented lines show the fields you add next, filters, flags, retries and retriesSleep, so you see that choosing files is a list of patterns and that everything else is rclone’s own vocabulary.
The real job#
The finance team collects a supplier’s invoice PDFs from the supplier’s FTP server every morning at five and moves them into Azure Blob storage. The transfer is this document:
apiVersion: weik.io/v1
kind: mft
metadata: { name: supplier-invoices, project: finance }
spec:
schedule: "0 0 5 * * ?"
source: { remote: supplier-ftp, path: /outgoing }
destination: { remote: invoice-archive, path: invoices/incoming }
operation: move
filters: ["*.pdf"]| Field | What it says |
|---|---|
schedule |
A cron with six fields, starting with the seconds, in UTC. 0 0 5 * * ? is every day at 05:00 UTC. |
source, destination |
The rclone remote and the path on it. A remote is the name of a variable that has the remote’s definition, or the definition itself. |
operation |
The rclone command to run: copy, move, sync or another rclone command, such as check. |
filters |
Patterns for the files to move, and only the files that match one of them move. |
The two ends#
Each remote is a variable whose value is the remote’s rclone definition. The password inside it is a placeholder for a secret, so the rest stays readable in Git and reviewable in a pull request:
apiVersion: weik.io/v1
kind: variable
metadata: { name: supplier-ftp, project: finance }
spec:
value: |
type = ftp
host = ftp.supplier.example
user = weikio
pass = {{supplier-ftp-password}}apiVersion: weik.io/v1
kind: variable
metadata: { name: invoice-archive, project: finance }
spec:
value: |
type = azureblob
account = financearchive
key = {{invoice-archive-key}}Set the two secrets with the CLI, never in a file:
$ weikio secret set finance/supplier-ftp-password --env production
$ weikio secret set finance/invoice-archive-key --env productionRemotes and credentials has every way to write a remote, including the one-file form with everything in the transfer itself.
Publish it#
$ weikio apply -f ./finance/The apply checks the transfer’s fields, including that operation is a command the agent’s rclone has, and publishes it as a version. A transfer is an integration like any other: it has versions, a deployment per environment, and an agent that runs it, chosen by the same requirements. Nothing runs until you deploy it.
In the admin UI, New integration with the kind File transfer writes the same document and opens it in the editor.