Envy documentation
Envy gives every Docker container a trusted https://<name>.envy
URL on your machine — automatic DNS, local certificates, and a reverse proxy, with nothing
to configure. This guide covers installing it, turning it on, and getting the most out
of it.
Install
- Download the build for your OS from the download section — macOS (universal
.dmg), Windows (.exeinstaller), or Linux (.AppImage/.deb, x64 & arm64). - Install. On macOS, drag Envy into Applications. On Windows, run the installer. On Linux, make the AppImage executable or install the
.deb. - Launch. Open Envy. It connects to your running Docker engine automatically and lists your containers.
Envy needs a Docker engine (Docker Desktop, OrbStack, or colima). If Docker isn't running, Envy shows an offline state and connects on its own once it's up — see Docker providers.
Enable your URLs
Listing containers works right away, but serving https:// URLs needs a small
privileged helper. Click Enable URLs in the header and approve the single
elevation prompt (your OS's standard admin/password dialog). That one step installs a
background daemon and trusts Envy's local certificate authority.
The daemon owns three things that require elevated privileges:
- DNS on port 53, answering
*.envy(and any custom suffixes). - A reverse proxy on ports 80 and 443, routing each hostname to the right container.
- A trusted certificate authority, added to your system trust store so HTTPS has no warnings.
When the header pill reads URLs live, you're set. You can disable it any time with the power button on the pill, which removes the daemon (one more password prompt).
How it works
Envy watches your Docker socket. For each container it publishes a route on the local
reverse proxy, derived from the container name (and any
domains you assign). The local DNS resolver answers the
matching hostnames, and the local CA issues a TLS certificate on demand — so opening
https://api.envy resolves to your api container over trusted
HTTPS. Nothing leaves your machine.
Container URLs
By default each container is reachable at https://<name>.envy, where
<name> is the container's name. In the Services view, each
container card lists its live URLs — click one to open it in your browser, or copy it with the
copy button.
Containers are grouped by Compose project, so a multi-service stack shows up together. A container needs to expose a port for Envy to route to it; if a container has no published or exposed port, Envy shows “no published URL.”
Custom domains
Prefer shop.test or acme.localhost over .envy?
Open the Domains view and add any suffix — Envy serves trusted HTTPS for it
immediately, no /etc/hosts edits required.
- The primary suffix (the first in the list) is the default: every container gets a
<name>.<primary>URL. - Use Make primary to promote another suffix; new and unassigned containers switch to it.
- Remove a suffix and its URLs stop being served.
Per-container domains
To give a single container its own set of domains, open its Inspect drawer (the domains chip on the card) and choose which suffixes it should answer on. A container restricted this way is reachable only on the domains you pick.
You can also fix domains at the source with a Docker label. Setting
envy.domains on a container makes its domain assignment authoritative — the UI
shows it as locked, so the routing travels with your docker run command or
Compose file:
services:
api:
image: my/api
labels:
envy.domains: "api.acme.test"
Certificates & trust
Envy runs its own certificate authority and adds it to your system trust store when you
enable URLs, so Safari, Chrome, and Firefox show a normal padlock on .envy
URLs — no “Not secure” banner, no exceptions to click. The CA's private key stays on
your machine and is never transmitted. Removing the daemon (or uninstalling) removes the trust.
Menu bar & system tray
Envy lives in your menu bar (macOS) or system tray (Windows / Linux). Click the icon for a menu that mirrors the app:
- Containers, grouped by Compose project, with Start / Stop / Restart per container and Start all / Stop all per project.
- Show Envy to bring the window forward (disabled when it's already open).
- Keep Running in Background, Check for Updates…, Settings…, and Help.
With Keep running in background on, closing the window leaves Envy in the menu bar so your URLs keep serving. Quitting from the menu (or ⌘Q) stops Envy entirely.
Settings
Open Settings from the gear in the sidebar or the menu bar:
- Keep running in background — stay in the menu bar after the window closes.
- Start at login — launch Envy automatically when you log in.
- Updates — see your version and check for a new one on demand.
Updates
Envy checks for updates in the background and downloads them automatically. When a new version is ready, a Restart to update pill appears in the header — click it to relaunch into the new version. You can also trigger a check any time from Settings or the menu bar's Check for Updates….
Trial & license
Envy is free to use for 7 days — every feature, no account, no card. When the trial ends, activate a one-time $10 license to keep going. Open Settings, paste the license key from your purchase email, and activate.
- One license activates on up to 3 devices.
- After activation Envy works offline; it re-validates occasionally.
- To move a license, deactivate it on the old machine to free a slot.
Buy a license whenever you're ready.
Where your data lives
Envy keeps a small amount of state — config.json (domains & per-container
assignments), settings.json (app preferences), and license.json
(license key & activation) — in your OS's per-user app data directory:
macOS ~/Library/Application Support/Envy/
Windows %APPDATA%\Envy\
Linux ~/.config/Envy/
The privileged daemon and the local certificate authority are installed separately and are removed when you disable URLs or uninstall. Nothing here is uploaded anywhere — see the privacy policy.
Docker providers
Envy talks to the standard local Docker socket, so Docker Desktop, OrbStack, and colima all work. It connects automatically when Docker is running and reconnects on its own if you restart the engine. If Docker isn't installed, Envy points you to install it; if it's installed but stopped, Envy offers to start it.
Note for Docker Desktop: container IPs aren't directly routable from the host
on Docker Desktop, so a container needs a published port (-p) for Envy to
reach it. OrbStack and colima route container IPs directly, so exposing a port is enough.
Troubleshooting
| Symptom | Fix |
|---|---|
| Header shows Docker offline | Start Docker Desktop / OrbStack / colima. Envy reconnects automatically. |
| URL won't resolve | Make sure URLs are enabled (the URLs live pill). The DNS daemon must be running. |
| Browser still warns about the certificate | Re-enable URLs to re-install the local CA, then fully quit and reopen the browser so it reloads the trust store. |
| “No published URL” on a container | The container has no reachable port. On Docker Desktop, publish a port with -p. |
| Enabling URLs fails | Another service may hold port 53, 80, or 443. Stop it (e.g. a local nginx/Apache or another proxy) and try again. |
Uninstall
- In Envy, disable URLs (the power button on the header pill) to remove the daemon and the trusted CA.
- Quit Envy from the menu bar / system tray.
- Remove the app: drag Envy to the Trash (macOS), uninstall it from Settings → Apps (Windows), or delete the AppImage /
apt remove envy(Linux). Optionally delete the data directory listed above.
Questions?
Email support@melodic.dev — or buy a license if you haven't yet. We read everything.