Configuration Reference
Complete reference for all CommandLane configuration options.
Configuration File
CommandLane uses pkb.config.json in your project or home directory. The file is created automatically on first run.
File Locations
Configuration is loaded in this order (later overrides earlier):
./pkb.config.json(project directory)~/.cmdlane/pkb.config.json(user config)- Environment variables (highest priority)
Core Settings
General
| Option | Type | Default | Description |
|---|---|---|---|
enable_ai | boolean | true | Enable AI features |
log_level | string | "INFO" | Logging level: DEBUG, INFO, WARNING, ERROR |
Watcher
Background context monitoring settings:
| Option | Type | Default | Description |
|---|---|---|---|
watcher_enabled_by_default | boolean | false | Auto-start watcher with app |
watcher_show_toggle_in_ui | boolean | true | Show watcher toggle in UI |
watcher_interval_seconds | number | 3 | Context polling frequency |
watcher_cooldown_seconds | number | 300 | Min time between popovers |
watcher_max_items | number | 5 | Max items per popover |
AI & Classification
Classification Engine
| Option | Type | Default | Description |
|---|---|---|---|
ai_classification_use_tinybert | boolean | false | Use local TinyBERT model |
ai_classification_model_path | string | ".models/tinybert-tasknote/" | Path to TinyBERT model |
ai_classification_provider | string | "local" | Provider: local, openai, anthropic, ollama |
ai_classification_api_model | string | varies | Model ID when using API provider |
ai_classification_temperature | number | 0.0 | Output determinism (0.0-1.0) |
ai_classification_num_predict | number | 150 | Max tokens for classification |
ai_rule_confidence_threshold | number | 0.8 | Rule-based classifier threshold |
AI Fallback
| Option | Type | Default | Description |
|---|---|---|---|
ai_classification_use_llm | boolean | false | Enable LLM fallback |
ai_classification_llm_model | string | "phi3:mini" | Ollama model for fallback |
Storage
SQLite Backend
| Option | Type | Default | Description |
|---|---|---|---|
storage.backend | string | "sqlite" | Storage backend type |
storage.sqlite_db_path | string | "pkb_data.db" | Database file location |
storage.enable_fts5 | boolean | true | Enable full-text search |
storage.enable_vector_search | boolean | true | Enable semantic search |
storage.sqlite_cache_size | number | 2000 | SQLite cache pages |
storage.sqlite_journal_mode | string | "WAL" | Journal mode |
storage.sqlite_synchronous | string | "NORMAL" | Sync mode |
Export
| Option | Type | Default | Description |
|---|---|---|---|
storage.export_enabled | boolean | false | Enable automatic exports |
storage.export_path | string | "exports/" | Export directory |
storage.export_frequency | string | "manual" | realtime, daily, manual |
UI Settings
Capture Window
| Option | Type | Default | Description |
|---|---|---|---|
ui_enabled | boolean | true | Enable UI features |
ui_hotkey_keys | array | ["ctrl", "shift", "space"] | Capture window hotkey |
ui_dashboard_hotkey_keys | array | ["ctrl", "shift", "d"] | Dashboard hotkey |
ui_window_width | number | 600 | Window width (pixels) |
ui_window_height | number | 80 | Window height (pixels) |
ui_window_alpha | number | 0.95 | Window transparency (0.0-1.0) |
ui_animation_duration_ms | number | 150 | Animation speed |
Launcher
| Option | Type | Default | Description |
|---|---|---|---|
launcher_show_developer_tools | boolean | false | Show dev tools in launcher |
Search Settings
Hybrid Search
| Option | Type | Default | Description |
|---|---|---|---|
search.hybrid_weights | array | [0.3, 0.7] | [keyword, semantic] weights |
search.rrf_k | number | 50 | Reciprocal Rank Fusion k |
search.max_results | number | 50 | Max results per backend |
Integrations
Ollama
| Option | Type | Default | Description |
|---|---|---|---|
integrations.ollama.config.base_url | string | "http://localhost:11434" | Ollama server URL |
integrations.ollama.connected | boolean | false | Connection status |
Notion
| Option | Type | Default | Description |
|---|---|---|---|
integrations.notion.connected | boolean | false | Connection status |
integrations.notion.config.tasks_database_id | string | null | Tasks database ID |
integrations.notion.config.notes_database_id | string | null | Notes database ID |
OpenAI / Anthropic
API keys are stored encrypted in the config file. Set via environment variables or dashboard.
Security
| Option | Type | Default | Description |
|---|---|---|---|
security.max_text_length | number | 10000 | Max input text length |
security.validate_inputs | boolean | true | Enable input validation |
security.atomic_writes | boolean | true | Use atomic file writes |
Environment Variables
All configuration options can be overridden with environment variables using the PKB_ prefix:
# Naming convention: PKB_<OPTION_NAME> (uppercase, underscores)
$env:PKB_LOG_LEVEL = "DEBUG"
$env:PKB_WATCHER_INTERVAL_SECONDS = "5"
$env:PKB_UI_HOTKEY_KEYS = "ctrl,alt,space"
$env:PKB_AI_CLASSIFICATION_TEMPERATURE = "0.1"
# Nested options use underscores
$env:PKB_STORAGE_SQLITE_DB_PATH = "custom.db"
$env:PKB_SEARCH_HYBRID_WEIGHTS = "0.4,0.6"
API Keys
$env:OPENAI_API_KEY = "sk-..."
$env:ANTHROPIC_API_KEY = "sk-ant-..."
Example Configurations
Minimal (Offline)
{
"ai_classification_use_tinybert": true,
"ai_classification_use_llm": false,
"watcher_enabled_by_default": false,
"enable_ai": true
}
Performance Optimized
{
"ai_classification_use_tinybert": true,
"storage": {
"sqlite_cache_size": 10000,
"sqlite_journal_mode": "WAL",
"sqlite_synchronous": "NORMAL"
},
"search": {
"hybrid_weights": [0.4, 0.6],
"rrf_k": 30
}
}
Always-On Background
{
"watcher_enabled_by_default": true,
"watcher_interval_seconds": 5,
"watcher_cooldown_seconds": 180,
"watcher_max_items": 3,
"ui_enabled": true
}
Custom Hotkeys
{
"ui_hotkey_keys": ["ctrl", "alt", "c"],
"ui_dashboard_hotkey_keys": ["ctrl", "alt", "d"]
}
Large Database
{
"storage": {
"sqlite_cache_size": 20000,
"sqlite_journal_mode": "WAL",
"sqlite_synchronous": "NORMAL",
"enable_fts5": true,
"enable_vector_search": true
},
"search": {
"max_results": 100
}
}
Validation
Test your configuration:
# Show merged configuration
pkb --show-config
# Validate configuration file
pkb --validate-config
Hot Reloading
Most configuration changes take effect immediately. Some require restart:
- Hotkey changes
- Storage backend changes
- AI model path changes