Configuration
Category: Explanation
Byte's configuration is straightforward and declarative. You define your preferences in a single JSONC file at .byte/config.jsonc, and Byte loads it at startup. Configuration is organized into sections—documentation framework, LLM models, linting, files, web, git, gateway, terminal UI, and presets. Invalid config produces clear error messages; changes take effect on the next invocation.
The Config File
Configuration lives at .byte/config.jsonc in your project root. It's JSON with comments—use // for single-line notes, /* */ for blocks. This is where you tell Byte how to behave.
When you run any Byte command, the config is loaded and validated. If something is wrong—a typo, an invalid value, a missing required field—Byte reports the error clearly and exits. Fix the problem and run again. Changes take effect immediately on the next invocation; no restart needed.
Configuration Sections
Configuration is organized into these sections:
documentation — Your documentation framework (mkdocs, vitepress, docusaurus, sphinx), whether Mermaid diagrams are enabled, and any additional writing guidelines.
files — File discovery patterns, which AI comment markers to watch for (AI:, AI@, AI?, AI!), and gitignore-style patterns for files Byte should ignore.
gateway — WebSocket JSON-RPC 2.0 gateway server: whether to enable it, what host to bind to, and which port to use.
git — Conventional commit behavior: commit scope selection, breaking change detection, and message guidelines.
lint — Linting and formatting commands: which commands to run and which file types they handle.
llm — LLM model assignment for four task types: fast (quick tasks), standard (general-purpose), reasoning (complex analysis), and coding (code generation).
presets — Predefined context and prompt presets: files to load automatically, conventions to apply, and features to enable.
tui — Terminal UI: color theme (Catppuccin variants) and code syntax highlighting preference.
web — Web browser automation: Chrome/Chromium binary location and feature toggles.
Example Configuration
Here's a minimal configuration that works out of the box:
{
"$schema": "https://raw.githubusercontent.com/UseTheFork/byte/refs/heads/main/schema.json",
"documentation": {
"framework": "mkdocs",
},
"llm": {
"fast": {
"model": "claude-haiku-4-5",
"provider": "anthropic",
},
"standard": {
"model": "claude-sonnet-4-6",
"provider": "anthropic",
},
"reasoning": {
"model": "claude-opus-4-6",
"provider": "anthropic",
},
"coding": {
"model": "claude-haiku-4-5",
"provider": "anthropic",
},
},
}
The $schema field enables validation and autocomplete in most editors.
Finding Configuration Options
The full configuration reference is rendered inline below. Every available setting, its type, default value, and what it controls is documented here — no need to go elsewhere.
Documentation
Documentation framework, features, and writing style configuration
| Field | Type | Default | Description |
|---|---|---|---|
enable_mermaid |
boolean |
true |
Use Mermaid for diagrams and charts |
framework |
string |
mkdocs |
Documentation framework (e.g. mkdocs, vitepress, docusaurus, sphinx) |
extra_guidelines |
array[string] |
- | Additional documentation guidelines |
style |
string |
diataxis |
Documentation writing style (e.g. diataxis, google, microsoft, minimal) |
Files
File discovery, watching, and ignore pattern configuration
| Field | Type | Default | Description |
|---|---|---|---|
ignore |
array[string] |
['.byte', '.ruff_cache', '.idea', '.venv', '.env', '.git', '.pytest_cache', '__pycache__', 'node_modules', 'dist'] |
List of gitignore-style patterns to exclude from file discovery. Patterns support wildcards and are combined with .gitignore rules. |
Files > Watch
| Field | Type | Default | Description |
|---|---|---|---|
enable |
boolean |
false |
Enable file watching for AI comment markers (AI:, AI@, AI?, AI!). When enabled, Byte automatically detects changes and processes AI instructions. |
Gateway
WebSocket JSON-RPC 2.0 gateway server configuration
| Field | Type | Default | Description |
|---|---|---|---|
enable |
boolean |
false |
Whether the gateway server starts at boot |
host |
string |
127.0.0.1 |
Hostname to bind the gateway server to |
port |
integer |
0 |
Port to bind the gateway server to (0 lets the OS choose an available port) |
Git
Git operations and conventional commit behavior configuration
| Field | Type | Default | Description |
|---|---|---|---|
enable_scopes |
boolean |
false |
Enable scope selection for conventional commits |
enable_breaking_changes |
boolean |
false |
Enable breaking change detection and confirmation |
enable_body |
boolean |
true |
Enable commit message body generation |
scopes |
array[string] |
- | Available scopes for conventional commits |
description_guidelines |
array[string] |
- | Additional guidelines for commit descriptions |
max_description_length |
integer |
72 |
Maximum character length for commit descriptions |
Lint
Code linting and formatting configuration
| Field | Type | Default | Description |
|---|---|---|---|
enable |
boolean |
false |
Enable or disable the linting functionality |
commands |
array[LintCommand] |
[] |
List of lint commands to run on files with their target extensions |
Lint > LintCommand
| Field | Type | Default | Description |
|---|---|---|---|
command |
array[string] |
- | Command and arguments to execute for linting (e.g., ['ruff', 'check', '--fix']). Use {file} placeholder to specify where the file path should be inserted, otherwise it will be appended to the end. |
languages |
array[string] |
- | List of language names this command handles (e.g., ['python', 'php']). Empty list means all files. |
Llm
LLM provider and model assignment configuration
| Field | Type | Default | Description |
|---|---|---|---|
Llm > Fast
| Field | Type | Default | Description |
|---|---|---|---|
model |
string |
- | The model identifier to use |
provider |
string |
- | The models provider to use |
extra_params |
object |
- | Additional parameters to pass to the model initialization |
Llm > Standard
| Field | Type | Default | Description |
|---|---|---|---|
model |
string |
- | The model identifier to use |
provider |
string |
- | The models provider to use |
extra_params |
object |
- | Additional parameters to pass to the model initialization |
Llm > Reasoning
| Field | Type | Default | Description |
|---|---|---|---|
model |
string |
- | The model identifier to use |
provider |
string |
- | The models provider to use |
extra_params |
object |
- | Additional parameters to pass to the model initialization |
Llm > Coding
| Field | Type | Default | Description |
|---|---|---|---|
model |
string |
- | The model identifier to use |
provider |
string |
- | The models provider to use |
extra_params |
object |
- | Additional parameters to pass to the model initialization |
Presets
Predefined context and prompt presets
| Field | Type | Default | Description |
|---|---|---|---|
id |
string |
- | Unique identifier for the preset, used in /preset |
read_only_files |
array[string] |
- | Files to add to read-only context |
editable_files |
array[string] |
- | Files to add to editable context |
conventions |
array[string] |
- | Convention files to load |
prompt |
string | null |
- | Preset prompt to load into chat input |
load_on_boot |
boolean |
false |
Automatically load this preset when byte starts |
Tui
Terminal UI theme and syntax highlighting configuration
| Field | Type | Default | Description |
|---|---|---|---|
ui_theme |
mocha, macchiato, latte, frappe |
mocha |
Catppuccin theme variant for the CLI interface (mocha/macchiato are dark, latte is light, frappe is cool dark) |
syntax_theme |
github-dark, bw, sas, staroffice, xcode, monokai, lightbulb, rrt |
monokai |
Pygments theme for code block syntax highlighting in CLI output |
Web
Web browser automation and scraping configuration
| Field | Type | Default | Description |
|---|---|---|---|
enable |
boolean |
false |
Enable web commands |
chrome_binary_location |
string | null |
- | Path to Chrome/Chromium binary executable for headless browser automation |
The reference above is organized by section. Find what you need by domain, then drop it into your .byte/config.jsonc.
Key Takeaways
- Configuration is declarative — Define it in
.byte/config.jsonc, and Byte respects it - It's organized by section — Find what you need by domain (llm, git, lint, etc.)
- It's validated at load time — Invalid config produces clear error messages
- Changes take effect on next invocation — No restart required
- Full reference is available — See the settings reference for every option