Have you ever wanted a lightweight, configurable way to automate file transfers and the commands surrounding them?
Meet Vento β a CLI tool written in Rust that lets you define file transfers and pre/post actions with a single YAML file.
π What is Vento?
Vento is a lightweight CLI tool to automate file transfers and job execution workflows.
Itβs currently focused on SFTP but designed with future protocol extensibility in mind.
Key Features (v0.1.0):
- β YAML-based transfer profile definition
- π Upload/download files (SFTP supported)
- π§ Execute custom commands:
- Before transfer
- After transfer
- On error
- π Logging to file or console
- βοΈ Written in Rust β fast & minimal
π§° Use Case Example
Imagine you want to automate:
- Compressing a file
- Uploading it to a remote server (SFTP)
- Archiving it locally
- And logging if something fails
In ~/.config/vento/config.yaml
defaultProfileFile: "/path/to/profiles.yaml"
logLevel: "info"
logFile: "/tmp/vento.log"
logStdout: true
In profiles.yaml
:
transferProfiles:
- profileId: "upload-report"
source:
type: "local"
path: "/data/report.csv"
trigger:
type: "manual"
destination:
type: "sftp"
host: "sftp.example.com"
path: "/upload/report.csv"
authentication:
method: "env_key"
username: "user"
envKeyRef: "SFTP_PRIVATE_KEY_PATH"
preTransferCommand: "gzip /data/report.csv"
postTransferCommand: "mv /data/report.csv.gz /archive/"
onErrorCommand: "echo 'Transfer failed' >> /tmp/vento_error.log"
Then just run:
vento transfer --profile-id upload-report
You can override the config.yaml path by specifying the --config
option.
vento --config /your/custom/config/path transfer --profile-id upload-report
π¦ Installation
Option 1: GitHub Releases (Recommended)
- Download from: β‘ GitHub Releases
- Extract the binary and move it to a directory in your
$PATH
.
Option 2: Homebrew
brew tap kyotalab/vento
brew install vento
Option 3: Build from source
git clone https://github.com/kyotalab/vento.git
cd vento
cargo build --release
π‘ Notes
- Vento does not handle scheduling. Use
cron
,systemd
, or similar tools to run the CLI on schedule. - Shell command behavior is OS-dependent.
- macOS/Linux: via
sh -c
- Windows: via
cmd.exe /C
- macOS/Linux: via
- Authentication secrets can be passed via environment variables.
π Roadmap
Hereβs whatβs next:
- Support for more protocols: SCP, HTTP(S), cloud storage
- Retry mechanisms and webhook notifications
- Cron-like native scheduler
- Plugin support for custom workflows
π₯ Ideal For
- DevOps or SREs working with file integrations
- Teams replacing legacy transfer tools with OSS
- Anyone who loves YAML, Rust, and CLI productivity
π Get Involved
Vento is still young and evolving.
Try it out, and Iβd love to hear your feedback!
π GitHub Repo
β Star it / Fork it / Use it
Thanks for reading! Feel free to share thoughts, ideas, or use cases in the comments.
Top comments (0)