Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment

The variables evoke reads, and the paths it writes under. Nothing is read from a file it does not own, and nothing is sent anywhere but the adapter you chose.

Variables evoke reads

VariableRead byMeans
TYPESAFE_API_KEYThe jev adapter, when decidingThe classifier's key, from typesafe.ai. Never written to a file
OPENJEV_API_KEYThe openjev adapter, when decidingThe classifier's key, from openjev.sh. Never written to a file
CLOUDFLARE_API_TOKENThe clef and clef_flash adapters, when decidingThe classifier's token, from dash.cloudflare.com. Never written to a file
CLOUDFLARE_ACCOUNT_IDThe clef and clef_flash adapters, when decidingThe account the token belongs to: 32 hex digits in lowercase, which go into the address. Anything else is refused
EVOKE_ANSWERSThe replay adapterA recording to answer from, with adapter = "replay" in evoke.toml
EVOKE_PLATFORMEvery decision, add, show, testlinux or macos: the platform a manifest's platforms is judged by, this machine's when unset. Set it to decide or test as another machine would; a body still runs here
EVOKE_TODAYA body's run, checkYYYY-MM-DD: the day a date argument resolves against, your machine's local day when unset. A value that is no day stops the run
<VAR> of a --env settingA body's runA config value, most often a secret, resolved for that run only
NO_COLORThe terminalSet and not empty: no colour. The spinner and the line editor stay
TERMThe terminalUnset, empty or dumb: no colour, no spinner, no line editor
HOME, XDG_CONFIG_HOME, XDG_STATE_HOME, XDG_CACHE_HOMEPathsWhere the project and the machine-local state live
PATHadd, sync, every runWhere node is found and recorded, and where a declared program or an argv's program is found at each run; git too
GIT_*FetchingYour git configuration and credentials apply; GIT_TERMINAL_PROMPT=0 is set
HTTPS_PROXY, NO_PROXYThe classifier's connectionA proxy the connection goes through, in the CLI and the SDK, and the hosts that bypass it; https_proxy and no_proxy win over the upper-case names. An address that is not http or https is refused, never bypassed. The endpoint itself never moves

Paths

PathHoldsWritten by
$XDG_CONFIG_HOME/evoke/ · ~/.config/evoke/The home projectyou, add, teach, …
$XDG_CACHE_HOME/evoke/store/<h1>/Fetched reflex directories, by content hashadd, sync
$XDG_CACHE_HOME/evoke/answers/<plan>/The adapter's answers, per installed set, utterance and questions askedevery decision, try
$XDG_CACHE_HOME/evoke/baselines/<plan>.jsonevoke test's last verdicts per installed settest
$XDG_CACHE_HOME/evoke/runtime.jsonWhether the node a file body runs under can keep it off the network, as Node 25 and later can; asked once per node binarya file body's run, check
$XDG_STATE_HOME/evoke/log.jsonlOne JSON line per decision; why reads the lastevery decision
$XDG_STATE_HOME/evoke/trust.tomlTrusted project roots and their content digeststrust, every write
$XDG_STATE_HOME/evoke/runtimeThe real path of node a file body runs underadd, sync
$XDG_STATE_HOME/evoke/historyThe REPL's lines, the last 1 000the REPL
$TMPDIR/evoke-…/A body's private temporary folder, for one runevery run; removed after it

$XDG_STATE_HOME defaults to ~/.local/state, and $XDG_CACHE_HOME to ~/.cache. Everything under cache can be deleted. sync and the next decision rebuild it. No key and no config value is ever written under either. The log and the history hold what you typed and what a body returned. Only you can read them.

What a body sees

A file body runs under a scrubbed environment of five variables: PATH, HOME, TMPDIR, LANG, TERM, with TMPDIR a private folder made for the run. It receives its arguments, the input, its config and a signal through the call, and touches what its manifest declares under [needs]: The body. An argv body gets the same five, plus:

VariableHolds
EVOKE_CONFIG_<KEY>Each [config] key, upper-cased, as its value; a plain one under the home expanded
EVOKE_INPUTThe person's own words; the step's words when a plan runs the reflex; empty under evoke run

Secrets reach a body only this way, for the length of one run.

Time

One decision has 30 seconds, shared by the adapter's answer and the body's run. A prompt never counts. The jev adapter gives a request 1.5 seconds once connected, and openjev 3 seconds, since OpenJEV forwards the request onward. clef gives it 6 seconds and clef_flash 3. Each retries once after a connect error or a server error, and waits out a 429 that says how long to wait, within the deadline.

FAQPrivacyGitHub