{"id":51329474,"url":"https://github.com/quickcall-dev/blackbox","last_synced_at":"2026-07-01T21:32:38.444Z","repository":{"id":362141341,"uuid":"1257248529","full_name":"quickcall-dev/blackbox","owner":"quickcall-dev","description":"Analysis engine inside QuickCall — ingests AI coding session traces, runs multi-stage LLM pipeline, surfaces root causes and recurring failure patterns","archived":false,"fork":false,"pushed_at":"2026-06-02T21:15:22.000Z","size":168,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T22:14:43.927Z","etag":null,"topics":["ai-coding","behavioral-analysis","claude-code","codex-cli","fastapi","llm","pi-dev","python","quickcall","trace-analysis"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quickcall-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-02T13:57:33.000Z","updated_at":"2026-06-02T19:24:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/quickcall-dev/blackbox","commit_stats":null,"previous_names":["quickcall-dev/blackbox"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/quickcall-dev/blackbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickcall-dev%2Fblackbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickcall-dev%2Fblackbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickcall-dev%2Fblackbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickcall-dev%2Fblackbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quickcall-dev","download_url":"https://codeload.github.com/quickcall-dev/blackbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickcall-dev%2Fblackbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35024359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-coding","behavioral-analysis","claude-code","codex-cli","fastapi","llm","pi-dev","python","quickcall","trace-analysis"],"created_at":"2026-07-01T21:32:37.412Z","updated_at":"2026-07-01T21:32:38.431Z","avatar_url":"https://github.com/quickcall-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/cover.png\" alt=\"Blackbox\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n# Blackbox\n\nAnalysis engine for AI coding session traces. Ingests JSONL logs from Claude Code, Codex CLI, or pi.dev, runs a 9-stage LLM pipeline, and surfaces root causes, recurring failures, and anti-patterns.\n\n## Demo\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eSession browser\u003c/b\u003e\u003cbr/\u003e\n  \u003cimg src=\"docs/demo-browser.png\" alt=\"Session browser\" width=\"80%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eRoot cause analysis in progress\u003c/b\u003e\u003cbr/\u003e\n  \u003cimg src=\"docs/demo-splash.png\" alt=\"Root cause analysis in progress\" width=\"80%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eAggregation of all findings\u003c/b\u003e\u003cbr/\u003e\n  \u003cimg src=\"docs/demo-progress.png\" alt=\"Aggregation of all findings\" width=\"80%\" /\u003e\n\u003c/p\u003e\n\n## What it does\n\n- **Multi-source ingestion** — accepts traces from Claude Code, Codex CLI, pi.dev, and more\n- **9-stage LLM pipeline** — classifies, analyzes root causes, clusters patterns, scores severity\n- **Disk persistence + resume** — stage outputs saved to disk; server restart picks up where it left off\n- **DeepSeek V4 Pro support** — json_object response format, retry logic, structured logging\n\n## How it works\n\n```mermaid\nflowchart TD\n    subgraph Upload\n        A[\"POST /analyze\u003cbr/\u003eupload JSONL files\"] --\u003e B[\"Detect source\u003cbr/\u003e_detect_source()\"]\n        B --\u003e C[\"Normalize\u003cbr/\u003e_normalize_file()\"]\n    end\n\n    C --\u003e D[\"Return 202 Accepted\u003cbr/\u003erun_id → background task\"]\n\n    subgraph Pipeline\n        P0[\"P0 Normalize\u003cbr/\u003ecount + index messages\"]\n        P1[\"P1 Classify\u003cbr/\u003eLLM label each user turn\u003cbr/\u003ebatches run concurrently\"]\n        P2[\"P2 Context\u003cbr/\u003ebuild windows around triggers\"]\n        P3[\"P3 Root-Cause\u003cbr/\u003eLLM per trigger window\"]\n        P4a[\"P4a Behavior\u003cbr/\u003erule type + confidence\"]\n        P4b[\"P4b Cluster\u003cbr/\u003egroup recurring patterns\"]\n        P4c[\"P4c Convention\u003cbr/\u003edont_do / do_instead\"]\n        P5[\"P5 Aggregate\u003cbr/\u003ededuplicate + score severity\"]\n        P6[\"P6 Scope\u003cbr/\u003emap to repos + devs\"]\n    end\n\n    subgraph Client\n        POLL[\"GET /runs/:id\u003cbr/\u003epoll status\"]\n        OUT[\"GET /runs/:id/findings\u003cbr/\u003erecurring findings JSON\"]\n    end\n\n    P0 --\u003e P1\n    P1 --\u003e P2\n    P2 --\u003e P3\n    P3 --\u003e P4a\n    P3 --\u003e P4b\n    P3 --\u003e P4c\n    P4a --\u003e P5\n    P4b --\u003e P5\n    P4c --\u003e P5\n    P5 --\u003e P6\n    P6 --\u003e POLL\n    POLL --\u003e OUT\n```\n\n## Quick Start\n\n```bash\ncp .env.example .env\n# edit .env and add your OPENAI_API_KEY\n\nuv run uvicorn src.main:app --host 0.0.0.0 --port 8000\nuv run quickcall  # Launch TUI (connects to http://localhost:8000)\n```\n\nThe API binds to `0.0.0.0` (all interfaces). The CLI defaults to `localhost:8000`. If the API is running on a different host or port, set `BLACKBOX_API_URL` before launching the TUI:\n\n```bash\nexport BLACKBOX_API_URL=http://192.168.1.42:8000\nuv run quickcall\n```\n\n## Features\n\n- Multi-source session analysis (Claude, Codex, pi, Gemini, Cursor)\n- 9-stage LLM pipeline with live progress\n- Disk persistence + resume\n- DeepSeek V4 Pro support\n- 80 tests\n\n## Docs\n\n- [API Reference](docs/api.md)\n- [CLI Guide](docs/cli.md)\n- [Pipeline](docs/pipeline.md)\n- [Configuration](docs/configuration.md)\n- [Architecture](docs/architecture.md)\n- [Agent Guide](AGENTS.md)\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquickcall-dev%2Fblackbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquickcall-dev%2Fblackbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquickcall-dev%2Fblackbox/lists"}