about summary refs log tree commit diff
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 here HEAD master
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,
+)