Skip to content

Install

Check Requirements first — the floor is macOS 13 (Ventura) to run, macOS 15 (Sequoia) for every component at its current version, Windows 11 x64, or Ubuntu 22.04 LTS on x86_64 or arm64.

The three installs share almost nothing mechanically: a disk image and Gatekeeper, an unsigned installer and SmartScreen, a .deb and polkit; /etc/resolver, Windows’ NRPT and a dummy network link; a keychain, the CurrentUser Root store, and the system store plus every browser’s own. So each one is written out below rather than cross-referenced. Your own system’s tab is open already — the choice follows you across every page on this site.

Terminal window
curl -fsSL https://rexenv.rex.bd/install.sh | bash

It installs the latest release’s rexenv.app into Applications and opens it — after checking the download against the release’s own .sha256, and only if rexenv is not already installed. An installed copy is left alone and the script says where it is: rexenv updates itself, and a reinstall could put an older build over a newer one. The script is short;

read install.sh before you run it.

No Gatekeeper step, and nothing is bypassed to get there. Gatekeeper checks a file that carries the quarantine attribute, and the downloading app is what sets it: a browser does, curl does not. The script clears the attribute anyway — the same step the Homebrew cask runs — so both paths leave the same app behind. rexenv is still ad-hoc signed and not notarized: running the command is your decision to trust this source, exactly as trusting the tap is.

rex is not put on your PATH by the script: Settings → Command-line tool → Install does it, with one admin prompt.

  1. Tap and install:

    Terminal window
    brew tap rexenv/tap
    brew trust rexenv/tap
    brew install --cask rexenv
  2. Launch it:

    Terminal window
    open -a rexenv

Two things this path gives you that the disk image does not:

  • No Gatekeeper step. The cask’s postflight removes the quarantine attribute, so the app opens on a normal double-click the first time.
  • rex on your PATH automatically, linked into Homebrew’s bin. No Settings toggle needed.
  1. Download {release.dmg} from the releases page.

  2. Download the .dmg.sha256 beside it, and verify:

    Terminal window
    shasum -a 256 -c rexenv_*_universal.dmg.sha256

    It prints OK, or it tells you the file does not match. Checking with -c beats printing a hash and eyeballing it against another one — comparing 64 hex characters by eye is exactly the check people believe they performed.

  3. Open the disk image, drag rexenv into Applications, eject.

  4. Right-click (or Control-click) rexenv in Applications → Open → Open again in the dialog. Once only.

rexenv asks for permission three times — an admin password, a Keychain prompt, and an admin password again. They are expected, they all stay on your machine, and First run explains exactly what each one writes.

rexenv is a menu-bar app: the crowned-R icon in your menu bar is its home, and it has no dock icon. Click the icon for the menu — the stack’s status, Start all and Stop all, your recent sites, About rexenv for the version and licences, and Open rexenv for the window. An open menu updates in place as the stack changes rather than closing on you; only a row appearing or disappearing — a site added, say — still forces macOS to close it. A dock tile appears only while the window is up, so you can Cmd-Tab to it, and goes away when the window closes.

Closing the window does not quit rexenv, and that is deliberate. rex on the command line and the AI-agent endpoint are remote controls for the running app; their sockets are opened by the app’s process and die with it. Through 0.4.0, closing the window quit the app, which took both down — and every public tunnel with them — while your sites kept serving. Quit with Quit rexenv in the menu.

If you turn on Start rexenv at login in Settings → Services, rexenv starts straight into the menu bar with no window and runs Start all, so your sites are back after a reboot without a click — it never downloads anything and never prompts at login. Opening rexenv yourself starts nothing; since 29 September 2026 this is the one toggle, and the separate Start services when rexenv opens switch is gone. The exception is a machine where first-run setup is not finished: there it shows the window, because there is nothing useful it could do quietly on a machine that cannot resolve .rex yet.

rexenv updates itself from Settings → About. With Homebrew, brew update && brew upgrade --cask rexenv also works; with the disk image, quit rexenv — Quit rexenv in the menu-bar menu, since closing the window only hides it — and drag the new copy over the old one. The .rex resolver, a background job that outlives the app, waits until the new copy is whole before it starts from it, so the swap raises no “rexenv quit unexpectedly” report. Updating has the whole picture, including what each refusal means.

Either way your sites, settings and downloaded components are kept — they live in ~/rexenv/Sites and ~/Library/Application Support/dev.rexenv.rexenv/, not inside the app.

On every platform, do not just delete the app. rexenv installs system-level things that deleting it cannot remove — a root daemon and resolver files on macOS; an NRPT rule, a scheduled task and a Path entry on Windows; a DNS route, a root systemd unit and two certificate trusts on Linux. Uninstall has the one in-app step that undoes them.