docsExporting Reports

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 csv

2. 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 json

3. 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 json

4. 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 json

5. 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-metadata

6. Project Usage Export

# Export project breakdown
ocmonitor export projects ~/.local/share/opencode/storage/message --format csv --output project_usage.csv
 
# JSON format with detailed metadata
ocmonitor export projects ~/.local/share/opencode/storage/message --format json --include-metadata
 
# Filter by date range
ocmonitor export projects ~/.local/share/opencode/storage/message --start-date 2024-01-01 --end-date 2024-01-31 --format csv

Export Options

OptionDescriptionExample
--formatOutput format (csv, json)--format csv
--outputOutput filename--output report.csv
--limitLimit number of records--limit 100
--daysNumber of days to include--days 30
--weeksNumber of weeks to include--weeks 12
--monthsNumber of months to include--months 6
--include-metadataInclude additional metadata--include-metadata
--include-raw-dataInclude raw session data--include-raw-data
--start-dateStart date for filtering (YYYY-MM-DD)--start-date 2024-01-01
--end-dateEnd date for filtering (YYYY-MM-DD)--end-date 2024-01-31
--timeframePredefined timeframe filter--timeframe weekly

CSV Export Example

ocmonitor export sessions ~/.local/share/opencode/storage/message --format csv --output sessions.csv

Generated 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,1850

JSON Export Example

ocmonitor export sessions ~/.local/share/opencode/storage/message --format json --output sessions.json --include-metadata

Generated 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"