Skip to main content

What Metrics Are Collected?

Crush collects pseudonymous usage metadata to help maintainers understand how the tool is used and prioritize development efforts. This data is tied to a device-specific hash, not your personal identity.

What IS Collected

Crush collects usage events such as:
  • Application lifecycle: When Crush starts and exits, session duration
  • Feature usage: Sessions created, sessions deleted, sessions switched
  • Prompt activity: When prompts are sent and received (timing and counts only)
  • Token usage: Number of tokens consumed (for understanding usage patterns)
  • System information: OS, architecture, terminal type, Crush version
  • Error events: Error types and messages (to identify bugs)

What is NOT Collected

Crush never collects:
  • Prompt content: Your actual prompts or questions
  • LLM responses: Any text generated by the AI
  • Code content: Source code from your projects
  • File names or paths: Specific files you’re working with
  • API keys: Your provider credentials
  • Personal information: Email, username, or identifying details
  • Project details: Repository names, URLs, or business logic
Metrics are strictly usage metadata. Your code, prompts, and AI conversations remain completely private.

How Metrics Work

Device Identifier

Crush generates a pseudonymous device identifier using:
  1. Machine ID (preferred): A stable, hashed identifier based on your machine
  2. MAC address hash (fallback): A hashed network adapter address
  3. Unknown (fallback): If neither can be determined
This identifier:
  • Cannot be traced back to you personally
  • Helps understand usage across multiple sessions
  • Is stored locally and never transmitted with personal information

Data Transmission

Metrics are sent to Charm’s PostHog instance:
  • Endpoint: https://data.charm.land
  • Protocol: HTTPS (encrypted)
  • Frequency: Events are sent as they occur and batched when possible
  • Timeout: Short timeout to avoid impacting performance

Viewing Collected Metrics

You can see exactly what Crush collects by reviewing the source code: Crush is open source, so you can verify exactly what data is sent.

How to Opt Out

You can disable metrics collection using any of these methods:

Environment Variable: CRUSH_DISABLE_METRICS

Set the CRUSH_DISABLE_METRICS environment variable:
# Unix/Linux/macOS
export CRUSH_DISABLE_METRICS=1

# Windows (PowerShell)
$env:CRUSH_DISABLE_METRICS=1

# Windows (Command Prompt)
set CRUSH_DISABLE_METRICS=1
To make this permanent:
# Add to ~/.bashrc, ~/.zshrc, or ~/.profile
echo 'export CRUSH_DISABLE_METRICS=1' >> ~/.bashrc
source ~/.bashrc

Environment Variable: DO_NOT_TRACK

Crush respects the DO_NOT_TRACK convention:
# Unix/Linux/macOS
export DO_NOT_TRACK=1

# Windows (PowerShell)
$env:DO_NOT_TRACK=1
This is a standard convention respected by many CLI tools.

Configuration File

Add the disable_metrics option to your crush.json:
{
  "options": {
    "disable_metrics": true
  }
}
This disables metrics for all sessions in this project. Configuration file locations:
  • Project-level: .crush.json or crush.json in your project root
  • User-level: ~/.config/crush/crush.json (Unix) or %LOCALAPPDATA%\crush\crush.json (Windows)

Verification

To verify metrics are disabled:
  1. Enable debug logging: crush --debug
  2. Check the logs: crush logs
  3. Look for absence of “PostHog” or “metrics” entries
You can also check the shouldEnableMetrics function in internal/cmd/root.go to see the exact logic.

Privacy Considerations

Local-First

Crush is designed with privacy in mind:
  • All your data (sessions, messages, files) stays on your local machine
  • The SQLite database (./.crush/crush.db) never leaves your device
  • Logs (./.crush/logs/crush.log) are stored locally
  • Metrics are the only data sent to external servers

Provider Privacy

Your prompts and responses are sent to your configured LLM provider (OpenAI, Anthropic, etc.) according to their privacy policies. Crush itself does not intercept or store this data beyond your local session database. Review your provider’s privacy policy:

Network Requests

Crush makes network requests to:
  1. LLM providers: Your configured providers (OpenAI, Anthropic, etc.)
  2. Metrics endpoint: https://data.charm.land (if metrics are enabled)
  3. Provider updates: Checks for updated provider/model lists from Catwalk
You can disable provider auto-updates:
{
  "options": {
    "disable_provider_auto_update": true
  }
}
Or via environment variable:
export CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1

Why Metrics Matter

Metrics help the Crush maintainers:
  • Understand usage patterns: Which features are most used?
  • Identify bugs: What errors occur most frequently?
  • Prioritize development: Where should we focus our efforts?
  • Measure impact: How many people benefit from new features?
  • Support decisions: Which platforms and configurations to prioritize?
All of this can be done with pseudonymous usage metadata—we don’t need to see your code or prompts.

Open Source Transparency

Crush is fully open source, which means:
  • You can audit the metrics code yourself
  • You can verify no sensitive data is collected
  • You can contribute improvements to privacy and metrics
  • You can fork and modify the metrics behavior if needed
Key files to review:

Frequently Asked Questions

Does Crush send my code to Charm servers?

No. Your code stays on your machine and is only sent to your configured LLM provider (OpenAI, Anthropic, etc.). Charm does not receive your code.

Can I use Crush completely offline?

Yes, with caveats:
  1. You’ll need a local LLM provider (like Ollama or LM Studio)
  2. Disable metrics (CRUSH_DISABLE_METRICS=1)
  3. Disable provider auto-updates (CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1)
After initial setup, Crush can operate without internet access.

What happens if metrics fail to send?

Nothing. Metrics are sent on a best-effort basis. If the network is unavailable or the endpoint is down, Crush continues working normally without any errors or delays.

Can I see what metrics were sent?

Yes, enable debug logging:
crush --debug
Then check the logs for PostHog events:
crush logs | grep -i posthog
You’ll see the exact events and properties being sent.

Does opting out affect functionality?

No. Disabling metrics has zero impact on Crush functionality. All features work exactly the same whether metrics are enabled or disabled.

How long is metrics data retained?

Metrics are stored in Charm’s PostHog instance according to their data retention policy. Contact Charm for specific retention details.

Summary

  • Metrics are pseudonymous usage metadata only
  • Your code and prompts are never collected
  • You can opt out easily via environment variables or configuration
  • Metrics help improve Crush for everyone
  • Crush is open source so you can verify privacy claims
If you’re comfortable with it, leaving metrics enabled helps the Crush team build a better tool for everyone. But the choice is completely yours.

Build docs developers (and LLMs) love