Infra Setup
Use this when the user wants to change where experiments run: local worktrees, pool slots, or a remote provider such as Modal, E2B, Daytona, AWS, Azure, SSH, manual, or a custom dotted-path provider.
Goals
- Be explicit about the target backend/provider.
- Check prerequisites before mutating evo config.
- Never install provider SDKs silently.
- Give one actionable auth command per provider.
- Keep provider credentials separate from benchmark runtime env.
Flow
- Identify the target:
worktree or pool means local backends.
modal, e2b, ssh:..., or another remote spec means backend=remote.
- If the target is remote, parse the provider choice the same way evo CLI does:
modal
e2b
daytona
aws
azure
manual
ssh:user@host[:port]
- another built-in provider name
- dotted import path for a custom provider
- Check whether
evo is on PATH and whether it is the expected evo-hq-cli package (evo --version). If the provider SDK is missing, evo's provider loader prints the provider-specific extra or SDK package to install; use that message rather than guessing.
- For SDK-backed providers, verify the SDK import only when you can run the check in the same environment that owns the
evo executable. If missing, ask the user before installing it.
- If
evo was installed with uv tool or pip/venv, prefer the matching extra on evo-hq-cli:
uv-tool: uv tool install --reinstall 'evo-hq-cli[<provider-extra>]'
venv / pip: python -m pip install 'evo-hq-cli[<provider-extra>]'
- If
evo was installed with pipx, inject the provider SDK into the same evo-hq-cli environment:
pipx: pipx inject evo-hq-cli <provider-sdk>
- Check auth and show exactly one provider-specific auth command or setup step. Use
references/provider-matrix.md.
- Once prerequisites are satisfied, run the explicit config command:
evo config backend remote --provider <provider> --provider-config ...
Or for local backends:
evo config backend worktree
evo config backend pool --workspaces /abs/slot-a,/abs/slot-b
- Be explicit that incomplete provider setup usually surfaces on
evo new --remote <provider> ..., because that is where remote
allocation and bootstrap actually happen.
- If the benchmark itself needs application keys, configure runtime env
separately with
evo env load <path> --all or
evo env load <path> --allow KEY1,KEY2. Provider auth provisions the
sandbox; runtime env is what benchmark/gate processes see.
Pre-assumptions
Before trying to switch a workspace to a remote provider, confirm the basics:
- the target backend is clear from the user's request; only ask if the
intent is genuinely ambiguous between
worktree, pool, and remote
- the machine running evo has the right provider SDK or transport installed
- the user has auth for that provider available now, not "somewhere else"
- the provider-specific minimum config exists
modal: auth + optional config
e2b: API key + optional config
daytona: API key and API URL/target if needed
aws: creds, region, image, SSH key pair/private key, and usually network config
azure: subscription, resource group, region, SSH key/private key, and VM/image choices
ssh: reachable host, working SSH user, and key/port if needed
manual: reachable remote endpoint URL and bearer token
- for SSH-backed VM providers, the guest assumptions are plausible before allocation:
- the image enables SSH
- the SSH user matches the image
- the image architecture matches the selected instance type
- the host can run evo's remote workspace runtime
Provider notes
See references/provider-matrix.md for the compact provider summary, common config, and provider-specific setup/auth command.
1---2name: infra-setup3description: Non-user-invocable provider/setup reference for evo backend switching, prerequisite checks, and auth/install guidance.4---5
6# Infra Setup
7
8Use this when the user wants to change where experiments run: local worktrees, pool slots, or a remote provider such as Modal, E2B, Daytona, AWS, Azure, SSH, manual, or a custom dotted-path provider.
9
10## Goals
11
12- Be explicit about the target backend/provider.
13- Check prerequisites before mutating evo config.
14- Never install provider SDKs silently.
15- Give one actionable auth command per provider.
16- Keep provider credentials separate from benchmark runtime env.
17
18## Flow
19
201. Identify the target:
21 - `worktree` or `pool` means local backends.
22 - `modal`, `e2b`, `ssh:...`, or another remote spec means `backend=remote`.
232. If the target is remote, parse the provider choice the same way evo CLI does:
24- `modal`
25- `e2b`
26- `daytona`
27- `aws`
28- `azure`
29- `manual`
30- `ssh:user@host[:port]`
31 - another built-in provider name
32 - dotted import path for a custom provider
333. Check whether `evo` is on PATH and whether it is the expected `evo-hq-cli` package (`evo --version`). If the provider SDK is missing, evo's provider loader prints the provider-specific extra or SDK package to install; use that message rather than guessing.
344. For SDK-backed providers, verify the SDK import only when you can run the check in the same environment that owns the `evo` executable. If missing, ask the user before installing it.
35 - If `evo` was installed with `uv tool` or `pip`/`venv`, prefer the matching extra on `evo-hq-cli`:
36 - `uv-tool`: `uv tool install --reinstall 'evo-hq-cli[<provider-extra>]'`
37 - `venv` / `pip`: `python -m pip install 'evo-hq-cli[<provider-extra>]'`
38 - If `evo` was installed with `pipx`, inject the provider SDK into the same `evo-hq-cli` environment:
39 - `pipx`: `pipx inject evo-hq-cli <provider-sdk>`
405. Check auth and show exactly one provider-specific auth command or setup step. Use `references/provider-matrix.md`.
416. Once prerequisites are satisfied, run the explicit config command:
42
43```bash
44evo config backend remote --provider <provider> --provider-config ...
45```
46
47Or for local backends:
48
49```bash
50evo config backend worktree
51evo config backend pool --workspaces /abs/slot-a,/abs/slot-b
52```
53
547. Be explicit that incomplete provider setup usually surfaces on
55 `evo new --remote <provider> ...`, because that is where remote
56 allocation and bootstrap actually happen.
578. If the benchmark itself needs application keys, configure runtime env
58 separately with `evo env load <path> --all` or
59 `evo env load <path> --allow KEY1,KEY2`. Provider auth provisions the
60 sandbox; runtime env is what benchmark/gate processes see.
61
62## Pre-assumptions
63
64Before trying to switch a workspace to a remote provider, confirm the basics:
65
66- the target backend is clear from the user's request; only ask if the
67 intent is genuinely ambiguous between `worktree`, `pool`, and `remote`
68- the machine running evo has the right provider SDK or transport installed
69- the user has auth for that provider available now, not "somewhere else"
70- the provider-specific minimum config exists
71 - `modal`: auth + optional config
72 - `e2b`: API key + optional config
73 - `daytona`: API key and API URL/target if needed
74 - `aws`: creds, region, image, SSH key pair/private key, and usually network config
75 - `azure`: subscription, resource group, region, SSH key/private key, and VM/image choices
76 - `ssh`: reachable host, working SSH user, and key/port if needed
77 - `manual`: reachable remote endpoint URL and bearer token
78- for SSH-backed VM providers, the guest assumptions are plausible before allocation:
79 - the image enables SSH
80 - the SSH user matches the image
81 - the image architecture matches the selected instance type
82 - the host can run evo's remote workspace runtime
83
84## Provider notes
85
86See `references/provider-matrix.md` for the compact provider summary, common config, and provider-specific setup/auth command.