Ephemeral
AI agents.

Ephemeral gives you disposable workers. On each request a fresh machine starts, does your task with only the tools, files and budget you allow, then disappears. What remains is the result.

Define once. Run anywhere. Leave nothing behind.

  1. 1

    Define the task

    A prompt and input, the files, APIs and websites it may use, the model, and the most it may spend. Save it as a workflow to run it again by name.

  2. 2

    Run it your way

    Call the API, use the CLI, start one in the dashboard or set a schedule. Each run gets a fresh microVM of its own and streams every step as it happens.

  3. 3

    Keep the result

    The output, the timeline and the exact cost are recorded, and a signed callback can deliver them. The machine and everything on it are destroyed.

curl https://app.ephemer.al/v1/runs \
  -H "Authorization: Bearer $EPHEMERAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Find out why this payment failed.",
    "input": { "payment_id": "pay_123" },
    "files": [{ "file": "playbook.md" }],
    "connections": {
      "payments": { "ref": "payments-api", "allowed_methods": ["GET"] }
    },
    "web": { "allow": ["status.example.com"] },
    "shell": false,
    "max_cost_micros": 500000
  }'
Succeededrun_118622d1…4705$0.002618 of $0.50
  1. Queuedbudget $0.50 reserved
  2. MicroVM ready
  3. Worker startedshell off, web on
  4. readplaybook.md
  5. paymentsGET /payments/pay_123 → 200failure_code: insufficient_funds
  6. paymentsGET /payments/pay_123/attempts → 2002 × insufficient_funds
  7. Succeeded3 model calls, 5,101 tokensCause: The customer's bank declined the payment for insufficient funds. Evidence: failure_code: insufficient_funds. Attempts: Both attempts failed for the same reason. Next step: Suggest the customer retry after resolving the balance issue or use another card.
  8. Worker destroyed$0.002618 charged, $0.497382 released

Replayed from a real run of this example against the sample payments API.

playbook.md is a file you upload and payments-api is a connection you save. Set it up step by step

Ephemeral workflows, on your schedule

Save a task as a workflow and run it whenever it is needed: from your backend with new input, from the CLI, or on a timetable like every weekday at 09:00 in Tokyo. Each run starts fresh and is recorded on its own.

  • Any cadence, from every few minutes to monthly, in any time zone
  • A start is skipped while the last run is still going
  • Every run keeps the exact definition it used
PUT /v1/workflows/investigate-payment
{
  "prompt": "Find out why this payment failed.",
  "model": "openai/gpt-6-luna",
  "files": [{ "file": "playbook.md" }],
  "connections": {
    "payments": {
      "ref": "payments-api",
      "allowed_methods": ["GET"]
    }
  },
  "web": { "allow": ["status.example.com"] },
  "timeout_seconds": 120
}

Connect your stack, keep your keys

Give agents your HTTP APIs and MCP servers. Ephemeral holds the credentials and makes each call, so no token ever enters the machine and only the methods or tools you allow get through. Web access passes the same checks.

  • HTTP APIs and MCP servers, signed in with your own keys or accounts
  • Allow only the methods or tools a task needs
  • Every call recorded, credentials removed from responses
Connections for one run
"connections": {
  "payments": {
    "ref": "payments-api",
    "allowed_methods": ["GET"]
  },
  "support": {
    "ref": "helpdesk-mcp",
    "allowed_tools": ["create_ticket"]
  }
},
"web": { "allow": ["status.example.com"] }

Built so nothing lingers

Isolation1 microVM per run

Nothing is shared between runs. Scratch files are discarded with the machine.

Lifetime≤ 1 hour

Five minutes by default. When the timeout ends, the worker is stopped and destroyed.

Connections0 keys in the VM

A broker adds your credentials and enforces the methods or tools you allow.

BudgetHard cap per run

Reserved before the run starts. Model calls stop at the limit. The rest is released.

Files1 MiB each

Mounted read-only at the path you choose, up to 4 MiB in a single run.

Record30 days

Kept 30 days after the run ends, then deleted. With zero data retention, you get only the output, once.

Pay for the seconds it runs

Prepaid credits, no subscription. Each run reserves its budget, is charged for what it used, and releases the rest.

How pricing works
Compute
$0.0002per second
Models
At costas the provider reports it
Credits from
$5with optional automatic top-up

Or run it in your own AWS

The same engine and dashboard as one image, licensed per installation. Export the install files from it and create the stack in your own AWS account.

Read the self-hosting guide
Self-hosted installation
docker login ephemer.al -u dep_…   # the password is your license token
docker run --rm -v "$PWD:/out" \
  ephemer.al/ephemeral/self-hosted:$EPHEMERAL_VERSION setup all /out
aws cloudformation create-stack --stack-name ephemeral \
  --template-body file://ephemeral-aws.yaml \
  --capabilities CAPABILITY_IAM --parameters …

Every run starts clean.

esc

Nothing matches “”.