📚 OpenCode Monitor - Complete Documentation
Welcome to the complete documentation for OpenCode Monitor, a powerful CLI tool for monitoring and analyzing your OpenCode AI coding sessions.
📖 Table of Contents
- Installation
- Basic Usage
- Command Reference
- Configuration
- Adding New Models
- Setting Usage Quotas
- Exporting Reports
- Configuration Commands
- Troubleshooting
- Advanced Tips
🚀 Installation
Prerequisites
Before installing OpenCode Monitor, ensure you have:
- Python 3.7+ installed on your system
- pip package manager
- OpenCode AI installed and configured
Method 1: Automated Installation (Recommended)
The easiest way to install OpenCode Monitor:
# Clone the repository
git clone https://github.com/yourusername/ocmonitor.git
cd ocmonitor
 
# Run the automated installer
./install.shThe installer will:
- ✅ Check Python version compatibility
- ✅ Install all required dependencies
- ✅ Configure PATH settings automatically
- ✅ Verify the installation
Method 2: Manual Installation
For more control over the installation process:
# Clone the repository
git clone https://github.com/yourusername/ocmonitor.git
cd ocmonitor
 
# Install Python dependencies
python3 -m pip install -r requirements.txt
 
# Install the package in development mode
python3 -m pip install -e .Verify Installation
After installation, verify everything works:
# Check if ocmonitor is accessible
ocmonitor --help
 
# Test with sample data
ocmonitor sessions test_sessions/PATH Configuration (If Needed)
If you get “command not found” errors:
# Find your Python user base
python3 -m site --user-base
 
# Add to your shell profile (~/.bashrc or ~/.zshrc)
export PATH="$(python3 -m site --user-base)/bin:$PATH"
 
# Reload your shell
source ~/.bashrc  # or ~/.zshrc🎯 Basic Usage
Quick Start Example
# Show current configuration
ocmonitor config show
 
# Analyze all your sessions
ocmonitor sessions ~/.local/share/opencode/storage/message
 
# Get a weekly breakdown
ocmonitor weekly ~/.local/share/opencode/storage/message
 
# Start live monitoring
ocmonitor live ~/.local/share/opencode/storage/messageDefault OpenCode Message Location
By default, OpenCode stores messages at:
~/.local/share/opencode/storage/messageYou can use this path in all commands, or configure a custom path (see Configuration section).
📋 Command Reference
1. Session Analysis Commands
ocmonitor session <path>
Analyze a single coding session in detail.
# Analyze a specific session directory
ocmonitor session ~/.local/share/opencode/storage/message/ses_20250118_143022
 
