Compare commits
1 Commits
mimo/code/
...
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):
|
def _get_client(palace_path: Path):
|
||||||
"""Return a ChromaDB persistent client, or raise MemPalaceUnavailable."""
|
"""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:
|
try:
|
||||||
import chromadb # type: ignore
|
import chromadb # type: ignore
|
||||||
|
from chromadb.config import Settings
|
||||||
except ImportError as exc:
|
except ImportError as exc:
|
||||||
raise MemPalaceUnavailable(
|
raise MemPalaceUnavailable(
|
||||||
"ChromaDB is not installed. "
|
"ChromaDB is not installed. "
|
||||||
@@ -59,7 +65,13 @@ def _get_client(palace_path: Path):
|
|||||||
"Run 'mempalace mine' to initialise the palace."
|
"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(
|
def search_memories(
|
||||||
|
|||||||
@@ -26,7 +26,14 @@ HERMES_CONTEXT = [
|
|||||||
|
|
||||||
class RelevanceEngine:
|
class RelevanceEngine:
|
||||||
def __init__(self, collection_name: str = "deep_dive"):
|
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(
|
self.embedding_fn = embedding_functions.SentenceTransformerEmbeddingFunction(
|
||||||
model_name="all-MiniLM-L6-v2"
|
model_name="all-MiniLM-L6-v2"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -34,7 +34,14 @@ VIOLATION_KEYWORDS = [
|
|||||||
|
|
||||||
def audit(palace_path: Path):
|
def audit(palace_path: Path):
|
||||||
violations = []
|
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:
|
try:
|
||||||
col = client.get_collection("mempalace_drawers")
|
col = client.get_collection("mempalace_drawers")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -18,7 +18,14 @@ DOCS_PER_ROOM = 5
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
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")
|
col = client.get_collection("mempalace_drawers")
|
||||||
|
|
||||||
# Discover rooms in this wing
|
# 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