Configuration
Most people never edit these: storm-server up and the installers write
them. Neither ever holds a credential.
storm.env (server)
On Linux, /etc/storm/storm.env (mode 600), read by the systemd unit.
| Variable | Default | Meaning |
|---|---|---|
STORM_VAULT_ROOT |
/srv/storm/vaults |
The storage root: a folder of vault folders, never a single vault. Only seeds a first run — after that the root lives in the server’s records and is changed in Settings › Storage. |
STORM_STATE |
/srv/storm/state |
Storm’s own records: indexes, the account, agents, integrations. |
STORM_WEB |
/usr/share/storm/web |
The web app, from the package. |
STORM_HOST |
0.0.0.0 |
Listen address. All interfaces, so your phone can reach it; never port-forward it. |
STORM_PORT |
8484 |
Listen port. Change it with storm-server up --port N, which also moves the firewall rule. |
STORM_DISCOVERY |
on | 0 stops the server announcing itself on the network and refuses password pairing, whatever the app’s setting says. QR pairing still works. |
STORM_BACKUP_DEST |
/srv/storm/backups |
Where nightly backups go. Use another disk. |
STORM_BACKUP_KEEP_DAYS |
30 |
How long dated backups are kept. |
storm-server up --data-root DIR changes the vault, state and backup paths
together. All flags: storm-server.
runtime.toml (Runtime Host)
At /etc/storm-runtime/runtime.toml, /Library/StormRuntime/runtime.toml or
C:\ProgramData\StormRuntime\runtime.toml. Every value is an operational
default, not a limit.
# Each subdirectory of a root is a workspace, named after its folder.workspace_roots = ["/var/lib/storm-runtime/workspaces"]max_sessions = 8scrollback_bytes = 4194304
# Where agent CLIs are looked for, and the PATH every session gets.# path = ["/usr/local/bin", "/usr/bin", "/bin"]
# Whether a Claude Code or Codex session gets its plugins' local MCP servers. "off"# keeps them out; a plugin's remote servers never load on a host either way.# plugin_mcp = "allow"
# Omit [[providers]] to offer every built-in: claude-code (the default),# opencode, codex, cursor (cursor-agent), command-code and shell. Cursor and# Command Code are terminals only: they get no notes or integrations.# Listing any replaces the defaults, so list every one you want.# [[providers]]# id = "claude-code"# env_file = "/etc/storm-runtime/claude.env" # secrets go here, mode 0600
# [[providers]]# id = "opencode"# [providers.settings] # merged into each session's OpenCode config# model = "anthropic/claude-sonnet-4-5"
# [[providers]]# id = "shell"# command = "/bin/bash"# args = ["-l"]A workspace root inside, or around, a Storm data root is refused, and so are
roots under home folders on macOS and Windows; see
Runtime Hosts. On Linux, a root outside
/var/lib/storm-runtime also needs the unit widened with ReadWritePaths.
OpenCode’s own mcp settings are ignored in sessions: only Storm’s
integrations are ever offered to an agent.