Problem
There are currently only two node startup modes:
| Mode |
Env var |
Starts as |
After test |
| Persistent |
EPHEMERAL=false (default) |
running — starts workers immediately, requires TARGET_URL |
standby |
| Ephemeral |
EPHEMERAL=true |
ready — waits for POST /config |
idle (one-shot) |
There is no mode for a long-running node that starts idle and waits for a test to be pushed via API, then returns to ready after the test completes so it can accept another.
Desired behaviour
A persistent node should be startable with no initial test config:
- Node starts in
ready state — no workers, no TARGET_URL required
- Operator pushes a test via
POST /config
- Test runs for its
duration
- Node returns to
ready state (not idle, not standby)
- Operator can push another
POST /config → repeat
This is the natural model for a pool of always-on load test nodes managed by a control plane.
Proposed implementation
Add a NODE_MODE env var (or reuse EPHEMERAL semantics):
NODE_MODE=ready # starts ready, returns to ready after each test (persistent)
NODE_MODE=ephemeral # existing EPHEMERAL=true behaviour (one-shot)
# unset = existing default (starts running immediately from env vars)
Or simpler: when EPHEMERAL=false and TARGET_URL is not set, start in ready mode instead of erroring.
Current workaround
EPHEMERAL=true without SELF_DESTRUCT_CMD — node goes to idle after test but still accepts a new POST /config. Works but semantically incorrect (reports as ephemeral, node_state is idle not ready between tests).
Related
Problem
There are currently only two node startup modes:
EPHEMERAL=false(default)running— starts workers immediately, requiresTARGET_URLstandbyEPHEMERAL=trueready— waits forPOST /configidle(one-shot)There is no mode for a long-running node that starts idle and waits for a test to be pushed via API, then returns to ready after the test completes so it can accept another.
Desired behaviour
A persistent node should be startable with no initial test config:
readystate — no workers, noTARGET_URLrequiredPOST /configdurationreadystate (notidle, notstandby)POST /config→ repeatThis is the natural model for a pool of always-on load test nodes managed by a control plane.
Proposed implementation
Add a
NODE_MODEenv var (or reuseEPHEMERALsemantics):Or simpler: when
EPHEMERAL=falseandTARGET_URLis not set, start inreadymode instead of erroring.Current workaround
EPHEMERAL=truewithoutSELF_DESTRUCT_CMD— node goes toidleafter test but still accepts a newPOST /config. Works but semantically incorrect (reports as ephemeral,node_stateisidlenotreadybetween tests).Related