Skip to main content
Glama
telemetry.py3.41 kB
import logging import os import platform import sys from posthog import Posthog import selfmemory from selfmemory.memory.setup import get_or_create_user_id SELFMEMORY_TELEMETRY = os.environ.get("SELFMEMORY_TELEMETRY", "True") PROJECT_API_KEY = "phc_hgJkUVJFYtmaJqrvf6CYN67TIQ8yhXAkWzUn9AMU4yX" HOST = "https://us.i.posthog.com" if isinstance(SELFMEMORY_TELEMETRY, str): SELFMEMORY_TELEMETRY = SELFMEMORY_TELEMETRY.lower() in ("true", "1", "yes") if not isinstance(SELFMEMORY_TELEMETRY, bool): raise ValueError("SELFMEMORY_TELEMETRY must be a boolean value.") logging.getLogger("posthog").setLevel(logging.CRITICAL + 1) logging.getLogger("urllib3").setLevel(logging.CRITICAL + 1) class AnonymousTelemetry: def __init__(self, vector_store=None): self.posthog = Posthog(project_api_key=PROJECT_API_KEY, host=HOST) self.user_id = get_or_create_user_id(vector_store) if not SELFMEMORY_TELEMETRY: self.posthog.disabled = True def capture_event(self, event_name, properties=None, user_email=None): if properties is None: properties = {} properties = { "client_source": "python", "client_version": selfmemory.__version__, "python_version": sys.version, "os": sys.platform, "os_version": platform.version(), "os_release": platform.release(), "processor": platform.processor(), "machine": platform.machine(), **properties, } distinct_id = self.user_id if user_email is None else user_email self.posthog.capture( distinct_id=distinct_id, event=event_name, properties=properties ) def close(self): self.posthog.shutdown() client_telemetry = AnonymousTelemetry() def capture_event(event_name, memory_instance, additional_data=None): oss_telemetry = AnonymousTelemetry( vector_store=memory_instance._telemetry_vector_store if hasattr(memory_instance, "_telemetry_vector_store") else None, ) event_data = { "collection": memory_instance.collection_name, "vector_size": memory_instance.embedding_model.config.embedding_dims, "history_store": "sqlite", "graph_store": f"{memory_instance.graph.__class__.__module__}.{memory_instance.graph.__class__.__name__}" if memory_instance.config.graph_store.config else None, "vector_store": f"{memory_instance.vector_store.__class__.__module__}.{memory_instance.vector_store.__class__.__name__}", "llm": f"{memory_instance.llm.__class__.__module__}.{memory_instance.llm.__class__.__name__}", "embedding_model": f"{memory_instance.embedding_model.__class__.__module__}.{memory_instance.embedding_model.__class__.__name__}", "function": f"{memory_instance.__class__.__module__}.{memory_instance.__class__.__name__}.{memory_instance.api_version}", } if additional_data: event_data.update(additional_data) oss_telemetry.capture_event(event_name, event_data) def capture_client_event(event_name, instance, additional_data=None): event_data = { "function": f"{instance.__class__.__module__}.{instance.__class__.__name__}", } if additional_data: event_data.update(additional_data) client_telemetry.capture_event(event_name, event_data, instance.user_email)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shrijayan/SelfMemory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server