aboutsummaryrefslogtreecommitdiff
path: root/R2R/r2r/telemetry/posthog.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /R2R/r2r/telemetry/posthog.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to 'R2R/r2r/telemetry/posthog.py')
-rwxr-xr-xR2R/r2r/telemetry/posthog.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/R2R/r2r/telemetry/posthog.py b/R2R/r2r/telemetry/posthog.py
new file mode 100755
index 00000000..64e63895
--- /dev/null
+++ b/R2R/r2r/telemetry/posthog.py
@@ -0,0 +1,58 @@
+import logging
+import os
+
+import posthog
+
+from r2r.telemetry.events import BaseTelemetryEvent
+
+logger = logging.getLogger(__name__)
+
+
+class PosthogClient:
+ """
+ This is a write-only project API key, so it can only create new events. It can't
+ read events or any of your other data stored with PostHog, so it's safe to use in public apps.
+ """
+
+ def __init__(
+ self, api_key: str, enabled: bool = True, debug: bool = False
+ ):
+ self.enabled = enabled
+ self.debug = debug
+
+ if self.enabled:
+ logger.info(
+ "Initializing anonymized telemetry. To disable, set TELEMETRY_ENABLED=false in your environment."
+ )
+ posthog.project_api_key = api_key
+ posthog.disable_geoip = False
+ else:
+ posthog.disabled = True
+
+ if self.debug:
+ posthog.debug = True
+
+ logger.info(
+ f"Posthog telemetry {'enabled' if self.enabled else 'disabled'}, debug mode {'on' if self.debug else 'off'}"
+ )
+
+ def capture(self, event: BaseTelemetryEvent):
+ if self.enabled:
+ posthog.capture(event.event_id, event.event_type, event.properties)
+
+
+# Initialize the telemetry client with a flag to enable or disable telemetry
+telemetry_enabled = os.getenv("TELEMETRY_ENABLED", "true").lower() in (
+ "true",
+ "1",
+ "t",
+)
+debug_mode = os.getenv("DEBUG_MODE", "false").lower() in (
+ "true",
+ "1",
+ "t",
+)
+telemetry_client = PosthogClient(
+ api_key="phc_OPBbibOIErCGc4NDLQsOrMuYFTKDmRwXX6qxnTr6zpU",
+ enabled=telemetry_enabled,
+)