A cross-platform, open-source local development environment manager.
Flock is a community alternative to Laravel Herd — a native desktop app that manages local vhosts, SSL certificates, PHP runtimes, database services, and more. Built with Go + Wails + Caddy, it runs on macOS, Linux, and Windows.
- Automatic SSL — Local HTTPS via mkcert, zero configuration
- PHP Management — Multiple PHP versions with per-site FPM pools
- Database Services — MySQL, PostgreSQL, and Redis managed from the GUI
- Node.js Support — Per-site Node version selection
- Plugin Architecture — Extensible to any language stack via a plugin API
- Cross-Platform — Native desktop app for macOS, Linux, and Windows
- System Tray — Runs quietly in the background, always accessible
Linux only:
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.1-dev# Clone the repo
git clone https://github.com/andybarilla/flock.git
cd flock
# Install frontend dependencies
cd frontend && npm install && cd ..
# Run in dev mode (hot reload)
wails dev
# Build for production
wails build# Go tests
go test ./...
# Frontend tests
cd frontend && npm testflock/
├── internal/
│ ├── core/ # App lifecycle and wiring
│ ├── caddy/ # Embedded Caddy server management
│ ├── registry/ # Site registry (sites.json)
│ ├── plugin/ # Plugin host and interfaces
│ ├── ssl/ # mkcert SSL plugin
│ ├── php/ # PHP-FPM plugin
│ ├── databases/ # MySQL, PostgreSQL, Redis plugin
│ ├── node/ # Node.js plugin
│ ├── discovery/ # Plugin discovery and loading
│ ├── external/ # External plugin support
│ └── config/ # Configuration management
├── frontend/ # Svelte + Tailwind + DaisyUI
└── build/ # Build assets and packaging
Core layers:
- Plugin Host — discovers, loads, and manages plugin lifecycle
- Caddy Manager — embeds Caddy as a Go library; manages vhosts and TLS
- Site Registry — persists local sites to
~/.config/flock/sites.json - Wails GUI — native webview with Svelte frontend
See docs/plans/2026-03-03-flock-core-design.md for the full architecture document.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
Check the roadmap for planned features and current status.