Skip to main content
Commands, package names, and image names on this page come from the open-source project that Mibyan Desktop is built on, and can differ from the Mibyan Desktop installer. For the supported Mibyan install and update path, see Install and update.
Mibyan reads environment variables from the process environment and, for user-managed secrets, from ~/.mibyan/.env. Keep API keys, bot tokens, OAuth secrets, and other credentials in .env; prefer config.yaml for non-secret behaviour settings when a config key exists. Some variables below are process-only overrides or internal bridge variables and should not be committed to .env just because they are documented here.

LLM Providers

Provider Auth (OAuth)

For native Anthropic auth, Mibyan prefers Claude Code’s own credential files when they exist because those credentials can refresh automatically. OAuth against Anthropic requires a Claude Max plan with purchased extra usage credits — Mibyan routes as Claude Code, which only draws from the Max plan’s extra/overage credits, not the base Max allowance, and does not work on Claude Pro. Without Max + extra credits, use an API key instead. Environment variables such as ANTHROPIC_TOKEN remain useful as manual overrides, but they are no longer the preferred path for Claude Max login.

Tool APIs

Skill API Keys

Secrets consumed by specific bundled / optional skills. Each is only needed if you use the corresponding skill.

Langfuse Observability

Environment variables for the bundled observability/langfuse plugin. Set these in ~/.mibyan/.env. The plugin must also be enabled (mibyan plugins enable observability/langfuse, or check the box in mibyan plugins) before any of these take effect.

Nous Tool Gateway

These variables configure the Tool Gateway for paid Nous subscribers or self-hosted gateway deployments. Most users don’t need to set these — the gateway is configured automatically via mibyan model or mibyan tools.

Terminal Backend

For cloud sandbox backends, persistence is filesystem-oriented. TERMINAL_LIFETIME_SECONDS controls when Mibyan cleans up an idle terminal session, and later resumes may recreate the sandbox rather than keep the same live processes running.

SSH Backend

Container Resources (Docker, Singularity, Modal, Daytona)

Persistent Shell

Egress proxy (sandbox-injected)

These env vars are NOT set on the host — they’re injected into Docker sandboxes by the Egress proxy integration when proxy.enabled: true. Docker is the only wired backend in this release. These are set automatically by the Docker terminal backend when proxy.enabled: true AND the daemon is running. You don’t set them yourself; the relevant operator-facing knobs are in ~/.mibyan/config.yaml under the proxy: section — see Egress proxy → Configuration.

Messaging

Web Dashboard & Mibyan Desktop

Auth for the web dashboard and for connecting Mibyan Desktop to a remote backend. Per the secrets-only convention, credentials belong in ~/.mibyan/.env; the OAuth client_id is better set under dashboard.oauth in config.yaml (env wins when set). Three dashboard-auth providers ship in the box. For a remote Mibyan Desktop connection or any internet-facing dashboard, the recommended provider is OAuth (Nous Portal) — set mibyan_DASHBOARD_OAUTH_CLIENT_ID (provision it with mibyan dashboard register). The bundled username/password provider (mibyan_DASHBOARD_BASIC_AUTH_*) is the quickest option for a backend on a trusted LAN or behind a VPN, but is not suitable for direct public-internet exposure. To authenticate against your own identity provider, use the self-hosted OIDC provider (mibyan_DASHBOARD_OIDC_*). Either way, a non-loopback bind (mibyan dashboard --host 0.0.0.0) engages the auth gate. See Web Dashboard → Authentication for the full picture.

Microsoft Graph (Teams Meetings)

App-only credentials for the Microsoft Graph REST client used by the upcoming Teams meeting summary pipeline. See Register a Microsoft Graph application for the Azure portal walkthrough and the exact API permissions required.

Microsoft Graph Webhook Listener

Inbound change-notification listener for Graph events (Teams meetings, calendar, chat, etc.). See Microsoft Graph Webhook Listener for setup and security hardening.

Teams Meeting Summary Delivery

Only used when the teams_pipeline plugin is enabled. Settings are also configurable under platforms.teams.extra in config.yaml — env vars take priority when both are set. See Microsoft Teams → Meeting Summary Delivery.

LINE Messaging API

Used by the bundled LINE platform plugin (plugins/platforms/line/). See Messaging Gateway → LINE for full setup.

