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
# 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.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/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/messageTesting
OpenCode Monitor uses pytest for testing. Tests are organized in tests/:
tests/unit/- Unit tests for individual modulestests/integration/- CLI integration teststests/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