Skip to main content

Configuration

CommandLane auto-generates pkb.config.json on first run. This guide covers all configuration options.

Default Configuration

{
"ai_classification_use_tinybert": false,
"ai_classification_model_path": ".models/tinybert-tasknote/",
"watcher_enabled_by_default": false,
"watcher_show_toggle_in_ui": true,
"storage": {
"backend": "sqlite",
"sqlite_db_path": "pkb_data.db"
}
}

Classification Settings

Local Fast Classification

Enable local AI classification (works offline, no API keys needed):

{
"ai_classification_use_tinybert": true,
"ai_classification_model_path": ".models/tinybert-tasknote/"
}

Benefits:

  • Fast, accurate classification
  • No API keys or internet required
  • Pre-trained model included
  • Works completely offline

When to use:

  • Default for most users
  • Offline environments
  • High-volume capture

LLM Fallback

Configure optional LLM fallback when TinyBERT is uncertain:

{
"ai_classification_use_llm": true,
"ai_classification_llm_model": "phi3:mini"
}
Performance Impact

LLM classification takes 14-31s. Only enable if classification accuracy is critical.

Storage Settings

Database Configuration

{
"storage": {
"backend": "sqlite",
"sqlite_db_path": "pkb_data.db",
"enable_fts5": true,
"enable_vector_search": true
}
}

Options:

  • sqlite_db_path - Database file location (default: pkb_data.db)
  • enable_fts5 - Full-text search (default: true)
  • enable_vector_search - Semantic search (default: true)

Export Settings

Optional markdown export:

{
"storage": {
"export_enabled": true,
"export_path": "exports/"
}
}

Watcher Settings

Configure background monitoring:

{
"watcher_enabled_by_default": true,
"watcher_show_toggle_in_ui": true,
"watcher_interval_seconds": 3,
"watcher_cooldown_seconds": 300,
"watcher_max_items": 5
}

Options:

  • watcher_enabled_by_default - Auto-start with UI (default: false)
  • watcher_show_toggle_in_ui - Show enable/disable toggle (default: true)
  • watcher_interval_seconds - Check frequency (default: 3)
  • watcher_cooldown_seconds - Min time between popovers (default: 300)
  • watcher_max_items - Max items per popover (default: 5)

UI Settings

Customize the capture window:

{
"ui_enabled": true,
"ui_hotkey_keys": ["ctrl", "shift", "c"],
"ui_window_width": 600,
"ui_window_height": 80,
"ui_window_alpha": 0.95,
"ui_animation_duration_ms": 150
}

Options:

  • ui_enabled - Enable UI features (default: true)
  • ui_hotkey_keys - Global hotkey combo (default: ["ctrl", "shift", "c"])
  • ui_window_width - Window width in pixels (default: 600)
  • ui_window_height - Window height in pixels (default: 80)
  • ui_window_alpha - Transparency 0.0-1.0 (default: 0.95)
  • ui_animation_duration_ms - Fade animation speed (default: 150)

Search Settings

Tune search behavior:

{
"search": {
"hybrid_weights": [0.3, 0.7],
"max_results": 50
}
}

Options:

  • hybrid_weights - Balance between keyword and semantic search (default: [0.3, 0.7])
  • max_results - Maximum search results (default: 50)

Tuning Tips:

  • Use [0.5, 0.5] for balanced keyword and semantic matching
  • Use [0.2, 0.8] to favor conceptual/meaning-based search
  • Use [0.7, 0.3] to favor exact phrase matching

Environment Variables

Override config settings with environment variables:

# UI Settings
$env:PKB_UI_ENABLED = "true"
$env:PKB_UI_HOTKEY_KEYS = "ctrl,shift,c"
$env:PKB_UI_WINDOW_WIDTH = "600"

# AI Settings
$env:OPENAI_API_KEY = "sk-..."

Advanced Configuration

Context-Aware Classification

Configure automatic PARA tagging based on active window:

{
"context": {
"enabled": true,
"contexts_file": "contexts.json"
}
}

See contexts.json.example for configuration format.

Performance Tuning

For large databases (>50k entries):

{
"storage": {
"sqlite_cache_size": 10000,
"sqlite_journal_mode": "WAL",
"sqlite_synchronous": "NORMAL"
},
"rag": {
"background_worker_enabled": true,
"batch_size": 100
}
}

Security Settings

{
"security": {
"max_text_length": 10000,
"validate_inputs": true,
"atomic_writes": true
}
}

Configuration Locations

CommandLane searches for configuration in this order:

  1. ./pkb.config.json (project directory)
  2. ~/.config/animus/pkb.config.json (user config)
  3. Environment variables (highest priority)

Validation

Settings are validated automatically when you save in the Dashboard:

  1. Open Dashboard (Ctrl + Shift + D)
  2. Go to Settings
  3. Invalid settings show warning indicators
  4. Fix any issues before saving

Configuration errors are also shown at startup if the config file has problems.

Common Configurations

Minimal (Offline, No AI)

{
"ai_classification_use_tinybert": true,
"ai_classification_use_llm": false,
"watcher_enabled_by_default": false
}

Performance Optimized

{
"ai_classification_use_tinybert": true,
"search": {
"hybrid_weights": [0.4, 0.6]
},
"storage": {
"sqlite_cache_size": 10000
}
}

Always-On Background

{
"watcher_enabled_by_default": true,
"ui_enabled": true,
"ai_classification_use_tinybert": true
}