Privacy & Analytics
Kangentic collects anonymous usage analytics to help improve the product. No personal data, code, file paths, or task content is ever collected.
What is Collected
Section titled “What is Collected”Analytics are powered by Aptabase, a privacy-first, open-source analytics platform designed for desktop apps.
| Event | When it fires | Properties |
|---|---|---|
app_launch | App starts | Platform, architecture |
app_heartbeat | Every 30 minutes while running | Active, suspended, queued, and total session counts |
app_close | Graceful quit, Ctrl+C, or SIGTERM | Duration in seconds |
app_error | Uncaught exception, unhandled rejection, or renderer crash | Source, sanitized message, renderer crash reason, exit code |
project_create | New project opened | (none) |
task_complete | Task moves to Done | (none) |
session_exit | Agent session finishes | Exit code, duration in seconds |
transient_session_spawn | Transient session launched from command terminal | (none) |
The Aptabase SDK also records: OS name, OS version, locale, app version, and country (derived from IP, then immediately discarded).
What is NOT Collected
Section titled “What is NOT Collected”- Task titles, descriptions, or any user-generated content
- File paths, project names, or code
- Usernames, emails, or personally identifiable information
- Mid-board task moves (only completion is tracked)
How to Opt Out
Section titled “How to Opt Out”Set the KANGENTIC_TELEMETRY environment variable to disable analytics:
| Value | Behavior |
|---|---|
0 or false | Analytics disabled |
1 or true | Analytics force-enabled (useful for dev testing) |
| (unset) | Enabled in production builds, disabled in development |
Privacy Controls in Settings
Section titled “Privacy Controls in Settings”Open Settings > Privacy to see a summary of what is and isn’t collected. The Privacy tab is informational — opt-out is controlled exclusively by the environment variable.
Technical Details
Section titled “Technical Details”- Analytics run only in the main process — the renderer never sends events
- Error messages are sanitized to strip file paths before transmission
- No cookies or persistent identifiers are used
- Session IDs are random and not linked to any user identity
- GDPR-compliant by design — no consent banner needed
- All analytics calls are fire-and-forget and never block the app