Ferry for Statamic
Pulls the database. Syncs content/, users/, and storage/app/public/. Clears the Statamic stache automatically. One gesture for both sides of the stack.
Statamic is the awkward one. It's built on Laravel, so artisan and .env look familiar, but much of the actual content lives in flat files inside content/ — YAML, Markdown, images. Users can live in files too. The database is optional for some projects and critical for others. Any sync tool that treats Statamic like "Laravel with a CMS on top" misses half the story.
Ferry's Statamic preset reflects this. Auto-detection looks for artisan combined with a content/ directory, or statamic/cms in composer.json. Database credentials come from .env using the standard Laravel DB_* keys. The default file sync paths cover everywhere Statamic writes: storage/app/public/ for user uploads, content/ for pages and collections, and users/ for flat-file user accounts.
Ferry's default Statamic post-pull hook runs php artisan cache:clear and php artisan config:clear so the stache and config caches rebuild from whatever you just pulled. If your project uses the database for users or content, a plain database pull is enough; if it's file-based, the file sync side does the heavy lifting. Ferry doesn't force a choice — pull both, push both, whichever operation makes sense for your setup.
Built for Statamic workflows
Same DB_* keys as Laravel, because Statamic sits on the Laravel foundation. Ferry reads them from .env and fills in the config form.
Three default sync paths — the trinity of Statamic locations that actually contain state. File-based users get synced. Flat-file content gets synced. Uploads get synced.
The default post-pull hook chains php artisan cache:clear and php artisan config:clear. Add php please stache:clear on top if you want the Statamic stache rebuilt from scratch.
Statamic can run entirely file-based, entirely DB-based, or somewhere in between. Ferry lets you pull both sides — or just the one you care about — without being opinionated about which mode is "right".
Pre/post hooks run through zsh from your local document root. Chain multiple commands with &&, pipe output, set environment variables — whatever your shell supports.
Mark your live site as production and every push to it demands explicit confirmation. No muscle-memory overwrites of the site that actually matters.
Operations
For Statamic projects that use the database for users, forms, or the Statamic Pro features. mysqldump over SSH, stream, import, post-pull hook clears caches. For file-only projects, skip this and just pull files.
Three default sync paths. rsync the lot and the flat-file side of your Statamic site is in sync with production. Exclude .git/ or generated cache subdirectories per path.
Push local content/ to a staging environment so collaborators can preview. Hooks can run php please stache:clear on the remote after the push lands.
One-click timestamped DB backup before you do something risky. Auto-rotation keeps the last N. Restore is gunzip | mysql from the terminal.
Pricing
Ferry is in early access beta. Download it, use it on real projects, tell us what breaks. Pricing comes later.
Download for macOS