Skip to main content

Environment and Defaults

Reference for all environment variables, file paths, and default configuration values.

Environment Variables

VariableDescriptionDefault
REMI_PORTWebSocket server port18765
REMI_MAX_BULLET_LENGTHMax characters per message bullet before truncation (0 to disable)500
REMI_PASSPHRASEPassphrase to unlock the identity file (skips interactive prompt)(none)
REMI_PUSH_SECRETAPNS push auth secret (signing token for phone notifications)(none)
REMI_HOOK_DEBUGSet to 1 to dump every raw hook POST to ~/.remi/hook-diag.jsonl. Diagnostic only.(none)
REMI_AUTO_APPROVEtrue or false — toggle LLM auto-approveconfig file
REMI_AUTO_APPROVE_MODELLLM model name (e.g. gemma4:e2b, qwen3.5:4b)gemma4:e2b
REMI_AUTO_APPROVE_PROVIDERollama, openrouter, or a custom base URLollama
REMI_AUTO_APPROVE_BASE_URLExplicit OpenAI-compatible endpoint URLhttp://localhost:11434/v1
REMI_AUTO_APPROVE_API_KEYAPI key (required for OpenRouter and most hosted providers)(none)
REMI_AUTO_APPROVE_ALLOWComma- or newline-separated allow patterns (overrides config)(none)
REMI_AUTO_APPROVE_DENYComma- or newline-separated deny patterns (overrides config)(none)
REMI_AUTO_APPROVE_INSTRUCTIONSNatural-language guidance appended to LLM system prompt(none)
TELEGRAM_BOT_TOKENTelegram bot token (enables Telegram adapter)(none)
TELEGRAM_ENABLEDSet to false to disable Telegram even if token is setenabled when TELEGRAM_BOT_TOKEN is set
TELEGRAM_AUTHORIZED_CHAT_IDSComma-separated list of authorized Telegram chat IDs(none)
TELEGRAM_AUTHORIZED_USER_IDSComma-separated list of authorized Telegram user IDs(none)

Remi also reads a .env file from the current working directory if present.

Configuration File

Remi supports an optional TOML configuration file at ~/.remi/config.toml. Settings in the config file provide defaults; CLI flags and environment variables always take precedence.

Priority order: CLI flags > environment variables > config file > built-in defaults

remi config          # Show effective configuration
remi config init # Create default config file
remi config path # Show config file path
remi reload # Validate config (changes take effect on restart)

See remi config for details.

File Paths

All Remi data is stored under ~/.remi/:

PathDescription
~/.remi/Remi data directory
~/.remi/config.tomlConfiguration file (optional, created with remi config init)
~/.remi/identity.jsonEd25519 identity (private key plaintext or encrypted, plus public key)
~/.remi/authorized_keys.jsonList of authorized client public keys
~/.remi/connection-codePersistent connection code (when using --permanent-code)
~/.remi/sessions.jsonStored session history
~/.remi/remi.logDaemon log file (wrapper mode — remi / remi new)
~/.remi/daemon.logDaemon log file (daemon mode — remi start / --daemon / --install)
~/.remi/hook-diag.jsonlRaw hook POST dump (when REMI_HOOK_DEBUG=1 is set). Diagnostic only.
~/.remi/live-sessions/Per-session metadata used for cross-daemon discovery (one JSON file per live session)
~/.remi/daemon.pidPID of the detached daemon (when running in daemon mode)
~/.remi/status-<port>.jsonPer-port daemon status (for status line integration; e.g., status-18765.json)
~/.remi/daemon-status.jsonDaemon-mode status file (when running with --daemon)
~/.remi/statusline.shStatus line script auto-installed for Claude Code
~/.remi/remi-stdout.logService stdout log (when installed with --install)
~/.remi/remi-stderr.logService stderr log (when installed with --install)

Hook Configuration

Remi writes hook entries into the project's Claude Code settings:

PathDescription
<project>/.claude/settings.local.jsonHook configuration (auto-managed by Remi, cleaned up on exit)

The hook entries configure Claude Code to POST events to Remi's local HTTP server. This file is project-scoped and gitignored by Claude Code.

Service Files

PlatformPath
macOS~/Library/LaunchAgents/com.yooz.remi.plist
Linux~/.config/systemd/user/remi.service

Default Values

SettingDefaultOverride
WebSocket port18765--port or REMI_PORT
Port range18765-18784 (20 ports)config: daemon.port_range
Hook server portOS-assigned (port 0)(auto-selected)
WebSocket host0.0.0.0--bind or config: daemon.bind
WebSocket path/ws(fixed)
Hook server path/hooks(fixed)
Connection timeout10 seconds(not configurable)
Ping interval30 seconds(not configurable)
Max bullet length500 characters--max-bullet-length, REMI_MAX_BULLET_LENGTH, or config: display.max_bullet_length
Max concurrent connections100(not configurable)
Orphan session timeout5 minutes--orphan-timeout or config: daemon.orphan_timeout
Max replay history1000 messages(not configurable)
Signaling serverwss://remi-signaling.yooz.workers.dev/connect--signaling-url or config: network.signaling_url

Status Line

Remi auto-installs a status line script at ~/.remi/statusline.sh and configures Claude Code to use it (via ~/.claude/settings.json). The status line shows:

remi :18765 my-project:main | 2 client(s) | working | [Opus 4.6] 45% context

The status line requires jq to be installed on the system.