A local development environment manager for macOS. Run PHP sites, databases, caches, and more with a single app.
Burd provides both a desktop GUI and a powerful CLI to manage FrankenPHP instances, databases, domains with automatic SSL, mail testing, tunnels, and other services — everything you need for local PHP development.
- FrankenPHP instances with per-project PHP configuration
- Automatic domains — link any directory to
yoursite.burdwith one command - SSL out of the box — powered by Caddy and mkcert
- Park directories — every subdirectory becomes a
.burddomain automatically - Database management — create, drop, import, export, and shell into databases
- Project scaffolding —
burd new laravel myappand you're running - Environment fixer — detects
.envmismatches and fixes them - Tunnel sharing — expose local sites to the internet via frpc
- Health checks —
burd doctordiagnoses common issues - MCP server —
burd mcplets AI agents drive Burd - Self-updating CLI —
burd upgradepulls the latest release from GitHub
- macOS — Apple Silicon (aarch64) and Intel (x86_64) are both supported
- Releases are code-signed and notarized by Apple
brew tap digitalnodecom/tap
brew install burd # the burd CLI
brew install --cask burd # the Burd.app desktop appInstalling the cask from a third-party tap may require brew trust digitalnodecom/tap first.
Download the latest .dmg from Releases and drag Burd to your Applications folder.
The burd CLI is also published as a standalone binary — burd-darwin-aarch64 (Apple Silicon) and burd-darwin-x64 (Intel) — for use without the desktop app. Once installed, keep it current with:
burd upgrade| Service | Default Port | Description |
|---|---|---|
| PHP | 8000 | FrankenPHP application server |
| PHP Park | 8888 | Serves every parked directory (one instance) |
| MariaDB | 3330 | SQL database |
| MySQL | 3306 | SQL database |
| PostgreSQL | 5432 | SQL database |
| MongoDB | 27017 | NoSQL database |
| Redis | 6379 | Cache and session store |
| Valkey | 6380 | Redis-compatible alternative |
| Memcached | 11211 | Memory cache |
| Mailpit | 8025 | Local mail testing (SMTP on 1025) |
| Meilisearch | 7700 | Full-text search engine |
| Typesense | 8108 | Full-text search engine |
| MinIO | 9000 | S3-compatible object storage (console on 9001) |
| Beanstalkd | 11300 | Job queue |
| Centrifugo | 8000 | Real-time messaging |
| Bun | 3000 | JS/TS runtime for Node-style projects |
| Gitea | 3000 | Self-hosted Git service |
| Tunnels (frpc) | 7400 | Expose local sites to the internet |
| Caddy Server | 443 | Reverse proxy and SSL (managed internally) |
Local sites resolve on the .burd TLD.
# Link a site
cd ~/projects/myapp
burd link myapp # available at myapp.burd
# Or set up the current directory in one step
burd init
# Create a new project (laravel, wordpress, bedrock)
burd new laravel blog # scaffolds + links + configures
burd setup # interactive wizard for an existing project
# Park a directory (every subfolder becomes a .burd domain)
burd park
# Instance control
burd start / stop / restart [name]
burd status
burd logs [name] --follow
burd versions
# Database operations
burd db list
burd db import myapp dump.sql
burd db export myapp
burd db shell myapp
burd db drop myapp
# Native database tools with auto-connection
burd mysql mysqldump mydb
burd postgres psql mydb
# Environment management
burd env check # compare .env with running services
burd env fix # interactive fixer
# SSL
burd secure myapp # enable HTTPS
burd unsecure myapp # disable HTTPS
burd open myapp # open in browser
# Proxy non-PHP apps
burd proxy api 3000 # proxy api.burd to localhost:3000
burd unproxy api
# Share with the internet
burd share --subdomain myapp
# Diagnostics and updates
burd doctor # check services, config, connectivity
burd upgrade # self-update to latest version
# AI agent integration
burd mcp # run the MCP server over stdioRun burd --help for the full command reference, or see docs/CLI.md.
Additional documentation lives in docs/:
- Node.js 20+
- Rust (stable)
- Xcode Command Line Tools
git clone https://github.com/digitalnodecom/burd.git
cd burd
npm install
npm run tauri dev # launches the desktop app
npm run devstarts the SvelteKit frontend only. Usenpm run tauri devto run the actual app.
# Desktop app
npm run tauri build
# CLI only
cd src-tauri && cargo build --release --bin burd# Frontend checks (from repo root)
npm run check
# Rust checks
cd src-tauri
cargo fmt --check
cargo clippy -- -D warnings
cargo testburd/
├── src/ # SvelteKit frontend
│ ├── lib/sections/ # UI sections (instances, domains, services, ...)
│ └── routes/ # Page routes
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── cli/ # CLI command implementations
│ │ ├── commands/ # Tauri IPC handlers
│ │ ├── services/ # Service integrations
│ │ └── bin/burd.rs # CLI binary entry point
│ ├── helper/ # Privileged helper daemon
│ └── services.json # Service definitions and versions
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE
See CONTRIBUTING.md for development setup, coding standards, and the pull request process.
Found a vulnerability? Please report it privately — see SECURITY.md.
Burd is source-available, not open source.
It is licensed under PolyForm Noncommercial 1.0.0: you may use, modify, and share it freely for noncommercial purposes only. Any commercial use is prohibited. See the LICENSE for the exact terms.
