Reference
Configuration
Generated by
scripts/gen-docs-referencefromcore/config/index.jsand everyprocess.env.VYRE_read in the shipped code. Do not edit this page: edit the code, then runnpm run docs:ref.
Vyre keeps everything personal under VYRE_HOME (default ~/.vyre), never in the repository. Settings live in ~/.vyre/config.json. A missing file is fine: a fresh install has none, and every key has a default. A broken file does not stop vyred; it starts on the defaults and reports the problem.
Onboarding and commands like vyre name and vyre owner write this file for you. Edit it by hand only for what they do not cover, then restart vyred with vyre down and vyre up.
config.json
| Key | Type | Default | What it is for |
|---|---|---|---|
name | string | unset | This box's name: its address is <name>.vyre.run. Set when the Vyre app adds this server to a space. |
role | 'box'\|'local' | none | box for the always-on server, local for a Mac. Decides which modules start. |
machine | 'solo'\|'server'\|'device' | none | Not described yet. |
projectsDir | string | none | The folder new projects are made in. On a box with a /work folder and no projectsDir set, /work/projects when the box is new (nothing in ~/Vyre/projects) or its homes were moved with projects.move; otherwise ~/Vyre/projects. |
roots | string[] | none | More folders to look in for projects. |
me | object | see below | Who you are, so memory can tell your own people and domains from everyone else's. |
me.domains | string[] | none | Domains that are yours. |
me.emails | string[] | none | Email addresses that are yours. Their domains count as yours too. |
transcripts | string[] | none | Where Claude Code keeps session transcripts. Recall indexes these. |
modules | object | see below | Modules to start or stop against their role. |
modules.enable | string[] | none | Modules to start even where their role says not to. |
modules.disable | string[] | none | Modules never to start. |
network | object | see network | How this machine is reached. See Install. |
onboard | any | unset | Onboarding's own settings. |
owner | { id: string } | unset | The person's own, non-secret identity. Written only by core/onboard's own startup, never by a tool's input. |
glass | { roots?: string[], egress: { enabled: boolean, sites: string[] } } | none | Not described yet. |
computers | { tailnet: { enabled: boolean, tag: string }, [k: string]: any } | none | Not described yet. |
hooks | { enabled: boolean, port: number, routes: Record<string, { scheme: string, header: string, secret: string, opened?: string }> } | none | Not described yet. |
theme | { colors?: { dark?: Record<string, string>, light?: Record<string, string> } } | unset | Your colours, over the defaults in core/config/theme.js. The box serves them as /theme.css. |
app | { root: boolean } | none | Not described yet. |
term | { keep_hours: number, max?: number, shell?: string } | none | Terminals in the browser. keep_hours: how long a terminal nobody is looking at is kept before it ends (12). max: how many may be open at once (8). shell: the shell to run, in place of your login shell. |
projects | { move?: 'enabled' } | unset | Not described yet. |
network
| Key | Type | Default | What it is for |
|---|---|---|---|
network.address | string | unset | The https URL the Deck is served at. |
network.domain | string | unset | The domain the box's name is under. |
network.via | 'vyre.run' | unset | vyre.run for a name under vyre.run, ts.net for the tailnet's own name. |
network.port | number | unset | The port the tailnet listener serves on. |
network.box | string | unset | On a Mac: the address of the box it is paired with. |
network.onboardPort | number | unset | The loopback port onboarding listens on. 7300 when unset, except 7301 on a Mac chosen as server, which never binds 7300. |
network.ownerSeen | string | unset | When the owner was first seen on the tailnet. Written by Vyre. |
network.origins | string[] | unset | Other sites whose pages may call this box from the owner's browser, with CORS: Vyre's hosted app. ["https://app.vyre.run"] when unset; [] turns it off. Each call but the reachability probe and the token exchange needs a person session. |
Modules keep their own settings under a key named after them (vault, recall, learn, and so on). Their pages describe them.
Environment variables
Vyre reads these when they are set. None is needed for normal use.
| Variable | What it does | Read in |
|---|---|---|
VYRE_ACCOUNTS_HOME | Not described yet. | core/config/index.js, core/daemon/index.js, core/daemon/ownserver-host.js, core/recall/indexer.js, core/sessions/index.js, core/sessions/spawn.js, core/spawner/main.js, core/switchboard/index.js |
VYRE_ACCOUNT_UID_MAX | Not described yet. | core/spawner/main.js, core/switchboard/index.js |
VYRE_ACCOUNT_UID_MIN | Not described yet. | core/spawner/main.js, core/switchboard/index.js |
VYRE_ACME_DIRECTORY | The ACME server certificates come from, in place of Let's Encrypt. With it set, Vyre does not wait for DNS. | core/wink/index.js |
VYRE_ADB_BIN | Not described yet. | core/cli/commands/phone.js |
VYRE_AGENT_GID | Not described yet. | core/spawner/main.js, core/switchboard/project-access.js |
VYRE_AGENT_HOME | Not described yet. | core/daemon/index.js, core/sessions/spawn.js, core/spawner/main.js |
VYRE_AGENT_UID | Not described yet. | core/spawner/main.js |
VYRE_ALLOW_DIALOGS | 1: a home other than ~/.vyre that you keep on purpose may raise Touch ID and other prompts. Never under tests; VYRE_NO_DIALOGS still wins. | core/config/dialogs.js, core/daemon/index.js |
VYRE_ALLOW_REAL_BOX | Not described yet. | core/config/dialogs.js |
VYRE_ALLOW_REAL_TRANSCRIPTS | 1: a home other than ~/.vyre reads the transcripts in ~/.claude too. Never under tests. | core/config/dialogs.js |
VYRE_ANDROID_CERT_SHA256 | Not described yet. | core/daemon/app.js |
VYRE_API_BASE_URL | Not described yet. | core/sessions/drivers/openrouter.js |
VYRE_API_MODEL | Not described yet. | core/sessions/drivers/openrouter.js |
VYRE_APPLE_TEAM_ID | Not described yet. | core/daemon/app.js |
VYRE_APP_URL | Not described yet. | harness/mcp/design.js |
VYRE_BACKUP_SKIP_PROJECTS | Not described yet. | core/cli/commands/up.js |
VYRE_BACKUP_SKIP_TRANSCRIPTS | Not described yet. | core/cli/commands/up.js |
VYRE_BOX_INSTALLER | The installer vyre box add runs on the server, in place of the published one. | core/cli/commands/box.js |
VYRE_BOX_PROBE_MS | How long vyre box waits for the box's address to answer. Default two minutes. | core/cli/commands/box.js |
VYRE_CHECK_VIEWS | Not described yet. | core/cli/view.js |
VYRE_CHROME | Not described yet. | core/previews/thumb.js |
VYRE_CHROME_HOST_DIR | Not described yet. | local/hands-chrome-mac/standalone/cli.mjs, local/hands-chrome-mac/standalone/doctor.js |
VYRE_CHROME_NO_COPY | Not described yet. | local/hands-chrome-mac/standalone/cli.mjs |
VYRE_CHROME_TEST_NOFETCH | Not described yet. | local/hands-chrome-mac/index.js, local/hands-chrome-mac/standalone/harness/frames-suite.mjs |
VYRE_CLAUDE_HOME | Claude Code's folder for a home other than ~/.vyre. Without it such a home uses its own claude folder and never reads ~/.claude. | core/config/dialogs.js |
VYRE_CODEX_HOME | Not described yet. | core/import/formats/index.js |
VYRE_COMPUTERS_CAP_ADD | Extra Linux capabilities for agent computers, comma separated. | core/dockerproxy/main.js |
VYRE_COMPUTERS_IMAGE | The container image agent computers run. Default vyre/computer:0.1. | core/dockerproxy/main.js |
VYRE_COMPUTERS_LABEL_PREFIX | The label prefix that marks Vyre's containers. Default run.vyre.computers. | core/dockerproxy/main.js |
VYRE_COMPUTERS_NETWORK | The Docker network agent computers join. Default vyre-computers. | core/dockerproxy/main.js |
VYRE_CORE_DATA | vyre-core's data directory (ADR 0040). Default /Library/Application Support/Vyre/data. | core/vyre-core/main.js |
VYRE_CORE_SOCKET | vyre-core's socket. Default /var/run/vyre/vyre-core.sock, in a folder root makes and _vyre owns. | core/vyre-core/main.js |
VYRE_CORE_STRICT | 0 lets vyre-core start from a tree its owner could write (dev and Linux tests only). On by default on a Mac. | core/vyre-core/main.js |
VYRE_DEBUG | Not described yet. | core/cli/index.js, core/daemon/main.js |
VYRE_DEV_ALLOW_LISTEN | Not described yet. | core/daemon/dev-ports.js |
VYRE_DOCKER_PROXY_PORT | The port the Docker proxy listens on. Default 2375. | core/dockerproxy/main.js |
VYRE_DOCUMENTS_PDF | Not described yet. | core/documents/index.js |
VYRE_DRIVE_ACCESS | ro or rw: read only by the legacy folder-sharing path in core/files/drive.js, which goes with the mounted Drive (0.3.0). It has no effect on a box: no container mounts /work for it any more. | core/files/drive.js |
VYRE_DTACH_BIN | The dtach binary terminals run under so they outlive a vyred restart. Default dtach on the PATH. Empty: plain terminals that end with vyred. | core/term/dtach.js |
VYRE_EGRESS_GATE_HOST | Not described yet. | core/computers/egressgate.js |
VYRE_EGRESS_GATE_PORT | Not described yet. | core/computers/egressgate.js |
VYRE_EGRESS_GATE_STATUS | Not described yet. | core/computers/egress.js |
VYRE_EGRESS_GATE_STATUS_PORT | Not described yet. | core/computers/egressgate.js |
VYRE_EGRESS_PROXY | Not described yet. | core/computers/egress.js |
VYRE_EGRESS_SOCKET | Not described yet. | core/computers/egressgate.js |
VYRE_EGRESS_UPSTREAM | Not described yet. | core/computers/egressgate.js |
VYRE_FINISH_MS | Not described yet. | core/daemon/index.js |
VYRE_FINISH_POLL_MS | Not described yet. | core/daemon/index.js |
VYRE_FREEZE_FD | Not described yet. | core/computers/image/computerd/index.js |
VYRE_GEMINI_HOME | Not described yet. | core/import/formats/index.js |
VYRE_HANDS_BIN | Another build of the Mac hands helper. | local/hands-mac/index.js |
VYRE_HARNESS_DIR | The Harness plugin folder threads load. Default the one beside this install. | core/cli/commands/projects.js, core/runner/pipe-home.js, core/switchboard/index.js |
VYRE_HEADSCALE_BIN | The headscale binary a space's network control plane runs. Under node --test there is none unless VYRE_WINK_REAL=1. | core/wink/control/headscale.js, core/wink/netd.js |
VYRE_HOME | Where Vyre keeps its data. Default ~/.vyre. | core/agents/index.js, core/config/dialogs.js, core/config/index.js, core/daemon/peer.js, core/harness/rules.js, core/learn/checks.js, core/mcpconn/index.js, core/pluginagent/index.js, core/sessions/index.js, core/sessions/spawn.js, core/switchboard/index.js, harness/lib/vyre.js, local/hands-chrome-mac/native-host/host.js, local/hands-chrome-mac/native-host/install.js, local/hands-chrome-mac/standalone/runtime.js |
VYRE_KERNEL_FILE_KEY | Not described yet. | core/daemon/host-guard.js |
VYRE_KERNEL_PROOF | Not described yet. | core/cli/commands/daemon.js |
VYRE_LEGACY_DIRECT_MODEL | Not described yet. | core/sessions/index.js, local/voice/index.js |
VYRE_LENT_AGENT | Not described yet. | core/daemon/lent-service.js |
VYRE_LENT_AGENT_ARGS | Not described yet. | core/daemon/lent-service.js |
VYRE_LENT_AGENT_DEV | Not described yet. | core/daemon/lent-service.js, core/runner/index.js |
VYRE_MANAGED_CONTEXT | Not described yet. | core/switchboard/index.js |
VYRE_MCP_FEATURES | Not described yet. | harness/mcp/server.js |
VYRE_MCP_LISTING | Not described yet. | harness/mcp/server.js |
VYRE_MCP_REF_TOKENS | Not described yet. | harness/mcp/server.js |
VYRE_MODULE_SDK | A folder holding the module SDK's testing.js, for a module's own tests made by vyre module new before the SDK is on npm. | core/cli/commands/module.js |
VYRE_NAMES_DIRECTORY | Not described yet. | core/names/index.js |
VYRE_NO_OPEN | Never open a browser tab from the terminal. | core/cli/commands/vault.js |
VYRE_NO_TIPS | Not described yet. | core/cli/index.js |
VYRE_NO_UP | vyre box add installs Vyre without starting it. | core/cli/commands/box.js |
VYRE_NO_WATCHDOG | Not described yet. | core/runner/runner.js |
VYRE_NPM_BIN | The npm that vyre update installs a release with. Tests point it at a fake. | core/cli/commands/update.js |
VYRE_OLD_PROJECTS_DIR | Not described yet. | core/config/index.js |
VYRE_ONBOARD_HOST | The address onboarding listens on. Default 127.0.0.1. | core/onboard/loopback.js |
VYRE_OPENROUTER_API | Not described yet. | core/models/index.js |
VYRE_OPENROUTER_URL | Not described yet. | core/sessions/index.js |
VYRE_OPEN_BIN | The command that opens links. Tests point it at a fake. | core/cli/commands/up.js, core/cli/kit.js |
VYRE_OTHER_VPN_BIN | Not described yet. | core/network/other-vpn.js |
VYRE_OVERLAY_BIN | Not described yet. | local/hands-mac/index.js |
VYRE_PACKAGE | Not described yet. | harness/lib/vyre.js |
VYRE_PREVIEW_THUMBS | Not described yet. | core/previews/index.js |
VYRE_PROJECT_GIDS | Not described yet. | core/spawner/main.js |
VYRE_PROJECT_GID_MAX | Not described yet. | core/spawner/main.js |
VYRE_PROJECT_GID_MIN | Not described yet. | core/spawner/main.js |
VYRE_PUBLISH_DOCKER | Not described yet. | core/publish/index.js |
VYRE_PUB_CTX | Not described yet. | core/appmods/host-pub.js |
VYRE_RECOVERY_CODE | Not described yet. | core/cli/commands/up.js |
VYRE_REDUCED_MOTION | Not described yet. | core/cli/delight.js |
VYRE_RELEASES_API | Where vyre update reads releases. Default https://api.github.com. Tests point it at a local server. | core/cli/commands/update.js, core/update/index.js |
VYRE_RELEASES_REPO | Not described yet. | core/update/index.js |
VYRE_ROLLOVER_LINK | Not described yet. | core/switchboard/index.js |
VYRE_ROLLOVER_SHEET | Not described yet. | core/switchboard/index.js |
VYRE_SCREEN_BIN | Not described yet. | local/screen-mac/index.js |
VYRE_SEAL_DEV | Not described yet. | core/cli/commands/up.js, core/vault/request.js |
VYRE_SEAL_SOFTWARE | Not described yet. | core/cli/commands/up.js, core/daemon/index.js, core/presence/module.js, core/spaces/index.js, core/wink/pairing.js |
VYRE_SEAL_UNATTESTED | Not described yet. | core/cli/commands/up.js |
VYRE_SESSIONS_SDK_DIR | Not described yet. | core/sessions/config.js, core/spawner/main.js |
VYRE_SESSIONS_SDK_INSTALL | Not described yet. | core/sessions/sdk.js |
VYRE_SESSIONS_THREAD_SOCKET | Not described yet. | core/sessions/config.js |
VYRE_SETUP_CODE | Not described yet. | core/relay/index.js |
VYRE_SETUP_CODE_AT | Not described yet. | core/relay/index.js |
VYRE_SPAWNER_ALLOW | Not described yet. | core/spawner/main.js |
VYRE_SSE_HEARTBEAT_MS | Not described yet. | core/daemon/index.js |
VYRE_SSH_BIN | The ssh binary to run. | core/cli/ssh.js |
VYRE_STREAM_TEST_HOLD | Not described yet. | core/stream/group.js |
VYRE_SUPERVISOR | What runs vyred: docker inside the box container, which changes how vyre up restarts it. | bin/vyre, core/cli/commands/module.js, core/cli/commands/up.js, core/cli/commands/update.js, core/cli/daemonctl.js, core/daemon/index.js, core/daemon/ownserver-host.js, core/switchboard/adopt.js, core/switchboard/index.js |
VYRE_TAILSCALE_BIN | The tailscale binary to run. A path that does not exist means no tailnet. | core/link/mac.js, core/link/transport.js |
VYRE_TEST | Not described yet. | core/names/directory.js |
VYRE_TEXT_PRUNE_MS | How long a thread's streamed text events are kept before they are pruned. | core/switchboard/index.js |
VYRE_THREAD_SOCKETS | Not described yet. | core/daemon/threadsock.js |
VYRE_TILE_BIN | Not described yet. | local/sideview/index.js |
VYRE_TMPDIR | Not described yet. | core/files/index.js, core/names/backup.js |
VYRE_TMUX_BIN | Not described yet. | core/daemon/peer.js |
VYRE_UID | Not described yet. | core/spawner/main.js |
VYRE_UPDATE_DIR | Not described yet. | core/update/index.js |
VYRE_UPDATE_QUIET | Not described yet. | core/update/index.js |
VYRE_UPDATE_STATE | Not described yet. | core/update/index.js |
VYRE_UP_WAIT_MS | Not described yet. | core/cli/daemonctl.js |
VYRE_USER_HOME | Not described yet. | core/daemon/index.js, core/spawner/main.js |
VYRE_WALL_STATUS | Not described yet. | core/spawner/main.js |
VYRE_WATCH_HOME | Not described yet. | core/spawner/main.js |
VYRE_WATCH_NODE | Not described yet. | core/spawner/main.js |
VYRE_WATCH_UID_MAX | Not described yet. | core/spawner/main.js |
VYRE_WATCH_UID_MIN | Not described yet. | core/spawner/main.js |
VYRE_WATCH_WORK | Not described yet. | core/watchers/spawner-wall.js |
VYRE_WINDOWS_LENDING | Not described yet. | core/runner/sandbox.js, core/runner/workspace.js |
VYRE_WINK_FORWARDER_BIN | Not described yet. | core/wink/netd.js |
VYRE_WINK_NET | Not described yet. | core/wink/index.js |
VYRE_WINK_REAL | 1: let a test run the real Headscale and tailscaled (test server only). | core/wink/control/headscale.js, core/wink/netd.js |
VYRE_WINK_TYPED_CODE | Not described yet. | core/wink/index.js |
VYRE_WORK | Not described yet. | core/spawner/main.js, core/switchboard/index.js |
VYRE_WORK_DIR | Not described yet. | core/config/index.js |
VYRE_WORK_GID | Not described yet. | bin/vyre, core/spawner/main.js |
VYRE_WRAPPER | Where vyre box add puts the vyre command on the server. Default /usr/local/bin/vyre. | core/cli/commands/box.js |
Set by Vyre
vyred sets these for the threads and helpers it starts, and the Harness reads them there. Setting them by hand is for tests.
| Variable | What it does | Read in |
|---|---|---|
VYRE_AGENT | The agent a thread runs as. | core/cli/session.js, core/mcpconn/index.js, core/switchboard/index.js, harness/hooks/hook.js, harness/mcp/memory-tools.js, harness/mcp/server.js |
VYRE_AGENT_KEY | The key that proves a thread's calls come from its agent. | core/daemon/client.js, core/switchboard/index.js |
VYRE_AGENT_KIND | assistant or agent. Only the assistant is offered the tools that drive other threads. | core/cli/session.js, core/switchboard/index.js, harness/hooks/hook.js, harness/mcp/server.js |
VYRE_CHROME_HOME | Not described yet. | local/hands-chrome-mac/index.js, local/hands-chrome-mac/standalone/runtime.js |
VYRE_CHROME_SOCK | Not described yet. | local/hands-chrome-mac/native-host/host.js, local/hands-chrome-mac/spike/host/host.js |
VYRE_CHROME_TEST | Not described yet. | local/hands-chrome-mac/extension/shared/sk/site-knowledge.js, local/hands-chrome-mac/index.js, local/hands-chrome-mac/standalone/runtime.js |
VYRE_CLAUDE_BIN | The claude binary to run. Default claude on the PATH. | core/memory/index.js, core/memory/personal/reader.js, core/onboard/index.js, core/onboard/setup-token.js, core/runner/index.js, core/switchboard/index.js, core/team/team-fixture.js |
VYRE_CORE_OWNER | The owner's uid: the only uid vyre-core answers. Required. | core/vyre-core/main.js |
VYRE_CORE_SERVER | Not described yet. | core/vyre-core/main.js |
VYRE_GH_BIN | Not described yet. | core/github/index.js |
VYRE_HUB_CHILD | Not described yet. | harness/mcp/run.js, harness/mcp/server.js |
VYRE_MCP_ID | Not described yet. | harness/mcp/server.js |
VYRE_MCP_KEY | Not described yet. | harness/mcp/server.js |
VYRE_NO_DIALOGS | 1: never raise anything on screen (Touch ID, a keychain prompt, a browser tab). | core/config/dialogs.js, core/files/drive.js, local/screen-mac/screen.js |
VYRE_PROJECT | The project a thread belongs to, for its brief. | harness/hooks/hook.js |
VYRE_PROJECTS | The projects an agent's thread is limited to, comma separated, or * for all of them. | core/switchboard/index.js, harness/hooks/hook.js, harness/mcp/memory-tools.js, harness/mcp/server.js |
VYRE_PROXY_PAC | Not described yet. | core/computers/image/computerd/index.js |
VYRE_SCOPE_CWDS | The folders an agent's recall.search is held to, as JSON. | core/switchboard/index.js, harness/mcp/server.js |
VYRE_SESSIONS_DRIVER | Not described yet. | core/sessions/config.js, core/team/team-fixture.js |
VYRE_SESSIONS_SPAWNER | Not described yet. | core/sessions/config.js, core/sessions/spawn.js |
VYRE_SESSION_SANDBOX_OFF | Not described yet. | core/daemon/index.js, core/team/team-fixture.js |
VYRE_SITE_TEST_CLOCK | Not described yet. | local/hands-chrome-mac/extension/shared/sk/site-knowledge.js |
VYRE_SKILLS_DIR | Not described yet. | core/sessions/drivers/codex.js, core/sessions/drivers/grok.js |
VYRE_SOCKET | The path of vyred's socket, for Lumen. | bin/vyre, core/cli/daemonctl.js, core/cli/index.js, core/cli/session.js, core/daemon/client.js, core/mcpconn/index.js, core/switchboard/index.js, harness/lib/vyre.js, harness/mcp/server.js |
VYRE_SPAWNER_SOCKET | Not described yet. | core/daemon/index.js, core/spawner/client.js, core/spawner/main.js |
VYRE_THREAD | The session id of a headless thread vyred runs. | bin/vyre, core/cli/daemonctl.js, core/cli/index.js, core/cli/session.js, harness/hooks/hook.js |
For tests and development
| Variable | What it does | Read in |
|---|---|---|
VYRE_TEST_DIALOGS | 1: allow dialogs under tests, for a person at the machine running one test on purpose. | core/config/dialogs.js, core/files/drive.js, local/screen-mac/screen.js |
VYRE_TEST_HOST | Not described yet. | core/daemon/host-guard.js |
VYRE_TEST_HOSTED | 1: for a vyred a test starts over a temp home, count its parent test process as the person's side. Never read for ~/.vyre. | core/daemon/host-guard.js, core/daemon/peer.js |
VYRE_TEST_PAIR_NO_PROOF | Not described yet. | core/wink/pairing.js |
VYRE_TEST_REAL_TAILSCALE | 1: let a test use the real tailscale binary. | core/link/transport.js |
VYRE_TEST_SELF_RESERVE | Not described yet. | core/spaces/index.js, core/stream/e2e-step7-vyred.js |
VYRE_TEST_START_PAUSE_MS | Not described yet. | core/switchboard/index.js |
VYRE_TEST_UNGATED_RING | Not described yet. | core/relay/index.js |