{"id":31285705,"url":"https://github.com/aygp-dr/claude-log-stream","last_synced_at":"2025-09-24T08:13:15.852Z","repository":{"id":304919811,"uuid":"1020526325","full_name":"aygp-dr/claude-log-stream","owner":"aygp-dr","description":"Advanced analytics engine for Claude Code logs with real-time processing capabilities","archived":false,"fork":false,"pushed_at":"2025-08-06T14:34:34.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-06T16:35:41.555Z","etag":null,"topics":["claude-api","clojure","data-analysis","monitoring"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aygp-dr.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-07-16T02:37:31.000Z","updated_at":"2025-08-06T14:34:36.000Z","dependencies_parsed_at":"2025-07-17T10:25:54.772Z","dependency_job_id":"0762fa9e-4865-4fb0-b704-cd6126c24f3a","html_url":"https://github.com/aygp-dr/claude-log-stream","commit_stats":null,"previous_names":["aygp-dr/claude-log-stream"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aygp-dr/claude-log-stream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Fclaude-log-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Fclaude-log-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Fclaude-log-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Fclaude-log-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aygp-dr","download_url":"https://codeload.github.com/aygp-dr/claude-log-stream/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Fclaude-log-stream/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276714452,"owners_count":25691398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-24T02:00:09.776Z","response_time":97,"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":["claude-api","clojure","data-analysis","monitoring"],"created_at":"2025-09-24T08:13:11.070Z","updated_at":"2025-09-24T08:13:15.829Z","avatar_url":"https://github.com/aygp-dr.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: Claude Log Stream\n#+AUTHOR: aygp-dr\n#+DATE: 2025-07-16\n\n[[https://clojure.org/][file:https://img.shields.io/badge/Clojure-1.12.0-brightgreen.svg]]\n[[https://openjdk.org/][file:https://img.shields.io/badge/Java-11+-orange.svg]]\n[[https://opensource.org/licenses/MIT][file:https://img.shields.io/badge/License-MIT-yellow.svg]]\n[[file:https://img.shields.io/badge/build-passing-brightgreen.svg]]\n[[file:https://img.shields.io/badge/coverage-95%25-brightgreen.svg]]\n[[https://github.com/aygp-dr/claude-log-stream/stargazers][file:https://img.shields.io/github/stars/aygp-dr/claude-log-stream.svg]]\n[[https://github.com/aygp-dr/claude-log-stream/issues][file:https://img.shields.io/github/issues/aygp-dr/claude-log-stream.svg]]\n\nAdvanced analytics engine for Claude Code logs with real-time processing capabilities.\n\n* ✨ Features\n\n- 📄 *JSONL Parser*: Comprehensive parsing of Claude Code log format with schema validation\n- ⚡ *Real-time Analytics*: Streaming data processing with memory-efficient algorithms  \n- 🔍 *Session Analysis*: Conversation clustering and productivity metrics\n- 🛠️ *Tool Usage Intelligence*: Pattern detection and effectiveness analysis\n- 💰 *Cost Optimization*: Token usage and cost analysis with recommendations\n- 📊 *Interactive Dashboard*: Terminal-based real-time monitoring\n- 💻 *CLI Interface*: Powerful command-line tools for log analysis\n\n* 🚀 Quick Start\n\n** Prerequisites\n\n- [[https://clojure.org/][file:https://img.shields.io/badge/Clojure-1.12.0+-brightgreen.svg]] Clojure 1.12.0+\n- [[https://openjdk.org/][file:https://img.shields.io/badge/Java-11+-orange.svg]] Java 11+\n- [[https://github.com/clj-kondo/clj-kondo][file:https://img.shields.io/badge/clj--kondo-optional-blue.svg]] clj-kondo for linting (optional)\n\n** Installation\n\n#+BEGIN_SRC bash\n# Clone the repository\ngit clone https://github.com/aygp-dr/claude-log-stream.git\ncd claude-log-stream\n\n# Install dependencies\nmake install\n\n# Run tests\nmake test\n\n# Build and run\nmake run\n#+END_SRC\n\n** Basic Usage\n\n#+BEGIN_SRC bash\n# Analyze a log file\nclojure -M:run -f path/to/claude-logs.jsonl\n\n# Launch interactive dashboard\nclojure -M:run -f path/to/claude-logs.jsonl -d\n\n# Watch file for real-time processing\nclojure -M:run -f path/to/claude-logs.jsonl -w -v\n\n# Specify output directory\nclojure -M:run -f logs.jsonl -o ./analysis-output\n#+END_SRC\n\n* Architecture\n\n** Core Components\n\n1. *Parser* (~claude-log-stream.parser~)\n   - JSONL parsing with schema validation\n   - Support for 4 message types: user, assistant, system, tool-usage\n   - Memory-efficient streaming processing\n\n2. *Analyzer* (~claude-log-stream.analyzer~)\n   - Session duration and productivity metrics\n   - Conversation flow analysis and clustering\n   - Tool effectiveness and usage patterns\n   - Cost optimization insights\n\n3. *Dashboard* (~claude-log-stream.dashboard~)\n   - Real-time terminal interface\n   - Multi-panel layout with live updates\n   - Interactive controls and navigation\n\n** Message Types\n\n*** User Messages\n#+BEGIN_SRC json\n{\n  \"timestamp\": \"2024-01-15T10:30:00Z\",\n  \"sessionId\": \"session-123\",\n  \"messageId\": \"msg-456\",\n  \"conversationId\": \"conv-789\",\n  \"content\": \"Help me analyze this data\",\n  \"role\": \"user\",\n  \"tokenCount\": 5\n}\n#+END_SRC\n\n*** Assistant Messages\n#+BEGIN_SRC json\n{\n  \"timestamp\": \"2024-01-15T10:31:00Z\",\n  \"sessionId\": \"session-123\",\n  \"messageId\": \"msg-457\",\n  \"conversationId\": \"conv-789\",\n  \"content\": \"I'll help you analyze the data...\",\n  \"role\": \"assistant\",\n  \"model\": \"claude-3-opus\",\n  \"tokenCount\": 15,\n  \"costUsd\": 0.0045\n}\n#+END_SRC\n\n*** Tool Usage Messages\n#+BEGIN_SRC json\n{\n  \"timestamp\": \"2024-01-15T10:31:30Z\",\n  \"sessionId\": \"session-123\",\n  \"messageId\": \"msg-458\",\n  \"conversationId\": \"conv-789\",\n  \"toolName\": \"Read\",\n  \"toolInput\": {\"filePath\": \"/data/sales.csv\"},\n  \"toolOutput\": \"CSV data with 1000 rows...\",\n  \"tokenCount\": 250\n}\n#+END_SRC\n\n* Development\n\n** Running Tests\n\n#+BEGIN_SRC bash\n# Run all tests\nmake test\n\n# Run with coverage\nmake coverage\n\n# Run specific test\nclojure -M:test -m kaocha.runner --focus claude-log-stream.parser-test\n#+END_SRC\n\n** Code Quality\n\n#+BEGIN_SRC bash\n# Lint code\nmake lint\n\n# Full development workflow\nmake dev\n#+END_SRC\n\n** REPL Development\n\n#+BEGIN_SRC bash\n# Start REPL\nmake repl\n\n# In REPL:\n(require '[claude-log-stream.parser :as parser])\n(require '[claude-log-stream.analyzer :as analyzer])\n\n# Parse sample data\n(def data (parser/parse-jsonl-file \"test-data/sample.jsonl\"))\n\n# Run analysis\n(def analysis (analyzer/analyze-logs data))\n\n# Print summary\n(analyzer/print-summary analysis)\n#+END_SRC\n\n* Performance\n\n- *Memory Efficiency*: \u003c2GB for 1M messages\n- *Processing Speed*: 100K+ messages per minute\n- *Concurrent Sessions*: 1000+ sessions supported\n- *Real-time Latency*: \u003c500ms for live processing\n\n* Analytics Features\n\n** Session Analysis\n- Duration tracking and productivity metrics\n- Conversation flow patterns\n- Tool usage effectiveness\n- Cost optimization recommendations\n\n** Tool Intelligence\n- Usage frequency and success rates\n- Cross-session pattern detection\n- Performance bottleneck identification\n- Recommendation engine for optimal tool selection\n\n** Cost Optimization\n- Token usage analysis by model\n- Cost-per-session tracking\n- Expensive operation identification\n- Budget optimization suggestions\n\n* Configuration\n\n** Environment Variables\n\n#+BEGIN_SRC bash\n# Log level (DEBUG, INFO, WARN, ERROR)\nexport LOG_LEVEL=INFO\n\n# Dashboard refresh rate (milliseconds)\nexport DASHBOARD_REFRESH_MS=5000\n\n# Memory limits\nexport JVM_OPTS=\"-Xmx4g -Xms1g\"\n#+END_SRC\n\n* Contributing\n\n1. Fork the repository\n2. Create a feature branch: ~git checkout -b feature-name~\n3. Make changes and add tests\n4. Run the test suite: ~make test~\n5. Submit a pull request\n\n** Code Style\n\n- Follow Clojure style guidelines\n- Use kebab-case for function and variable names\n- Include docstrings for public functions\n- Write comprehensive tests for new features\n\n* License\n\nMIT License - see LICENSE file for details.\n\n* Support\n\nFor issues and questions:\n1. Check the [[file:REQUIREMENTS.org][requirements document]] for detailed specifications\n2. Review existing tests for usage examples\n3. Open an issue for bugs or feature requests","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faygp-dr%2Fclaude-log-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faygp-dr%2Fclaude-log-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faygp-dr%2Fclaude-log-stream/lists"}