{"id":49588422,"url":"https://github.com/informigados/analyze-codex-tokens","last_synced_at":"2026-05-03T23:39:47.246Z","repository":{"id":350383443,"uuid":"1206591194","full_name":"informigados/analyze-codex-tokens","owner":"informigados","description":"Analyze Codex token usage, sessions, prompts, and subagent overhead to optimize AI workflows.","archived":false,"fork":false,"pushed_at":"2026-04-10T17:37:14.000Z","size":149,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T23:39:20.318Z","etag":null,"topics":["ai","ai-tools","analytics","app","cli","codex","cost-optimization","developer-tools","jsonl","openai","prompt-engineering","python","subagents","token-analysis","tokens","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/informigados.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T04:09:31.000Z","updated_at":"2026-04-10T17:37:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/informigados/analyze-codex-tokens","commit_stats":null,"previous_names":["informigados/analyze-codex-tokens"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/informigados/analyze-codex-tokens","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/informigados%2Fanalyze-codex-tokens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/informigados%2Fanalyze-codex-tokens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/informigados%2Fanalyze-codex-tokens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/informigados%2Fanalyze-codex-tokens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/informigados","download_url":"https://codeload.github.com/informigados/analyze-codex-tokens/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/informigados%2Fanalyze-codex-tokens/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32589264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-tools","analytics","app","cli","codex","cost-optimization","developer-tools","jsonl","openai","prompt-engineering","python","subagents","token-analysis","tokens","vscode","vscode-extension"],"created_at":"2026-05-03T23:39:46.386Z","updated_at":"2026-05-03T23:39:47.239Z","avatar_url":"https://github.com/informigados.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧠 Analyze Codex Tokens\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)\n[![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](#-tests)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/informigados/analyze-codex-tokens)\n\nUnderstand exactly how your Codex sessions consume tokens.\n\n\u003e ℹ️ **Codex** is an OpenAI product. This project is an independent local analyzer for Codex session logs.\n\nThis tool scans your local Codex logs and generates a **clear, structured analysis** of usage, costs, prompts, and agent behavior.\nIt also supports localized console/report output with English as the default base language.\n\n## 🚀 What It Does\n\nAnalyzes `.jsonl` session logs from:\n\n* `~/.codex/sessions`\n* `~/.codex/archived_sessions`\n\nThen generates:\n\n### 📊 Token Report\n\nA complete breakdown of:\n\n* 🔢 Total tokens (input, output, cached, reasoning)\n* 📁 Usage by project\n* 💸 Most expensive sessions\n* 🤖 Subagent usage \u0026 overhead\n* 🔗 Subagents without parent in selected range\n* ⚖️ Input vs output ratios\n* 🧠 Instruction-heavy sessions\n* 📉 Optimization insights\n* 🧾 Structured JSON output for automation\n\n### 🧾 Prompt Extraction\n\nCreates a `/prompts` folder with:\n\n* All user prompts\n* Organized by project\n* Sorted by time\n\n## ⚙️ Requirements\n\n* Python 3.10+\n* No external dependencies\n\n## ▶️ How to Run\n\n### Run the script\n\n```bash\npython analyze-codex-tokens.py\n```\n\nor on Windows:\n\n```powershell\npy analyze-codex-tokens.py\n```\n\n## 📂 Output\n\nDefault location:\n\n```\n./reports/\u003clang\u003e-YYYY-MM-DD_HHMMSS/\n```\n\nFiles generated:\n\n* `token_report.md`\n* `token_report.json`\n* `/prompts/*.md`\n\n## 🧩 CLI Options\n\nYou can run with direct CLI flags (recommended for CI/scripts):\n\n```bash\npython analyze-codex-tokens.py \\\n  --since-days 7 \\\n  --lang pt-br \\\n  --output-dir ./reports \\\n  --redact-prompts \\\n  --json\n```\n\nWindows PowerShell:\n\n```powershell\npy analyze-codex-tokens.py --since-days 7 --lang pt-br --output-dir .\\reports --redact-prompts --json\n```\n\nAvailable flags:\n\n* `--since-days N`\n* `--since-date YYYY-MM-DD`\n* `--codex-home PATH`\n* `--output-dir PATH`\n* `--lang en|pt-br|pt-pt|es`\n* `--redact-prompts` / `--no-redact-prompts`\n* `--json` / `--no-json`\n\n## 🔧 Optional Configuration (ENV Fallback)\n\n### Filter by last N days\n\n```bash\nexport SINCE_DAYS=7\n```\n\n```powershell\n$env:SINCE_DAYS=\"7\"\n```\n\n### Filter by date\n\n```bash\nexport SINCE_DATE=\"2026-03-30\"\n```\n\n```powershell\n$env:SINCE_DATE=\"2026-03-30\"\n```\n\n### Custom Codex directory\n\n```bash\nexport CODEX_HOME=\"/path/to/.codex\"\n```\n\n```powershell\n$env:CODEX_HOME=\"C:\\path\\to\\.codex\"\n```\n\n### Custom output directory\n\n```bash\nexport OUTPUT_DIR=\"/path/to/output\"\n```\n\n```powershell\n$env:OUTPUT_DIR=\"C:\\path\\to\\output\"\n```\n\nIf `OUTPUT_DIR` is not set and `--output-dir` is not provided, the script creates a language-prefixed timestamped folder under:\n\n```\n./reports/\u003clang\u003e-\u003ctimestamp\u003e/\n```\n\n### Redact prompts in outputs\n\n```bash\nexport REDACT_PROMPTS=true\n```\n\n```powershell\n$env:REDACT_PROMPTS=\"true\"\n```\n\n### Toggle JSON output\n\n```bash\nexport WRITE_JSON=true\n```\n\n```powershell\n$env:WRITE_JSON=\"true\"\n```\n\n### Language for console/report output\n\n```bash\nexport REPORT_LANG=\"pt-br\"\n```\n\n```powershell\n$env:REPORT_LANG=\"pt-br\"\n```\n\nSupported values:\n\n* `en` (default)\n* `pt-br`\n* `pt-pt`\n* `es`\n\nExamples:\n\nGenerate report in Brazilian Portuguese with automatic folder naming (PowerShell):\n\n```powershell\npy analyze-codex-tokens.py --lang pt-br\n```\n\nGenerate report in European Portuguese with automatic folder naming (Bash):\n\n```bash\npython analyze-codex-tokens.py --lang pt-pt\n```\n\nUse environment variable in PowerShell, then run normally:\n\n```powershell\n$env:REPORT_LANG=\"es\"\npy analyze-codex-tokens.py\n```\n\nUse environment variable in Windows CMD:\n\n```cmd\nset REPORT_LANG=en\npy analyze-codex-tokens.py\n```\n\n`--lang` takes precedence over `REPORT_LANG` when both are set.\n\nIf you use `--output-dir .\\reports` (or `./reports/\u003clang\u003e`), the tool also auto-creates `\u003clang\u003e-\u003ctimestamp\u003e` inside `reports`.\n\n## 🧠 Key Features\n\n* 🔍 Recursive `.jsonl` discovery (works with VS Code extension)\n* 🤖 Subagent tracking and cost analysis\n* 🧱 Markdown-safe report formatting (better organization/readability)\n* 🧾 JSON report export (`token_report.json`)\n* 🔒 Optional prompt redaction mode\n* 📊 Deep token breakdown\n* 📈 Identify inefficiencies fast\n\n## ⚠️ Notes\n\n* Requires local Codex logs\n* Only sessions with `total_tokens \u003e 0` are included in the analysis\n* If no data appears, check your `.codex` folder\n* VS Code extension may store additional data in `.sqlite` (not parsed yet)\n\n## ✅ Tests\n\nRun unit tests:\n\n```bash\npython -m unittest discover -s tests -v\n```\n\nPowerShell:\n\n```powershell\npy -m unittest discover -s tests -v\n```\n\n## 📝 Changelog\n\n### 2026-04-10 (1.0.0)\n\n- Initial release.\n\n## 👥 Authors\n\n- INformigados: https://github.com/informigados/\n- Alex Brito: https://github.com/alexbritodev\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finformigados%2Fanalyze-codex-tokens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finformigados%2Fanalyze-codex-tokens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finformigados%2Fanalyze-codex-tokens/lists"}