1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Environment
Who a run acts as is never read from the environment; these variables configure hosts only.
| variable | read by | what |
|---|---|---|
| `ATLIBS_SERVER_STATE` | `atlibs`, Node CLI, node-hono | the state dir (default `~/.atlibs-server`): sealed sessions, attestation and did:keys, the records ledger. Keep it private; share it between processes to share sessions |
| `ATLIBS_ORIGIN` | `atlibs serve`, node-hono | the public origin (same as `--origin`): OAuth client ids and callbacks live on it |
| `ATLIBS_BUDGET` | `atlibs`, Node CLI | JSON merged over a run's budget; `"unlimited"` for `calls`, `callsPerMinute`, `events`, `wallMs`; `ioBytes` (up to 16 MiB) for bigger events ([limits](limits.md)) |
| `ATLIBS_HTTP` | `atlibs`, Node CLI | JSON, or `@file` of it: the origins `com.fedfork.exec.http.fetch` may reach, each with the headers the host adds (`{"https://api.anthropic.com":{"headers":{"x-api-key":"..."}}}`) or a service-auth token it mints per request with the run's session (`{"https://cocore.dev":{"serviceAuth":{"aud":"did:web:cocore.dev","lxm":"dev.cocore.inference.dispatch"}}}`); a module reaches those its module.json `http` lists too ([calls](../modules/calls.md#plain-http)). Keep the file private |
| `ATLIBS_HELD` | `atlibs`, Node CLI | JSON, or `@file` of it: `{ name: value }`, the [held values](../modules/calls.md#held-values) each run starts with (a composition's: the root's run); counted against `heldBytes` |
| `ATLIBS_WASM_CONCURRENCY` | `atlibs`, Node | wasm runs executing at once per process (default: the core count); not a positive integer: exit 1 at startup |
| `ATLIBS_ALLOW_PRIVATE` | `atlibs`, Node | `1`: DID, PDS and blob lookups may use http and private addresses (local development, tests) |
| `ATLIBS_PLC_URL` | `atlibs` | the PLC directory (default `https://plc.directory`) |
| `ATLIBS_HANDLE_RESOLVER` | `atlibs` | where handles resolve (default `https://public.api.bsky.app`); the DID document must claim the handle back |
| `ATLIBS_BROWSER` | `atlibs login` | the command that opens the sign-in URL (default `open` / `xdg-open`); the URL is printed either way |
| `ATLIBS_IROH_KEY` | iroh transport | the ssh private key for iroh sessions (default `<state>/iroh_ed25519`) |
| `ATLIBS_TRANSPORTS` | Node CLI | comma-separated module paths, each exporting `transport` ([Transports](../transports.md)) |
| `ATLIBS_STAGE` | node-hono | the stage.json to serve (default `staged/stage.json`) |
| `ATLIBS_EXTRA_CA` | `atlibs` | tests only: a PEM file of extra roots trusted for `wss://` |
| `PORT` | node-hono | listen port (default 8788) |
| `XDG_CACHE_HOME` | `atlibs publish` | its cache: `$XDG_CACHE_HOME/atlibs/<did>/` (default `~/.cache/atlibs/<did>/`) |
| `CONTAINER_ENGINE` | `atlibs publish`, `atlibs verify` | the container engine (default: the first of podman, docker, `container` whose `info` answers) |
Previous: [Limits](limits.md) | Next: [Security](security.md)