rexenv documentation
rexenv runs your whole local web stack natively on your machine — edge proxy with real HTTPS,
a shared web server, seven PHP versions, MySQL/MariaDB/PostgreSQL/Redis, one-click
WordPress, .rex domains, mail catching and public tunnels — from one app.
No Docker, no VM, no hosts-file editing. Native static binaries, downloaded on demand and checksum-pinned. macOS 13+, Windows 11 x64 and Ubuntu 22.04+ on x86_64 or arm64, from the same release — macOS 15 gets every component at its newest version, 13 and 14 run with older pins and without two of them.
The three platforms differ in ways that matter on the pages that follow — how you install, what the first run asks for, where things live, and which components the Windows and Linux builds do not have. Every one of those pages has a macOS / Windows / Linux switch at the top. It opens on the system you are reading from, and a choice you make follows you across the site.
The 60-second version
Section titled “The 60-second version”- Install it —
brew tap rexenv/tap,brew trust rexenv/tap,brew install --cask rexenv. - Open rexenv. It asks for your admin password twice and for Keychain access once: the first two write a DNS resolver and let the edge proxy bind ports 80 and 443, the third trusts a local certificate authority that signs only your own sites.
- New site → WordPress → Create. rexenv provisions the docroot, a database, a certificate and a server block.
- Open
https://yoursite.rex. Real HTTPS, real green lock, no warning page.
- Download the
.exefrom the releases page, verify its checksum, and run it past SmartScreen — More info → Run anyway. The wizard asks for no administrator approval: it installs for your user only. - Open rexenv. It asks twice: one UAC prompt for the
.rexDNS rule, and Windows’ own certificate dialog to trust a local certificate authority that signs only your own sites. - New site → WordPress → Create. rexenv provisions the docroot, a database, a certificate and a server block.
- Open
https://yoursite.rex. Real HTTPS, real green lock, no warning page.
- Install it —
curl -fsSL https://rexenv.rex.bd/install.sh | bash. It adds rexenv’s apt repository and installs therexenvpackage from it, so its dependencies come with it;sudoasks for your password once. - Open rexenv. Your desktop’s password dialog asks twice: once for the
.rexDNS route and the local certificate authority in the system store together, once for the web server on ports 80 and 443. - New site → WordPress → Create. rexenv provisions the docroot, a database, a certificate and a server block.
- Open
https://yoursite.rex. Real HTTPS, real green lock, no warning page.
Everything after that — switching PHP per site, swapping one database engine for another,
reading mail, sharing a tunnel — is one click or one rex command.
What you should know before installing
Section titled “What you should know before installing”- macOS 13 (Ventura) or later, Intel or Apple Silicon, one universal build. On 13 and 14 some components are older builds and PostgreSQL and PHP 8.0 are refused by name — everything is there on macOS 15 (Sequoia). Requirements has the table.
- First run needs an internet connection. rexenv downloads its components — PHP, nginx, MySQL, Caddy and the rest — the first time you use them. Expect up to ~600MB across a full cold start. After that it works offline.
- It lives in the menu bar, with no dock icon. Closing the window hides it; Quit is in the menu-bar menu.
- The build is ad-hoc signed and not yet notarized by Apple. Installing through Homebrew
handles this for you; installing the
.dmgby hand needs one right-click → Open the first time. - Uninstalling has an in-app step first. rexenv installs privileged things that deleting the app cannot remove — a root daemon on port 443, resolver files, and CA trust in your login keychain. Settings → Remove system changes undoes all of it.
| Where things live | |
|---|---|
| Your sites | ~/rexenv/Sites/ |
| Settings, databases and downloaded components | ~/Library/Application Support/dev.rexenv.rexenv/ |
| DNS resolver for your dev TLD | /etc/resolver/rex |
| Local CA trust | your login keychain |
- Windows 11 x64. Windows 10 22H2 is best-effort; arm64 is unsupported, because the PHP and PostgreSQL builds rexenv needs are x64 only.
- First run needs an internet connection. Same components, same pinned versions as macOS, from different publishers, checksum-locked the same way.
- It lives in the tray. Left-click opens the window, right-click opens the menu — the reverse of macOS. Closing the window does not quit it.
- The installer is unsigned, so SmartScreen blocks it once with “Windows protected your PC”, and Run anyway is behind More info. It is a per-user install and asks for no administrator approval.
- Five components are not in this build — Apache, FrankenPHP, Xdebug, Redis and MariaDB. Each is refused by name with the reason.
- Uninstalling has an in-app step first. The NRPT rule, the logon task, the CA trust and
the
rexcopy on yourPathall outlive the app. Settings → Remove system changes undoes all of it.
| Where things live | |
|---|---|
| Your sites | %USERPROFILE%\rexenv\Sites |
| Settings, databases and downloaded components | %LOCALAPPDATA%\rexenv\rexenv\data |
| DNS for your dev TLD | an NRPT rule, answered on 127.0.0.1 |
| Local CA trust | your user’s Root store |
- Ubuntu 22.04 LTS or newer, x86_64 or arm64, a native build for each. Other distributions with systemd-resolved and polkit will probably work; none has been tested.
- First run needs an internet connection. Same components, same pinned versions as macOS, from each publisher’s Linux build, checksum-locked the same way.
- It lives in the tray, in the top bar. Any click opens its menu, which carries Open rexenv. Closing the window does not quit it.
- The app is not code-signed, and nothing needs clicking past: the
.debinstalls throughapt— from rexenv’s own signed apt repository, or as a file — and every file on the release has a.sha256beside it. - Four components are not in this build — Apache, Xdebug, Redis and MariaDB. Each is refused with a message naming Linux. FrankenPHP ships.
- Uninstalling has an in-app step first. The DNS route, the root edge unit and the CA in two stores all outlive the package. Settings → Remove system changes undoes all of it.
| Where things live | |
|---|---|
| Your sites | ~/rexenv/Sites/ |
| Settings, databases and downloaded components | ~/.local/share/rexenv/ |
| DNS for your dev TLD | the rexenv0 link, marked in /etc/rexenv/dns.d/ |
| Local CA trust | the system store and your browsers’ NSS databases |
Platform support
Section titled “Platform support”macOS is the complete build — every web server, every database engine, Xdebug on five PHP
versions. Windows 11 x64 ships from the same release since 0.8.0, smaller by five
components, and Linux — Ubuntu 22.04 or newer, x86_64 and arm64, as a .deb or an
AppImage — since 0.8.8, smaller by four. Each has its own installer, its own DNS mechanism and
its own trust store, and each is documented here side by side, behind the switch at the top of
every page that differs.
Source, and getting help
Section titled “Source, and getting help”rexenv is open source under the Apache License 2.0. The source, every release and the issue tracker are one repository, github.com/rexenv/rexenv — public since 30 September 2026. A bug goes to its issues; a suspected vulnerability goes through its security policy first, not a public issue.
If rexenv will not open
at all, that is almost always the operating system refusing an unsigned build rather than a
bug — Gatekeeper’s right-click → Open on macOS, SmartScreen’s More info → Run anyway on
Windows — or, on Linux, an AppImage missing libfuse2. It won’t open
has each one word for word.