Bolt uses a JSON with Comments (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/bolt-builder/bolt-cli/llms.txt
Use this file to discover all available pages before exploring further.
.jsonc) file for project and global configuration. The schema is versioned and published at https://opencode.ai/config.json, which editors can use to provide autocompletion and validation.
Config file locations
Bolt merges configuration from two locations. Per-project settings win over global settings when the same key appears in both.| Scope | Path |
|---|---|
| Per-project | .bolt/bolt.jsonc (or .bolt/bolt.json) in your project root |
| Global | bolt.jsonc (or bolt.json) in your OS config directory |
- macOS:
~/Library/Application Support/bolt/ - Linux:
~/.config/bolt/ - Windows:
%APPDATA%\bolt\
Bolt also reads legacy
opencode.jsonc / opencode.json files in the same locations. New projects should use the bolt.jsonc naming convention, which takes priority over the legacy filenames.$schema line on first run, and creates .bolt/bolt.jsonc in your project root the first time you open the TUI in that directory.
Schema fields
URL pointing to the JSON schema for this config file. Enables autocompletion and inline validation in editors that support JSON Schema (VS Code, Zed, JetBrains IDEs, etc.).
Default model for all sessions, expressed as Run
provider/model. This can be overridden per-session with bolt run --model or in the TUI model picker.bolt models to see all available provider/model strings for your configured providers.Provider-specific credential and settings overrides. Each key is a provider ID (e.g. Values that start with
anthropic, openai, google). The most common use is to set an API key via an environment variable reference so that the key is never stored in plaintext.${ and end with } are treated as environment variable references and expanded at runtime.MCP server configurations, keyed by a name you choose. Bolt supports two server types:Remote server — connects over HTTP/SSE, with optional OAuth:
Local server — spawns a subprocess over stdio:
Use
| Field | Type | Description |
|---|---|---|
type | "remote" | Identifies this as a remote HTTP server |
url | string | Full URL of the MCP endpoint |
oauth | object | false | OAuth configuration object (with optional clientId, clientSecret, scope, redirectUri). Set to false to disable OAuth auto-detection. |
headers | object | HTTP headers to send with every request ({ "Key": "Value" }) |
enabled | boolean | Enable or disable this server on startup |
timeout | number | Request timeout in milliseconds (default: 5000) |
| Field | Type | Description |
|---|---|---|
type | "local" | Identifies this as a local stdio server |
command | string[] | Command and all arguments to spawn |
cwd | string | Working directory for the server process (relative paths resolve from the workspace directory) |
environment | object | Extra environment variables to pass to the subprocess |
enabled | boolean | Enable or disable this server on startup |
timeout | number | Request timeout in milliseconds (default: 5000) |
bolt mcp add for an interactive wizard, or bolt mcp list to inspect current server status.Additional system instructions appended to every session in this project or globally. Instructions from multiple config files are merged (deduplicated). Use this to inject project-specific conventions, style rules, or constraints that every agent should follow.
Plugin specs to load. Each entry is an npm package name, a local file path, or a URL. Plugins can extend the TUI, add slash-commands, or register additional providers. Use
bolt plugin install <spec> to install a plugin and have it added to this array automatically.Complete example
The following.bolt/bolt.jsonc shows a realistic project configuration: