Yerd — Local PHP Dev Environment (Rust)
Yerd: aplikasi desktop Rust untuk local PHP development di macOS/Linux. Daemon rootless, .test domain otomatis, multi-PHP per-site, DB native, tunnel Cloudflare, tanpa Docker.
Apa itu Yerd?
Yerd adalah aplikasi desktop open-source yang menyediakan local PHP development environment cepat dan ringan untuk macOS & Linux. Tanpa Docker, tanpa VM, tanpa subscription. Setiap proyek langsung live di domain .test dengan PHP version di-pin per-site.
- Repo: github.com/forjedio/yerd
- Lisensi: MIT
- Bahasa inti: Rust (TLS pakai
rustls, tanpa OpenSSL, tanpa Electron) - Posisi: alternatif rootless untuk Laravel Valet / Herd / EnvKit, khusus macOS & Linux
Arsitektur — privilege separation
Yerd memisahkan hak akses jadi tiga tier ketat:
| Komponen | Peran | Hak |
|---|---|---|
yerdd |
Daemon per-user (~8 MB), satu sumber kebenaran. Memiliki semua state + serve proxy, DNS, PHP-FPM pool | Unprivileged |
yerd |
CLI client, ngobrol ke daemon via socket per-user | Unprivileged |
yerd-helper |
One-shot binary, hanya operasi yang wajib root (CA trust, DNS resolver, port binding) lalu keluar | Root, sementara |
Setup naik sekali via sudo yerd elevate. GUI & daemon tidak pernah jalan sebagai root. Logic daemon tidak pernah di-reimplement di CLI/GUI — mencegah drift antar antarmuka.
Fitur unggulan
- Zero-config sites — drop proyek di parked folder, langsung live di
<name>.test, web root framework auto-detected - Trusted HTTPS per-site dari CA lokal self-generated — tanpa browser warning, tanpa mkcert
- Multi-PHP dengan pinning per-site (
yerd use <site> 8.3) - DB native — MySQL, MariaDB, PostgreSQL, Redis jalan sebagai process, bukan container
- Mail capture + Laravel dump/query inspector (deteksi N+1, slow query)
- Public sharing satu klik via Cloudflare Tunnel — tanpa akun ngrok, tanpa buka port
- Tooling on-demand — Composer, Node, Bun sebagai standalone binary, tanpa package manager sistem
- Self-diagnosing —
yerd status&yerd doctor(+doctor fixuntuk auto-remediasi) - Quiet by design — tidak ada network call kecuali yang eksplisit diminta; PHP update notify-only
Quick start
yerd install php 8.5 # install versi PHP
yerd use 8.5 # set default global
yerd park ~/Sites # park folder; subfolder jadi .test site
yerd link my-app ~/code/myapp # link satu proyek
yerd secure my-app # aktifkan HTTPS (trusted local CA)
yerd use my-app 8.3 # pin PHP per-site
yerd db create mysql my_app # buat database
yerd tunnel share my-app # dapat public URL via Cloudflare Tunnel
yerd status # cek service jalan
yerd doctor # diagnose
yerd doctor fix # apply safe fix
Tambah --json ke command apa pun untuk output machine-readable.
Paket rilis
| Platform | Format |
|---|---|
| macOS (Apple Silicon) | .dmg |
| Linux Debian/Ubuntu | .deb (x86-64, arm64) |
| Linux Arch | .pkg.tar.zst |
| Linux Fedora | .rpm (x86-64, arm64) |
Catatan implementasi (Rust)
- Logic murni di library crates, I/O di-belakang trait:
ProcessSpawner,TrustStore,ResolverInstaller,PortBinder,Clock— mudah di-test & di-mock - TLS reverse proxy + embedded DNS bawaan
- Fallback: kalau
.testrouting tidak mungkin di mesin terkunci, situs tetap reachable dihttp://localhost:8080/~<name>.test - Yerd v2 = ground-up rewrite dari v1 berbasis Go, dibangun ulang di Rust demi cross-platform, rootless, dan maintainability
Yerd vs EnvKit vs Herd vs Valet
| Yerd | EnvKit | Laravel Herd | Valet | |
|---|---|---|---|---|
| Platform | macOS + Linux | Windows + macOS | macOS (+ Win) | macOS + Linux |
| Bahasa inti | Rust | — | — | PHP |
| Docker/VM | Tidak | Tidak | Tidak | Tidak |
| Rootless daemon | Ya (privilege separation ketat) | Tray app | Tray app | Root-ish (DNS) |
| Multi-PHP per-site | Ya | Ya | Ya | Ya |
Trusted .test HTTPS |
Ya (CA lokal) | Ya | Ya | Ya (mkcert) |
| DB native (MySQL/PG/Redis) | Ya | Ya | Sebagian | Manual |
| Mail capture + dump inspector | Ya | Ya | Pro | Tidak |
| Public tunnel | Cloudflare Tunnel | — | Expose (Pro) | Ngrok/manual |
| MCP / AI control | — | Ya | — | — |
Yerd unggul di filosofi rootless + Rust dan Linux support penuh. EnvKit unggul di Windows + MCP. Lihat juga: EnvKit, Caddy.
Kapan cocok
- Developer PHP/Laravel di macOS atau Linux yang mau local env tanpa Docker
- Butuh public URL sementara untuk webhook/demo tanpa konfigurasi port forwarding
- Tim yang sensitif privilege — daemon tidak pernah root setelah setup awal
- Suka CLI-first + output
--jsonuntuk scripting
Kapan bukan
- Windows sebagai host utama (belum didukung → pilih EnvKit)
- Production server → tetap Nginx/Caddy + Docker + CrowdSec di edge
- Butuh container isolation antar proyek (Yerd = process native, bukan sandbox)
Tautan
- Repo: https://github.com/forjedio/yerd
- Creator: Forjed
- Alternatif terkait: EnvKit, Caddy, Nginx Proxy Manager