Ephemo is an agent-first edge hosting platform for static artifacts. Zero configuration. Runs on Cloudflare's global edge network. Designed to be driven by autonomous agents or human developers with equal fluency.
The fastest way to understand Ephemo is to deploy a site right now. Here is the canonical "Happy Path" from a completely anonymous terminal to a permanently hosted website.
You don't need an account. Just run the deploy command in any directory containing an index.html.
You will instantly receive a live URL and an 8-character Claim Code.
Anonymous sites are deleted after 24 hours. To keep it forever, log in to the Dashboard using your email. Enter your Claim Code in the dashboard to permanently bind the site to your account.
Once logged in, the dashboard displays your permanent API Key. You can use this to bypass the anonymous flow entirely.
With your API Key saved, you can list, update, or delete your sites programmatically.
Ephemo is built on a "Handoff" philosophy. Whether you are a human or an agent, the lifecycle of a site follows a predictable state transition model.
If you are new: npx ephemo ./dir -> Returns a Claim Code.
If you want to save it: npx ephemo claim <slug> <claim_code> -> Site becomes permanent.
If you have an account: npx ephemo login <key> -> All future deploys are permanent.
| Current State | Action | Next State | Expiry Change |
|---|---|---|---|
| None | publish (Anonymous) |
Anonymous | Set to +24 hours |
| Anonymous | update (with code) |
Anonymous | Resets to +24 hours |
| Anonymous | claim (with code) |
Permanent | Purged (Never expires) |
| Permanent | delete |
Inactive | Purged (Offline) |
When an agent deploys anonymously, it receives a claim_url. The agent should present this URL to the human user. The user can then click the link to "Claim" the site into their own dashboard, transitioning the agent's work into a permanent asset.
Every deployment exists in one of two states. The state is determined entirely by whether an API Key was present at the time of deployment.
No account required. The site expires and is purged automatically after 24 hours. The CLI returns a Claim Code valid for exactly 24 hours to transition the site to Permanent status.
Requires an API Key. Sites never expire. You retain full programmatic control to update, delete, or unpublish at any time. Claimed anonymous sites transition to this state.
Ephemo is highly optimized for specific workloads. Understanding these boundaries will save you from trying to force the wrong architecture onto the platform.
All commands use npx ephemo for zero-install execution.
The CLI uses ~/.ephemo_credentials to store your API key locally. Alternatively, set the EPHEMO_API_KEY environment variable to override local files.
| Flag | Description |
|---|---|
| --json | Output strictly machine-readable JSON. Schema: success, url, slug, is_permanent, claim_code, claim_url, expires_at. Unused fields are explicitly null. |
| -y / --silent | Skip all interactive confirmation prompts. Required for agent pipelines. |
| --open / -o | Open the deployed URL in the browser immediately. |
| --anon | Force an anonymous deployment even if local credentials exist. Returns a Claim Code. |
If you are an autonomous agent (like Claude or Hermes) building a workflow on Ephemo, you MUST adhere to this operational contract to avoid stalling or failing.
--json: This ensures all output is machine-readable and predictable. Never try to parse the human-readable text output.-y or --silent: This skips interactive terminal prompts. If you forget this, your process will hang indefinitely waiting for user input.whoami: Before deploying, run npx ephemo whoami --json. If persistent state matters, know whether you are deploying anonymously or to a permanent account.--anon for isolation: If you explicitly want a Claim Code to hand back to the user, pass --anon to force an anonymous deployment, bypassing any saved credentials.npx ephemo logout when switching contexts or to ensure no residual API keys are left in the local filesystem.Ephemo uses standard HTTP status codes and structured JSON errors. Here is what to expect when things go wrong.
For advanced integration and understanding edge architecture.
Deployments under 20MB are buffered in edge memory for instant response. Artifacts up to the limit automatically switch to a multipart streaming workflow — the CLI uploads directly to Cloudflare R2 via pre-signed S3 URLs, bypassing edge memory limits entirely.
.env files, private keys, or sensitive backend code. All deployed assets (HTML, CSS, JS, Images, Videos, PDFs, Fonts) are publicly readable.Deployments are capped at 60/hour per IP (Anonymous) or 60/hour per Account (Permanent). Site visitors are limited to 100 requests/minute per IP, returning a 429 Too Many Requests if exceeded.