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 |
watch_interval_seconds | number | 3 | Context polling frequency |
popover_cooldown_minutes | number | 5 | Min time between popovers |
max_popover_items | number | 2 | Max items per popover |
popover_auto_dismiss_ms | number | 10000 | Auto-dismiss delay (ms) |
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", "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 | 110 | Window height (pixels) |
ui_window_alpha | number | 0.95 | Window transparency (0.0-1.0) |
ui_animation_duration_ms | number | 200 | Animation speed |
Launcher
| Option | Type | Default | Description |
|---|
launcher_show_developer_tools | boolean | false | Show dev tools in launcher |
Agent
| Option | Type | Default | Description |
|---|
agent_default_provider | string | "auto" | Default AI provider: auto, openai, anthropic, ollama |
agent_default_model | string | null | Provider-specific default model |
chat_default_provider and chat_default_model are deprecated aliases. Use the agent_ variants instead.
CDP (Browser URL Capture)
| Option | Type | Default | Description |
|---|
cdp_enabled | boolean | false | Enable Chrome DevTools Protocol for browser URL capture |
cdp_port | number | 9222 | Chrome debug port |
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 |
Agent
Privacy
Settings that control how the AI agent handles sensitive data in conversation history.
| Option | Type | Default | Description |
|---|
privacy.purge_tool_output | boolean | false | Also purge tool output echoed in assistant messages when saving conversations |
privacy.purge_on_resume | boolean | true | Purge sensitive tool outputs when resuming conversations |
purge_on_resume
When a conversation is resumed, historical messages are loaded back into the agent's context. By default, purge_on_resume strips raw outputs from shell_execute and file_operation (read) tool results, replacing them with [output purged] or [content purged]. This prevents prompt injection attacks from extracting sensitive data that was read in earlier turns.
The agent's own text responses and all user messages are preserved -- only raw tool outputs are removed. If the agent needs data it read previously, it can re-read the file or re-run the command.
This is intentional and secure by default. The in-memory context for resumed sessions will not contain historical tool outputs. If you find this tradeoff unacceptable (e.g., you need the agent to reference prior tool results without re-fetching), you can disable it:
{
"privacy": {
"purge_on_resume": false
}
}
Shell
| Option | Type | Default | Description |
|---|
shell.approved_commands | array | [] | User-approved command patterns for agent shell execution |
Environment Variables
All configuration options can be overridden with environment variables using the PKB_ prefix:
$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"
$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
}
{
"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,
"watch_interval_seconds": 5,
"popover_cooldown_minutes": 3,
"max_popover_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
Configuration is validated automatically:
- On startup: CommandLane checks for invalid settings and shows errors
- In Dashboard: Settings page shows validation errors inline
- On save: Invalid configurations are rejected with helpful messages
Open Dashboard > Settings to see your current configuration and any validation issues.
Hot Reloading
Most configuration changes take effect immediately. Some require restart:
- Hotkey changes
- Storage backend changes
- AI model path changes