docsAdvanced Tips

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 7

Batch 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"
done

Integration 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.
fi

Data Pipeline Integration

# Export for data analysis
ocmonitor export sessions ~/.local/share/opencode/storage/message \
    --format json \
    --include-raw-data \
    --output sessions.json
 
# Export project data for analysis
ocmonitor export projects ~/.local/share/opencode/storage/message \
    --format json \
    --include-metadata \
    --output projects.json
 
# Process with jq
cat sessions.json | jq '.sessions[] | select(.total_cost > 5.0)'
cat projects.json | jq '.projects[] | select(.cost > 10.0)'
 
# Import into database (example)
python3 scripts/import_to_db.py sessions.json
python3 scripts/import_projects_to_db.py projects.json

Customization

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.csv

Configuration Templates

Create configuration templates for different use cases:

# Development configuration
cp ~/.config/ocmonitor/config.toml ~/.config/ocmonitor/config.dev.toml
# Edit development settings
nano ~/.config/ocmonitor/config.dev.toml
 
# Production configuration
cp ~/.config/ocmonitor/config.toml ~/.config/ocmonitor/config.prod.toml
# Edit production settings
nano ~/.config/ocmonitor/config.prod.toml
 
# Use specific configuration
OCMONITOR_CONFIG=~/.config/ocmonitor/config.dev.toml ocmonitor sessions ~/.local/share/opencode/storage/message

Testing

OpenCode Monitor uses pytest for testing. Tests are organized in tests/:

  • tests/unit/ - Unit tests for individual modules
  • tests/integration/ - CLI integration tests
  • tests/conftest.py - Shared fixtures

Running Tests

# Run all tests
pytest
 
# Run only unit tests
pytest -m unit
 
# Run only integration tests
pytest -m integration
 
# Run with coverage
pytest --cov=ocmonitor