Ephemr CLI
The ephemr command-line tool publishes, lists, and deletes pages from your terminal. It's a thin wrapper over the public API at /api/v1 with a couple of conveniences — it auto-zips a directory, remembers your API key after ephemr login, and translates API errors into plain English.
Install
Homebrew (macOS, Linux) — recommended. Handles upgrades, sidesteps macOS Gatekeeper entirely:
brew install veturu/ephemr/ephemr
Install script — detects your OS/arch and places the binary on $PATH:
curl -sSf https://ephemr.io/install.sh | sh
GitHub Releases — if you need a pinned version or a stable URL for a Dockerfile, binaries for every release live at github.com/veturu/homebrew-ephemr/releases. The install script above pulls the same files.
Authenticate
Create an API key at /portal/keys, then:
ephemr login # pastes the key, stored in ~/.config/ephemr/config.json (mode 0600)
For CI, export it instead: EPHEMR_API_KEY=eph_live_.... Any --api-key flag takes precedence over both.
Publish a page
# pack a directory on the fly (must contain index.html) ephemr publish ./site/ # or upload an existing zip ephemr publish ./site.zip # publish to a stable alias URL, replacing the previous target ephemr publish ./site/ --alias myapp
Manage pages
ephemr list # slug, status, expiry, URL ephemr show <slug> # details for one page ephemr events <slug> # lifecycle timeline ephemr open <slug> # open the URL in your browser ephemr delete <slug> # asks for confirmation; add --yes to skip
Aliases
ephemr alias list ephemr alias create myapp ephemr alias delete myapp
Scripting
Add --json to any read command to emit machine-readable output:
ephemr list --json | jq '.[] | select(.status=="active") | .slug'
Env vars & files
| Name | Purpose |
|---|---|
EPHEMR_API_KEY | API key (overrides config file). |
EPHEMR_API_BASE | API base URL. Defaults to https://ephemr.io. |
~/.config/ephemr/config.json | Written by ephemr login, mode 0600. Removed by ephemr logout. |