# With JSON output
ocmonitor session ~/.local/share/opencode/storage/message/ses_20250118_143022 --format jsonExample Output:
Click image to view full-size screenshot of session analysis output
#### `ocmonitor sessions <path>`
Analyze all sessions in a directory with summary statistics.
```bash
# Analyze all sessions
ocmonitor sessions ~/.local/share/opencode/storage/message
# Limit to recent sessions
ocmonitor sessions ~/.local/share/opencode/storage/message --limit 10
# JSON format for programmatic use
ocmonitor sessions ~/.local/share/opencode/storage/message --format jsonExample Output:
Click image to view full-size screenshot of sessions summary output
### 2. Time-Based Analysis Commands
#### `ocmonitor daily <path>`
Daily usage breakdown with cost and token analysis.
```bash
# Daily breakdown for the last 30 days
ocmonitor daily ~/.local/share/opencode/storage/message
# Specific date range
ocmonitor daily ~/.local/share/opencode/storage/message --days 7
# JSON output
ocmonitor daily ~/.local/share/opencode/storage/message --format jsonExample Output:
Click image to view full-size screenshot of daily usage breakdown
#### `ocmonitor weekly <path>`
Weekly usage patterns and trends.
```bash
# Weekly breakdown
ocmonitor weekly ~/.local/share/opencode/storage/message
# Last 4 weeks
ocmonitor weekly ~/.local/share/opencode/storage/message --weeks 4ocmonitor monthly <path>
Monthly usage analysis and cost tracking.
# Monthly breakdown
ocmonitor monthly ~/.local/share/opencode/storage/message
 
# Specific number of months
ocmonitor monthly ~/.local/share/opencode/storage/message --months 63. Model Analysis Commands
ocmonitor models <path>
Detailed breakdown of usage per AI model.
# Model usage statistics
ocmonitor models ~/.local/share/opencode/storage/message
 
# JSON format
ocmonitor models ~/.local/share/opencode/storage/message --format jsonExample Output:
Click image to view full-size screenshot of model usage analytics
4. Live Monitoring Commands
ocmonitor live <path>
Real-time monitoring dashboard that updates automatically.
# Start live monitoring (updates every 5 seconds)
ocmonitor live ~/.local/share/opencode/storage/message
 
# Custom refresh interval (in seconds)
ocmonitor live ~/.local/share/opencode/storage/message --refresh 10Features:
- 🔄 Auto-refreshing display
- 📊 Real-time cost tracking
- ⏱️ Live session duration
- 📈 Token usage updates
- 🚦 Color-coded status indicators
Click image to view full-size screenshot of the live monitoring dashboard
⚙️ Configuration
Setting Custom Message Path
OpenCode Monitor can be configured to use custom paths for your message data.
Method 1: Edit Configuration File
Edit the config.toml file:
[paths]
# Custom path to OpenCode messages directory
messages_dir = "/custom/path/to/messages"
# Directory for exports
export_dir = "./my-exports"Method 2: Environment Variable
Set the path via environment variable:
# Set custom path
export OCMONITOR_MESSAGES_DIR="/custom/path/to/messages"
 
# Use in commands
ocmonitor sessionsMethod 3: Command Line Override
Override the path for individual commands:
# Use custom path for this command only
ocmonitor sessions /custom/path/to/messagesFull Configuration Options
Here’s a complete config.toml with all available options:
# OpenCode Monitor Configuration
 
[paths]
# Default path to OpenCode messages directory
messages_dir = "~/.local/share/opencode/storage/message"
# Directory for exports
export_dir = "./exports"
 
[ui]
# Table style: "rich", "simple", "minimal"
table_style = "rich"
# Enable progress bars
progress_bars = true
# Enable colors in output
colors = true
# Refresh interval for live dashboard (seconds)
live_refresh_interval = 5
 
[export]
# Default export format: "csv", "json"
default_format = "csv"
# Include metadata in exports
include_metadata = true
# Include raw data in exports
include_raw_data = false
 
[models]
# Path to models pricing configuration
config_file = "models.json"
 
[analytics]
# Default timeframe for reports: "daily", "weekly", "monthly"
default_timeframe = "daily"
# Number of recent sessions to analyze by default
recent_sessions_limit = 50
 
[quotas]
# Daily spending limits per model (in USD)
daily_limits = { claude-sonnet-4 = 10.0, claude-opus-4 = 20.0 }
# Monthly spending limits
monthly_limits = { claude-sonnet-4 = 200.0, claude-opus-4 = 400.0 }
# Enable quota warnings
enable_warnings = true🤖 Adding New Models
Understanding the Models Configuration
Models are defined in the models.json file. Each model includes pricing and technical specifications.
Current Models Format
{
  "claude-sonnet-4-20250514": {
    "input_cost_per_million": 3.0,
    "output_cost_per_million": 15.0,
    "context_window": 200000,
    "description": "Claude Sonnet 4 (2025-05-14)"
  },
  "claude-opus-4": {
    "input_cost_per_million": 15.0,
    "output_cost_per_million": 75.0,
    "context_window": 200000,
    "description": "Claude Opus 4"
  },
  "grok-code": {
    "input_cost_per_million": 0.0,
    "output_cost_per_million": 0.0,
    "context_window": 256000,
    "description": "Grok Code (Free)"
  }
}Adding a New Model
Step 1: Edit models.json
Add your new model to the models.json file:
{
  "existing-models": "...",
  
  "new-ai-model": {
    "input_cost_per_million": 5.0,
    "output_cost_per_million": 25.0,
    "context_window": 128000,
    "description": "New AI Model"
  },
  
  "another-model": {
    "input_cost_per_million": 0.0,
    "output_cost_per_million": 0.0,
    "context_window": 100000,
    "description": "Another Free Model"
  }
}Step 2: Verify the Addition
Test that your new model is recognized:
# Check if the model appears in configuration
ocmonitor config show
 
# Test with session data that uses the new model
ocmonitor sessions /path/to/sessionsStep 3: Handle Fully Qualified Names
For models with provider prefixes (like provider/model-name), add both versions:
{
  "provider/model-name": {
    "input_cost_per_million": 2.0,
    "output_cost_per_million": 10.0,
    "context_window": 150000,
    "description": "Provider Model"
  },
  "model-name": {
    "input_cost_per_million": 2.0,
    "output_cost_per_million": 10.0,
    "context_window": 150000,
    "description": "Provider Model (short name)"
  }
}Model Configuration Fields
| Field | Description | Required | Example | 
|---|---|---|---|
| input_cost_per_million | Cost per 1M input tokens (USD) | ✅ | 3.0 | 
| output_cost_per_million | Cost per 1M output tokens (USD) | ✅ | 15.0 | 
| context_window | Maximum context window size | ✅ | 200000 | 
| description | Human-readable model name | ✅ | "Claude Sonnet 4" | 
Free Models
For free models, set costs to 0.0:
{
  "free-model": {
    "input_cost_per_million": 0.0,
    "output_cost_per_million": 0.0,
    "context_window": 100000,
    "description": "Free AI Model"
  }
}💰 Setting Usage Quotas
Understanding Quotas
Quotas help you monitor and control your AI usage costs by setting spending limits.
Configuring Quotas
Method 1: Configuration File
Edit config.toml to set quota limits:
[quotas]
# Daily spending limits per model (in USD)
daily_limits = { 
    claude-sonnet-4 = 10.0, 
    claude-opus-4 = 20.0,
    claude-opus-4.1 = 25.0
}
 
# Weekly spending limits
weekly_limits = { 
    claude-sonnet-4 = 50.0, 
    claude-opus-4 = 100.0 
}
 
# Monthly spending limits
monthly_limits = { 
    claude-sonnet-4 = 200.0, 
    claude-opus-4 = 400.0,
    "*" = 500.0  # Total limit across all models
}
 
# Enable quota warnings
enable_warnings = true
 
# Warning threshold (percentage of quota)
warning_threshold = 80.0
 
# Action when quota exceeded: "warn", "block"
quota_action = "warn"Method 2: Environment Variables
Set quotas using environment variables:
# Daily limits
export OCMONITOR_DAILY_CLAUDE_SONNET_4=10.0
export OCMONITOR_DAILY_CLAUDE_OPUS_4=20.0
 
# Monthly limits
export OCMONITOR_MONTHLY_TOTAL=500.0Quota Examples
Basic Daily Limits
[quotas]
daily_limits = { 
    claude-sonnet-4 = 15.0,  # $15/day for Sonnet
    claude-opus-4 = 30.0     # $30/day for Opus
}
enable_warnings = trueComprehensive Quota Setup
[quotas]
# Daily limits per model
daily_limits = { 
    claude-sonnet-4 = 10.0,
    claude-opus-4 = 20.0,
    "*" = 35.0  # Total daily limit
}
 
# Weekly limits
weekly_limits = { 
    claude-sonnet-4 = 60.0,
    claude-opus-4 = 120.0,
    "*" = 200.0
}
 
# Monthly limits
monthly_limits = { 
    claude-sonnet-4 = 250.0,
    claude-opus-4 = 500.0,
    "*" = 800.0
}
 
# Warning settings
enable_warnings = true
warning_threshold = 75.0  # Warn at 75% of quota
email_notifications = "admin@example.com"Viewing Quota Status
Check your current quota usage:
# Show quota status in daily report
ocmonitor daily ~/.local/share/opencode/storage/message --show-quotas
 
# Show quota status in model breakdown
ocmonitor models ~/.local/share/opencode/storage/message --show-quotas📤 Exporting Reports
Export Command Overview
OpenCode Monitor provides powerful export capabilities for creating reports and integrating with other tools.
Basic Export Syntax
ocmonitor export <report_type> [path] [options]Export Types
1. Sessions Export
Export detailed session data:
# Export all sessions to CSV
ocmonitor export sessions ~/.local/share/opencode/storage/message --format csv --output sessions_report.csv
 
# Export to JSON
ocmonitor export sessions ~/.local/share/opencode/storage/message --format json --output sessions_data.json
 
# Export recent sessions only
ocmonitor export sessions ~/.local/share/opencode/storage/message --limit 50 --format csv2. Daily Reports Export
# Export daily breakdown
ocmonitor export daily ~/.local/share/opencode/storage/message --format csv --output daily_usage.csv
 
# Last 30 days
ocmonitor export daily ~/.local/share/opencode/storage/message --days 30 --format json3. Weekly Reports Export
# Export weekly data
ocmonitor export weekly ~/.local/share/opencode/storage/message --format csv --output weekly_report.csv
 
# Last 12 weeks
ocmonitor export weekly ~/.local/share/opencode/storage/message --weeks 12 --format json4. Monthly Reports Export
# Export monthly analysis
ocmonitor export monthly ~/.local/share/opencode/storage/message --format csv --output monthly_analysis.csv
 
# Last 6 months
ocmonitor export monthly ~/.local/share/opencode/storage/message --months 6 --format json5. Model Usage Export
# Export model breakdown
ocmonitor export models ~/.local/share/opencode/storage/message --format csv --output model_usage.csv
 
# JSON format with metadata
ocmonitor export models ~/.local/share/opencode/storage/message --format json --include-metadataExport Options
| Option | Description | Example | 
|---|---|---|
| --format | Output format ( csv,json) | --format csv | 
| --output | Output filename | --output report.csv | 
| --limit | Limit number of records | --limit 100 | 
| --days | Number of days to include | --days 30 | 
| --weeks | Number of weeks to include | --weeks 12 | 
| --months | Number of months to include | --months 6 | 
| --include-metadata | Include additional metadata | --include-metadata | 
| --include-raw-data | Include raw session data | --include-raw-data | 
CSV Export Example
ocmonitor export sessions ~/.local/share/opencode/storage/message --format csv --output sessions.csvGenerated CSV Structure:
session_id,date,start_time,end_time,duration_minutes,model,total_cost,input_tokens,output_tokens,cache_tokens
ses_20250118_143022,2025-01-18,14:30:22,14:53:37,23.25,claude-sonnet-4,2.45,15420,8340,2100
ses_20250118_120830,2025-01-18,12:08:30,12:53:38,45.13,claude-opus-4,4.32,18650,9240,1850JSON Export Example
ocmonitor export sessions ~/.local/share/opencode/storage/message --format json --output sessions.json --include-metadataGenerated JSON Structure:
{
  "metadata": {
    "export_date": "2025-01-18T15:30:00Z",
    "tool_version": "1.0.0",
    "total_sessions": 25,
    "date_range": {
      "start": "2025-01-01",
      "end": "2025-01-18"
    }
  },
  "sessions": [
    {
      "session_id": "ses_20250118_143022",
      "date": "2025-01-18",
      "start_time": "14:30:22",
      "end_time": "14:53:37",
      "duration_minutes": 23.25,
      "model": "claude-sonnet-4",
      "total_cost": 2.45,
      "tokens": {
        "input": 15420,
        "output": 8340,
        "cache": 2100,
        "total": 25860
      },
      "cost_breakdown": {
        "input_cost": 0.46,
        "output_cost": 1.25,
        "cache_cost": 0.63,
        "total_cost": 2.45
      }
    }
  ]
}Automated Export Scripts
Daily Export Automation
Create a script for daily exports:
#!/bin/bash
# daily_export.sh
 
DATE=$(date +%Y%m%d)
EXPORT_DIR="./reports"
MESSAGES_PATH="~/.local/share/opencode/storage/message"
 
mkdir -p $EXPORT_DIR
 
# Export daily report
ocmonitor export daily $MESSAGES_PATH \
  --format csv \
  --output "$EXPORT_DIR/daily_${DATE}.csv"
 
# Export sessions
ocmonitor export sessions $MESSAGES_PATH \
  --format json \
  --output "$EXPORT_DIR/sessions_${DATE}.json" \
  --include-metadata
 
echo "Reports exported to $EXPORT_DIR/"Weekly Report Generation
#!/bin/bash
# weekly_report.sh
 
WEEK=$(date +%Y_W%U)
ocmonitor export weekly ~/.local/share/opencode/storage/message \
  --format csv \
  --output "weekly_report_${WEEK}.csv" \
  --weeks 1
 
ocmonitor export models ~/.local/share/opencode/storage/message \
  --format csv \
  --output "model_usage_${WEEK}.csv"🔧 Configuration Commands
ocmonitor config Command Reference
The configuration command helps you manage and view your OpenCode Monitor settings.
Viewing Configuration
Show All Configuration
# Display complete configuration
ocmonitor config showText Output Example:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                     ⚙️  Configuration                                        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
📁 Paths:
   Messages Directory: ~/.local/share/opencode/storage/message
   Export Directory: ./exports
🎨 UI Settings:
   Table Style: rich
   Progress Bars: enabled
   Colors: enabled
   Live Refresh: 5 seconds
📤 Export Settings:
   Default Format: csv
   Include Metadata: enabled
   Include Raw Data: disabled
🤖 Models:
   Configuration File: models.json
   Supported Models: 6
📊 Analytics:
   Default Timeframe: daily
   Recent Sessions Limit: 50Show Specific Configuration Sections
# Show only paths configuration
ocmonitor config show --section paths
 
# Show UI settings
ocmonitor config show --section ui
 
# Show model configuration
ocmonitor config show --section modelsValidating Configuration
Check Configuration Validity
# Validate configuration files
ocmonitor config validateExample Output:
Text Output Example:
✅ Configuration validation successful
📋 Validation Results:
   ✅ config.toml: Valid TOML format
   ✅ models.json: Valid JSON format
   ✅ Paths: All directories accessible
   ✅ Models: 6 models configured correctly
   ✅ Quotas: Quota limits properly formatted
🔍 Configuration Details:
   Config File: /path/to/config.toml
   Models File: /path/to/models.json
   Messages Directory: ~/.local/share/opencode/storage/message (exists)
   Export Directory: ./exports (will be created)Diagnose Configuration Issues
# Comprehensive configuration diagnosis
ocmonitor config diagnoseExample Output:
Text Output Example:
🔍 Configuration Diagnosis
✅ Configuration Files:
   ✅ config.toml found and valid
   ✅ models.json found and valid
⚠️  Path Issues:
   ⚠️  Messages directory not found: ~/.local/share/opencode/storage/message
   💡 Suggestion: Check if OpenCode is installed and has been run
✅ Model Configuration:
   ✅ 6 models configured
   ✅ All required fields present
   ✅ Valid pricing data
🔧 Recommendations:
   1. Verify OpenCode installation
   2. Run OpenCode at least once to create message directory
   3. Consider setting custom messages_dir if using different locationUpdating Configuration
Set Configuration Values
# Set messages directory
ocmonitor config set paths.messages_dir "/custom/path/to/messages"
 
# Set default export format
ocmonitor config set export.default_format "json"
 
# Enable/disable UI features
ocmonitor config set ui.colors true
ocmonitor config set ui.progress_bars false
 
# Set live refresh interval
ocmonitor config set ui.live_refresh_interval 10Reset Configuration
# Reset to default configuration
ocmonitor config reset
 
# Reset specific section
ocmonitor config reset --section ui
 
# Backup current config before reset
ocmonitor config reset --backupConfiguration File Locations
Find Configuration Files
# Show configuration file paths
ocmonitor config pathsExample Output:
📁 Configuration File Locations:
Main Configuration:
   File: ./config.toml
   Status: ✅ Found
Models Configuration:
   File: ./models.json
   Status: ✅ Found
User Configuration (if exists):
   File: ~/.config/ocmonitor/config.toml
   Status: ❌ Not found
Environment Overrides:
   OCMONITOR_MESSAGES_DIR: not set
   OCMONITOR_EXPORT_DIR: not setEnvironment Variable Override
You can override any configuration setting using environment variables:
# Override messages directory
export OCMONITOR_MESSAGES_DIR="/custom/path"
 
# Override export format
export OCMONITOR_EXPORT_FORMAT="json"
 
# Override UI settings
export OCMONITOR_UI_COLORS="false"
export OCMONITOR_UI_TABLE_STYLE="simple"
 
# Use the overrides
ocmonitor config show🔧 Troubleshooting
Common Issues and Solutions
1. Command Not Found: ocmonitor
Problem: Terminal shows command not found: ocmonitor
Solutions:
# Check if Python scripts directory is in PATH
echo $PATH | grep -o '[^:]*python[^:]*bin'
 
# Find Python user base
python3 -m site --user-base
 
# Add to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH="$(python3 -m site --user-base)/bin:$PATH"
 
# Reload shell
source ~/.bashrc  # or ~/.zshrc
 
# Alternative: Use full path
python3 /path/to/ocmonitor/run_ocmonitor.py --help
 
# Alternative: Reinstall in development mode
cd /path/to/ocmonitor
python3 -m pip install -e .2. Import Errors and Dependencies
Problem: Python import errors when running commands
Solutions:
# Check Python version
python3 --version  # Should be 3.7+
 
# Reinstall dependencies
python3 -m pip install -r requirements.txt --force-reinstall
 
# Check for missing dependencies
python3 -c "import click, rich, pydantic, toml; print('All dependencies OK')"
 
# Install specific missing package
python3 -m pip install click rich pydantic toml
 
# Clear Python cache
find . -name "__pycache__" -type d -exec rm -rf {} +
find . -name "*.pyc" -delete3. Architecture Compatibility Issues
Problem: Architecture mismatch errors (arm64 vs x86_64)
Solutions:
# Check system architecture
uname -m
 
# For Apple Silicon Macs, use native Python
which python3
/opt/homebrew/bin/python3 --version
 
# Reinstall with correct architecture
python3 -m pip uninstall pydantic pydantic-core
python3 -m pip install pydantic pydantic-core --no-cache-dir
 
# Force reinstall all dependencies
python3 -m pip install -r requirements.txt --force-reinstall --no-cache-dir4. Messages Directory Not Found
Problem: Messages directory not found error
Solutions:
# Check if OpenCode is installed
which opencode
 
# Check default location
ls -la ~/.local/share/opencode/storage/message
 
# Find OpenCode data directory
find ~ -name "opencode" -type d 2>/dev/null
 
# Check OpenCode configuration
opencode config list 2>/dev/null | grep storage
 
# Set custom path if different location
ocmonitor config set paths.messages_dir "/actual/path/to/messages"
 
# Verify path is accessible
ocmonitor config validate5. JSON Parsing Errors
Problem: Errors when reading session files
Solutions:
# Check for corrupted session files
find ~/.local/share/opencode/storage/message -name "*.json" -exec python3 -m json.tool {} \; > /dev/null
 
# Find specific problematic files
find ~/.local/share/opencode/storage/message -name "*.json" -print0 | while IFS= read -r -d '' file; do
    python3 -m json.tool "$file" > /dev/null 2>&1 || echo "Invalid JSON: $file"
done
 
# Test with specific session
ocmonitor session ~/.local/share/opencode/storage/message/problematic_session
 
# Use verbose mode for debugging
ocmonitor sessions ~/.local/share/opencode/storage/message --verbose6. Permission Errors
Problem: Permission denied errors when accessing files
Solutions:
# Check file permissions
ls -la ~/.local/share/opencode/storage/message
 
# Fix permissions if needed
chmod -R 755 ~/.local/share/opencode/storage/message
 
# Check if export directory is writable
mkdir -p ./exports
touch ./exports/test.txt && rm ./exports/test.txt
 
# Use alternative export directory
ocmonitor config set export.export_dir "/tmp/ocmonitor-exports"7. Model Not Recognized
Problem: “Unknown model” in reports
Solutions:
# Check which models are configured
ocmonitor config show --section models
 
# View current models.json
cat models.json
 
# Find unrecognized model names in your data
grep -r "model.*:" ~/.local/share/opencode/storage/message | grep -v claude | grep -v grok | head -5
 
# Add missing model to models.json
# Edit models.json and add the new model configuration
 
# Validate models configuration
ocmonitor config validate8. Export Failures
Problem: Export commands fail or produce empty files
Solutions:
# Test export with verbose output
ocmonitor export sessions ~/.local/share/opencode/storage/message --format csv --output test.csv --verbose
 
# Check export directory permissions
ls -la ./exports
 
# Try different export format
ocmonitor export sessions ~/.local/share/opencode/storage/message --format json --output test.json
 
# Test with limited data
ocmonitor export sessions ~/.local/share/opencode/storage/message --limit 5 --format csv
 
# Check disk space
df -h .Debug Mode
Enable Verbose Logging
# Run any command with verbose output
ocmonitor sessions ~/.local/share/opencode/storage/message --verbose
 
# Set debug environment variable
export OCMONITOR_DEBUG=1
ocmonitor sessions ~/.local/share/opencode/storage/messageCheck System Information
# Show system information for bug reports
ocmonitor config system-infoText Output Example:
🔍 System Information for Bug Reports
Environment:
   OS: macOS 12.6
   Architecture: arm64
   Python Version: 3.9.16
   OpenCode Monitor Version: 1.0.0
Python Environment:
   Python Path: /opt/homebrew/bin/python3
   Site Packages: /opt/homebrew/lib/python3.9/site-packages
   User Base: /Users/username/Library/Python/3.9
Dependencies:
   ✅ click: 8.1.7
   ✅ rich: 13.7.0
   ✅ pydantic: 2.5.2
   ✅ toml: 0.10.2
Configuration:
   Config File: ./config.toml (exists)
   Models File: ./models.json (exists)
   Messages Dir: ~/.local/share/opencode/storage/message (accessible)
Recent Errors: NoneGetting Help
Report Issues
When reporting issues, include:
- 
System Information: ocmonitor config system-info
- 
Error Messages: Full error output with --verboseflag
- 
Configuration: ocmonitor config show
- 
Steps to Reproduce: Exact commands that cause the issue 
Community Support
- 🐛 GitHub Issues: For bug reports and feature requests
- 💬 Discussions: For questions and community help
- 📚 Documentation: Check this guide and README files
🚀 Advanced Tips
Performance Optimization
Large Dataset Handling
# Process large datasets efficiently
ocmonitor sessions ~/.local/share/opencode/storage/message --limit 1000
 
# Use JSON format for faster processing
ocmonitor sessions ~/.local/share/opencode/storage/message --format json | jq '.sessions | length'
 
# Focus on recent data
ocmonitor daily ~/.local/share/opencode/storage/message --days 7Batch Processing
# Process multiple directories
for dir in /path/to/project1/messages /path/to/project2/messages; do
    echo "Processing $dir"
    ocmonitor sessions "$dir" --format csv --output "$(basename $dir)_report.csv"
doneIntegration with Other Tools
Shell Scripts Integration
#!/bin/bash
# Monthly cost check script
 
COST=$(ocmonitor monthly ~/.local/share/opencode/storage/message --format json | jq '.summary.total_cost')
LIMIT=100.0
 
if (( $(echo "$COST > $LIMIT" | bc -l) )); then
    echo "⚠️ Monthly cost $COST exceeds limit $LIMIT"
    # Send notification, email, etc.
fiData Pipeline Integration
# Export for data analysis
ocmonitor export sessions ~/.local/share/opencode/storage/message \
    --format json \
    --include-raw-data \
    --output sessions.json
 
# Process with jq
cat sessions.json | jq '.sessions[] | select(.total_cost > 5.0)'
 
# Import into database (example)
python3 scripts/import_to_db.py sessions.jsonCustomization
Custom Export Scripts
Create custom export formats:
#!/usr/bin/env python3
# custom_export.py
 
import json
import sys
from datetime import datetime
 
def custom_export(sessions_file):
    with open(sessions_file) as f:
        data = json.load(f)
    
    # Custom processing
    for session in data['sessions']:
        print(f"{session['date']},{session['model']},{session['total_cost']}")
 
if __name__ == "__main__":
    custom_export(sys.argv[1])Usage:
ocmonitor export sessions ~/.local/share/opencode/storage/message --format json --output temp.json
python3 custom_export.py temp.json > custom_report.csvConfiguration Templates
Create configuration templates for different use cases:
# Development configuration
cp config.toml config.dev.toml
# Edit config.dev.toml for development settings
 
# Production configuration  
cp config.toml config.prod.toml
# Edit config.prod.toml for production settings
 
# Use specific configuration
OCMONITOR_CONFIG=config.dev.toml ocmonitor sessions ~/.local/share/opencode/storage/messageThis completes the comprehensive documentation for OpenCode Monitor. For additional help, please refer to the GitHub repository or file an issue for support.




