Ferry for SilverStripe
sake sync scripts.Ferry reads your .env, syncs public/assets/, and runs vendor/bin/sake dev/build flush=1 automatically after every pull. Works with SilverStripe 4, 5, and legacy 3 setups.
SilverStripe's ecosystem has solid tools for most things — sake, the ORM, build tasks — but not for the database sync ritual. Most teams write their own bash script per project, copy it around, and maintain it by hand. Ferry replaces those scripts with a single UI that works the same across every SilverStripe site you manage.
Auto-detection looks for vendor/silverstripe/ or app/_config.php. Credentials come from .env using the SS_DATABASE_* keys (SS_DATABASE_SERVER, SS_DATABASE_USERNAME, SS_DATABASE_PASSWORD, SS_DATABASE_NAME). Legacy _ss_environment.php setups work too.
The default file sync path is public/assets/ — where user uploads land in modern SilverStripe. The default post-pull hook runs vendor/bin/sake dev/build flush=1, so your local schema is reconciled and caches are flushed the moment the pull finishes. You're not staring at a half-broken admin wondering which manual step you forgot.
Built for SilverStripe workflows
Auto-populates host, database, user, password from your SilverStripe .env. Legacy _ss_environment.php is handled too.
The default file sync path points where user uploads actually live in SilverStripe 4+. Add more paths if your install uses custom upload locations.
Ferry ships with vendor/bin/sake dev/build flush=1 as the default post-pull hook, so your local schema and cache are consistent right after the import. Click Restore Default any time you want to reset.
Most SilverStripe sites don't hammer URLs into the database as aggressively as WordPress, but when they do, Ferry's two-form sed pass handles plain text and JSON-escaped URLs with a preview before you run.
Every hook slot runs through zsh from your local document root. Chain composer install, sake tasks, cache clears — whatever your stack needs.
Filter by pulls, pushes, and backups. See exactly which site was touched, when, and what happened — every step with its output.
Operations
mysqldump remote, stream, import. Ferry runs sake dev/build flush=1 as the default post-pull hook so your local schema is up to date the moment the pull finishes.
rsync pulls only changed assets. Skip generated thumbnails and resized variants with per-path excludes if you'd rather regenerate them locally.
Push your local database to a staging environment for QA. Production pushes require a confirmation sheet — no chance of clicking through a prod overwrite by accident.
One-click timestamped backup before you run a destructive dev/build or upgrade a module. Auto-rotation keeps the last N backups per site.
Pricing
Ferry is in early access beta. Download it, use it on real projects, tell us what breaks. Pricing comes later.
Download for macOS