Compare commits
1 Commits
fix/1505
...
fix/1427-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6435b9c5c5 |
8
.env.example
Normal file
8
.env.example
Normal file
@@ -0,0 +1,8 @@
|
||||
# ChromaDB Telemetry
|
||||
# Disable ChromaDB anonymous telemetry for sovereignty
|
||||
# See: https://docs.trychroma.com/telemetry
|
||||
ANONYMIZED_TELEMETRY=False
|
||||
|
||||
# Other environment variables
|
||||
# FLEET_PALACE_PATH=/var/lib/mempalace/fleet
|
||||
# MEMPALACE_PATH=~/.mempalace/palace
|
||||
@@ -45,8 +45,14 @@ class MemPalaceResult:
|
||||
|
||||
def _get_client(palace_path: Path):
|
||||
"""Return a ChromaDB persistent client, or raise MemPalaceUnavailable."""
|
||||
# Disable ChromaDB telemetry for sovereignty
|
||||
# See: https://docs.trychroma.com/telemetry
|
||||
import os
|
||||
os.environ.setdefault("ANONYMIZED_TELEMETRY", "False")
|
||||
|
||||
try:
|
||||
import chromadb # type: ignore
|
||||
from chromadb.config import Settings
|
||||
except ImportError as exc:
|
||||
raise MemPalaceUnavailable(
|
||||
"ChromaDB is not installed. "
|
||||
@@ -59,7 +65,13 @@ def _get_client(palace_path: Path):
|
||||
"Run 'mempalace mine' to initialise the palace."
|
||||
)
|
||||
|
||||
return chromadb.PersistentClient(path=str(palace_path))
|
||||
# Create client with telemetry disabled
|
||||
settings = Settings(
|
||||
anonymized_telemetry=False,
|
||||
allow_reset=False,
|
||||
)
|
||||
|
||||
return chromadb.PersistentClient(path=str(palace_path), settings=settings)
|
||||
|
||||
|
||||
def search_memories(
|
||||
|
||||
@@ -26,7 +26,14 @@ HERMES_CONTEXT = [
|
||||
|
||||
class RelevanceEngine:
|
||||
def __init__(self, collection_name: str = "deep_dive"):
|
||||
self.client = chromadb.PersistentClient(path="./chroma_db")
|
||||
# Disable ChromaDB telemetry for sovereignty
|
||||
import os
|
||||
os.environ.setdefault("ANONYMIZED_TELEMETRY", "False")
|
||||
|
||||
from chromadb.config import Settings
|
||||
settings = Settings(anonymized_telemetry=False)
|
||||
|
||||
self.client = chromadb.PersistentClient(path="./chroma_db", settings=settings)
|
||||
self.embedding_fn = embedding_functions.SentenceTransformerEmbeddingFunction(
|
||||
model_name="all-MiniLM-L6-v2"
|
||||
)
|
||||
|
||||
@@ -34,7 +34,14 @@ VIOLATION_KEYWORDS = [
|
||||
|
||||
def audit(palace_path: Path):
|
||||
violations = []
|
||||
client = chromadb.PersistentClient(path=str(palace_path))
|
||||
# Disable ChromaDB telemetry for sovereignty
|
||||
import os
|
||||
os.environ.setdefault("ANONYMIZED_TELEMETRY", "False")
|
||||
|
||||
from chromadb.config import Settings
|
||||
settings = Settings(anonymized_telemetry=False)
|
||||
|
||||
client = chromadb.PersistentClient(path=str(palace_path), settings=settings)
|
||||
try:
|
||||
col = client.get_collection("mempalace_drawers")
|
||||
except Exception as e:
|
||||
|
||||
@@ -18,7 +18,14 @@ DOCS_PER_ROOM = 5
|
||||
|
||||
|
||||
def main():
|
||||
client = chromadb.PersistentClient(path=PALACE_PATH)
|
||||
# Disable ChromaDB telemetry for sovereignty
|
||||
import os
|
||||
os.environ.setdefault("ANONYMIZED_TELEMETRY", "False")
|
||||
|
||||
from chromadb.config import Settings
|
||||
settings = Settings(anonymized_telemetry=False)
|
||||
|
||||
client = chromadb.PersistentClient(path=PALACE_PATH, settings=settings)
|
||||
col = client.get_collection("mempalace_drawers")
|
||||
|
||||
# Discover rooms in this wing
|
||||
|
||||
106
tests/test_chroma_telemetry.py
Normal file
106
tests/test_chroma_telemetry.py
Normal file
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test that ChromaDB telemetry is disabled.
|
||||
|
||||
This test verifies that:
|
||||
1. ANONYMIZED_TELEMETRY environment variable is set to False
|
||||
2. ChromaDB client is created with anonymized_telemetry=False
|
||||
3. No telemetry calls are made
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add repo root to path
|
||||
_HERE = Path(__file__).resolve().parent
|
||||
_REPO_ROOT = _HERE.parent
|
||||
if str(_REPO_ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(_REPO_ROOT))
|
||||
|
||||
|
||||
def test_telemetry_disabled():
|
||||
"""Test that telemetry is disabled in ChromaDB client."""
|
||||
# Set environment variable
|
||||
os.environ["ANONYMIZED_TELEMETRY"] = "False"
|
||||
|
||||
try:
|
||||
import chromadb
|
||||
from chromadb.config import Settings
|
||||
except ImportError:
|
||||
print("ChromaDB not installed, skipping test")
|
||||
return True
|
||||
|
||||
# Create client with telemetry disabled
|
||||
settings = Settings(
|
||||
anonymized_telemetry=False,
|
||||
allow_reset=False,
|
||||
)
|
||||
|
||||
# Create a temporary directory for testing
|
||||
import tempfile
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
client = chromadb.PersistentClient(path=tmpdir, settings=settings)
|
||||
|
||||
# Verify settings
|
||||
client_settings = client.get_settings()
|
||||
assert client_settings.anonymized_telemetry == False, \
|
||||
"Telemetry should be disabled"
|
||||
|
||||
print("✅ ChromaDB telemetry is disabled")
|
||||
return True
|
||||
|
||||
|
||||
def test_mempalace_searcher():
|
||||
"""Test that MemPalace searcher disables telemetry."""
|
||||
import os
|
||||
os.environ["ANONYMIZED_TELEMETRY"] = "False"
|
||||
|
||||
try:
|
||||
from nexus.mempalace.searcher import _get_client
|
||||
except ImportError:
|
||||
print("MemPalace not available, skipping test")
|
||||
return True
|
||||
|
||||
# Create a temporary directory for testing
|
||||
import tempfile
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
palace_path = Path(tmpdir)
|
||||
|
||||
# Create client
|
||||
try:
|
||||
client = _get_client(palace_path)
|
||||
|
||||
# Verify settings
|
||||
client_settings = client.get_settings()
|
||||
assert client_settings.anonymized_telemetry == False, \
|
||||
"Telemetry should be disabled in MemPalace client"
|
||||
|
||||
print("✅ MemPalace searcher disables telemetry")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"❌ Error testing MemPalace searcher: {e}")
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = True
|
||||
|
||||
print("Testing ChromaDB telemetry disabling...")
|
||||
print("=" * 50)
|
||||
|
||||
# Test 1: Basic telemetry disabling
|
||||
if not test_telemetry_disabled():
|
||||
success = False
|
||||
|
||||
# Test 2: MemPalace searcher
|
||||
if not test_mempalace_searcher():
|
||||
success = False
|
||||
|
||||
print("=" * 50)
|
||||
if success:
|
||||
print("✅ All tests passed!")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("❌ Some tests failed!")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user