ntfy (push notifications)

ntfy is a lightweight HTTP-based push notification service. Subscribe to a topic from the ntfy mobile app, publish to that topic to talk to the agent. See the ntfy messaging guide — particularly the identity model section — before deploying with untrusted topics.

IRC

Connect Mibyan to an IRC server. No external dependencies. See the IRC messaging guide.

SimpleX

Connect Mibyan to a SimpleX Chat network via a local simplex-chat daemon. See the SimpleX messaging guide.

Photon

Connect Mibyan to Photon / Spectrum (iMessage and other Spectrum platforms) via the Node sidecar. See the Photon messaging guide.

Buzz (Nostr communities)

Microsoft Teams (adapter)

The Microsoft Teams platform adapter (Bot Framework / Azure AD), distinct from the Microsoft Graph (Teams Meetings) integration above. See the Teams messaging guide.

Raft

Advanced Messaging Tuning

Advanced per-platform knobs for throttling the outbound message batcher. Most users never need to touch these; defaults are set to respect each platform’s rate limits without feeling sluggish.

NeMo Relay

Agent Behavior

mibyan_WRITE_SAFE_ROOT

When this variable is set, write_file and patch may only target paths inside the listed directory prefix(es). Any path outside those roots is rejected immediately — the write does not go through the dangerous-command approval system and there is no prompt to override it. The official Docker image sets mibyan_WRITE_SAFE_ROOT=/opt/data alongside mibyan_HOME=/opt/data so the agent cannot escape the mounted data volume. Do not add this to ~/.mibyan/.env unless you intend to sandbox writes. A common mistake is pointing it at a project directory while expecting the agent to edit ~/.mibyan/cron/jobs.json, ~/.mibyan/skills/, or scripts under a profile — those paths are outside the sandbox and every write_file/patch to them fails with an outside mibyan_WRITE_SAFE_ROOT error. To allow both a workspace and Mibyan state, list both prefixes (order does not matter):
Unset the variable or remove it from .env to restore normal writes (still subject to the credential-path denylist — see File write safety).

Internal bridge variables

Mibyan sets these itself to carry state across a boundary where no config.yaml exists yet or where two processes need to agree. They are documented so you can recognise them in a process environment or a log; do not set them yourself, and never put them in .env.

Interface

Session Settings

Terminal session snapshots do not persist injected session/agent attribution variables. Mibyan supplies the current values for each command; an export inside a previous terminal command does not redefine the next session identity.

Context Compression (config.yaml only)

Context compression is configured exclusively through config.yaml — there are no environment variables for it. Threshold settings live in the compression: block, while the summarization model/provider lives under auxiliary.compression:.
Legacy migrationOlder configs with compression.summary_model, compression.summary_provider, and compression.summary_base_url are automatically migrated to auxiliary.compression.* on first load.

Auxiliary Task Overrides

AUXILIARY_WEB_EXTRACT_* variables are obsolete: web_extract and browser snapshots no longer use an auxiliary LLM. Long pages and snapshots are truncated deterministically with the full text stored on disk for read_file paging.
For task-specific direct endpoints, Mibyan uses the task’s configured API key or OPENAI_API_KEY. It does not reuse OPENROUTER_API_KEY for those custom endpoints.

Fallback Providers (config.yaml only)

The primary model fallback chain is configured exclusively through config.yaml — there are no environment variables for it. Add a top-level fallback_providers list with provider and model keys to enable automatic failover when your main model encounters errors. Auxiliary tasks whose provider is auto also consult this chain before Mibyan’ built-in auxiliary discovery chain.
The older top-level fallback_model single-provider shape is still read for backward compatibility, but new configuration should use fallback_providers. For task-specific auxiliary policy, use auxiliary.<task>.fallback_chain in config.yaml; there is no environment variable equivalent. See Fallback Providers for full details.

Provider Routing (config.yaml only)

These go in ~/.mibyan/config.yaml under the provider_routing section:
Use mibyan config set to set environment variables — every UPPER_SNAKE name on this page (and any other environment-shaped name) is saved to .env, the same file the setup flows write and the one the runtime reads; it is never written into config.yaml. Names on the env writer’s denylist (mibyan_HOME, mibyan_YOLO_MODE, PATH, …) are refused. Dotted config.yaml settings go to config.yaml.