{"id":29099233,"url":"https://github.com/eharris128/promptpulse","last_synced_at":"2026-04-01T20:43:55.952Z","repository":{"id":300853726,"uuid":"1004615561","full_name":"eharris128/promptpulse","owner":"eharris128","description":"Track and visualize your claude code usage across your development machines","archived":false,"fork":false,"pushed_at":"2025-07-04T00:45:27.000Z","size":20163,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-22T23:03:23.566Z","etag":null,"topics":["ai","analytics","claude","claude-code","cli","cost-tracking","dashboard","developer-tools","express","leaderboard","llm","monitoring","multi-user","nextjs","nodejs","productivity","typescript","usage-tracking"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/eharris128.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2025-06-18T23:05:07.000Z","updated_at":"2025-09-23T16:48:43.000Z","dependencies_parsed_at":"2025-06-30T01:15:22.449Z","dependency_job_id":null,"html_url":"https://github.com/eharris128/promptpulse","commit_stats":null,"previous_names":["eharris128/promptpulse"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eharris128/promptpulse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eharris128%2Fpromptpulse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eharris128%2Fpromptpulse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eharris128%2Fpromptpulse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eharris128%2Fpromptpulse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eharris128","download_url":"https://codeload.github.com/eharris128/promptpulse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eharris128%2Fpromptpulse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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","analytics","claude","claude-code","cli","cost-tracking","dashboard","developer-tools","express","leaderboard","llm","monitoring","multi-user","nextjs","nodejs","productivity","typescript","usage-tracking"],"created_at":"2025-06-28T16:01:32.098Z","updated_at":"2026-04-01T20:43:55.944Z","avatar_url":"https://github.com/eharris128.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PromptPulse\n\nTrack and analyze your Claude Code usage with beautiful dashboards and competitive leaderboards. PromptPulse is a hosted service that automatically collects your usage data and provides insights across all your machines.\n\n[![npm version](https://img.shields.io/npm/v/promptpulse)](https://www.npmjs.com/package/promptpulse)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- **Beautiful hosted dashboard** built with Next.js and Recharts\n- **Multi-machine tracking** - aggregate usage across all your devices\n- **Team collaboration** - create teams and compare usage with colleagues\n- **Team leaderboards** - compete within your team or organization\n- **Role-based team management** - owner, admin, and member permissions\n- **Competitive leaderboards** - compare your usage with other users (opt-in)\n- **Detailed analytics** - daily costs, token usage, session tracking\n- **Project-based insights** - see usage by project\n- **Granular email preferences** - control exactly which notifications you receive\n- **Simple CLI** - easy setup and data collection\n\n## Installation\n\n```bash\nnpm install -g promptpulse\n```\n\n## Quick Start\n\n### 1. Initialize Your Account\n\n```bash\n# Create a free user account\npromptpulse login\n```\n\nThis creates your secure user account and provides you with database access.\n\n### 2. Collect Your Usage Data\n\n```bash\n# Upload your Claude Code usage data\npromptpulse collect\n```\n\n### 3. View Your Dashboard\n\nVisit your personalized dashboard at: [https://www.promptpulse.dev](https://www.promptpulse.dev)\n\n## Usage\n\n### Data Collection\n\n```bash\n# Collect all usage data (recommended)\npromptpulse collect\n\n# Collect specific granularity\npromptpulse collect --granularity daily    # Only daily aggregates\npromptpulse collect --granularity session  # Only session data\npromptpulse collect --granularity blocks   # Only 5-hour blocks\npromptpulse collect --granularity all      # Everything (default)\n```\n\n### Automatic Collection\n\nSet up automatic data collection with cron to keep your dashboard up-to-date:\n\n```bash\n# Set up automatic collection (runs every 15 minutes by default)\npromptpulse setup\n\n# Configure different intervals\npromptpulse setup --interval 30     # Every 30 minutes\npromptpulse setup --interval 60     # Every hour\npromptpulse setup --interval daily  # Once daily at 9 AM\n\n# Check collection status\npromptpulse status\n\n# Remove automatic collection\npromptpulse setup --remove\n```\n\nCollection logs are stored in `~/.promptpulse/collection.log` for monitoring and debugging.\n\n### User Management\n\n```bash\n# Show current user info\npromptpulse whoami\n\n# Create new account\npromptpulse login\n```\n\n### Get Help\n\n```bash\npromptpulse --help\n# or\nppulse --help\n```\n\n## Web Dashboard\n\nAccess your personalized dashboard to view:\n\n### Analytics Features\n- **Real-time statistics** - Total cost, tokens, and usage breakdowns\n- **Interactive charts** - Daily cost trends and token usage over time\n- **Machine management** - View usage across all your devices\n- **Session tracking** - Detailed session and project analytics\n- **Dark mode support** - Easy on the eyes during long coding sessions\n\n### Team Features\n- **Team creation** - Create teams for your organization or project groups\n- **Invite system** - Share invite links to add team members\n- **Role management** - Owner, admin, and member permissions\n- **Team leaderboards** - Compare usage within your team\n- **Team analytics** - Aggregate team usage statistics\n- **Privacy controls** - Separate team and public leaderboard participation\n\n### Leaderboard Features\n- **Daily \u0026 Weekly rankings** - See how you stack up against other users\n- **Team leaderboards** - Compete within your team or organization\n- **Opt-in participation** - Complete control over your privacy\n- **Custom display names** - Show a nickname instead of your username\n- **Separate team display names** - Different names for team vs public contexts\n- **Percentile rankings** - Know where you stand in the community\n\n### Privacy Controls\n- **Leaderboard settings** - Enable/disable public and team participation separately\n- **Display name management** - Control how you appear to others\n- **Team privacy** - Separate controls for team vs public visibility\n- **Granular email preferences** - 5 individual notification controls\n- **Private by default** - Your data stays private unless you opt in\n\n## Leaderboard Participation\n\n### Opt-in to Competition\n\nThe leaderboard is completely opt-in. To participate:\n\n1. Visit your dashboard Settings page\n2. Enable \"Leaderboard Participation\"\n3. Optionally set a custom display name\n4. Your usage will appear in daily and weekly rankings\n\n### Privacy Information\n\n**When leaderboard is enabled:**\n- Your token usage and costs are included in rankings\n- Your username or display name is shown publicly\n- Your ranking position and percentile are calculated\n- No other personal information is shared\n\n**When leaderboard is disabled:**\n- Your data is completely private\n- You can still view the leaderboard but won't appear on it\n- You can re-enable participation at any time\n\n## Data Sources\n\nPromptPulse reads your Claude Code usage data from:\n- `~/.claude/projects/**/*.jsonl` (default location)\n- `$CLAUDE_CONFIG_DIR/projects/**/*.jsonl` (if custom path set)\n\nThis includes:\n- Token usage (input, output, cache creation, cache read)\n- Model information and pricing\n- Timestamps and session data\n- Cost calculations\n\n## Privacy \u0026 Data Collection\n\n### What Data is Collected\n\nPromptPulse collects **usage statistics and metadata only**:\n\n- **Usage Statistics**: Token counts, costs, timestamps, model usage patterns\n- **Project Paths**: Project folder names or paths (configurable privacy levels)\n- **Machine Identifiers**: Hostname or custom MACHINE_ID for multi-device tracking\n- **Session Data**: Session timestamps and duration for analytics\n\n### What is NEVER Collected\n\n**Your prompts and conversation content are NEVER uploaded or stored.** PromptPulse only reads usage statistics from Claude Code's log files, not your actual conversations or prompts.\n\n### Project Path Privacy Controls\n\nProject paths may contain sensitive information like company names or project names. You can control how project paths are collected:\n\n```bash\n# Set your privacy preference (choose one):\nexport PROJECT_PATH_PRIVACY=basename  # Only folder names (recommended default)\nexport PROJECT_PATH_PRIVACY=none      # No project paths collected\nexport PROJECT_PATH_PRIVACY=hash      # Hashed paths for analytics\nexport PROJECT_PATH_PRIVACY=full      # Full paths (least private)\n```\n\n#### Privacy Options Explained\n\n- **`basename`** (default): Only collects project folder names (e.g., `my-project`)\n- **`none`**: No project path information is collected at all\n- **`hash`**: Project paths are hashed for analytics while preserving privacy\n- **`full`**: Complete project paths are collected (e.g., `/home/user/work/company/my-project`)\n\n### Leaderboard Privacy\n\nLeaderboard participation is completely **opt-in**:\n\n- **Private by default**: Your usage data is private until you choose to participate\n- **Granular controls**: Separate settings for public vs team leaderboards\n- **Display name privacy**: Use custom display names instead of your username\n- **Team privacy**: Different privacy controls for team vs public contexts\n\n### Data Security\n\n- **Data Isolation**: Each user's data is completely isolated\n- **No Sensitive Data**: No conversation content, prompts, or personal information\n- **Secure Storage**: Usage statistics are stored securely with encryption in transit\n\n## Multi-User \u0026 Team Support\n\n### How It Works\n- All data is completely isolated between users\n- Team features allow collaboration while maintaining privacy\n- Role-based permissions for team management\n\n### Use Cases\n- **Development Teams** - Create teams to compare usage and collaborate\n- **Organizations** - Department-wide usage tracking and leaderboards\n- **Freelancers** - Separate usage by client projects\n- **Personal** - Track usage across work and personal machines\n- **Study Groups** - Compare Claude usage for learning projects\n\n## CLI Commands Reference\n\n### Authentication Commands\n```bash\npromptpulse login                                 # Create new account (interactive)\npromptpulse logout                                # Clear authentication\npromptpulse whoami                                # Show current user\n```\n\n### Data Collection\n```bash\npromptpulse collect                               # Collect all data\npromptpulse collect --granularity \u003ctype\u003e         # Collect specific data\n```\n\n### Automatic Collection Setup\n```bash\npromptpulse setup                                 # Set up 15-minute automatic collection\npromptpulse setup --interval 30                  # Set up 30-minute collection\npromptpulse setup --interval 60                  # Set up hourly collection\npromptpulse setup --interval daily               # Set up daily collection\npromptpulse setup --remove                       # Remove automatic collection\n```\n\n### Health \u0026 Diagnostics\n```bash\npromptpulse doctor                                # Diagnose common issues\npromptpulse dashboard                             # Open web dashboard\n```\n\n### Team Management\nTeam features are managed through the web dashboard:\n```bash\npromptpulse dashboard                             # Open dashboard to manage teams\n```\n\n**Team Features (Dashboard Only):**\n- Create and manage teams with custom names and descriptions\n- Generate and share team invite links\n- Manage team member roles (owner, admin, member)\n- View team usage leaderboards and analytics\n- Join teams using invite codes\n\n### Aliases\nYou can use `ppulse` as a shorthand for `promptpulse` in all commands.\n\n## Team Collaboration\n\nPromptPulse now supports team features for collaborative Claude Code usage tracking:\n\n### Creating Teams\n1. Open your dashboard at [https://www.promptpulse.dev](https://www.promptpulse.dev)\n2. Navigate to the Teams section\n3. Click \"Create Team\" and provide a name and description\n4. Share the generated invite link with team members\n\n### Joining Teams\n1. Receive an invite link from a team owner or admin\n2. Click the link to join the team automatically\n3. Your usage will now appear in team leaderboards (if enabled)\n\n### Team Roles\n- **Owner**: Full team management, can promote/remove members\n- **Admin**: Can invite members and manage team settings\n- **Member**: Can view team leaderboards and participate\n\n### Team Privacy\n- Team participation is separate from public leaderboard participation\n- You can have different display names for team vs public contexts\n- Team usage data is aggregated but individual privacy is maintained\n\n## Support\n\n### Common Issues\n\n1. **\"No usage data found\"** - Ensure you have used Claude Code and data exists in `~/.claude/projects/`\n2. **\"Authentication failed\"** - Check your login session `promptpulse whoami`\n3. **\"Connection error\"** - Verify your internet connection and try again\n\n### Getting Help\n\n- Use `promptpulse --help` for command documentation\n- Diagnose issues with `promptpulse doctor`\n- Ensure you have Claude Code usage data in `~/.claude/projects/`\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository at [github.com/eharris128/promptpulse](https://github.com/eharris128/promptpulse)\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n\n## License\n\nMIT License - see LICENSE.md for details\n\n---\n\n**Ready to get started?** Run `promptpulse login` and start tracking your Claude Code usage today!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feharris128%2Fpromptpulse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feharris128%2Fpromptpulse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feharris128%2Fpromptpulse/lists"}