personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add host/platform identification to observer events

Platform observers now include host (hostname) and platform ("linux"/"darwin")
fields in their status and observing events to support future multi-host
scenarios. Fields are added at the source (observer emit calls) rather than
in the generic callosum module.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+19
+1
docs/CALLOSUM.md
··· 64 64 - `detected`: `file`, `handler`, `ref` - File detected and handler spawned 65 65 - `described`/`transcribed`: `input`, `output`, `duration_ms` - Processing complete 66 66 - `observed`: `segment`, `duration` - All files for segment fully processed 67 + - Observer events (`status`, `observing`) include `host` (hostname) and `platform` ("linux"/"darwin") for multi-host support 67 68 **Purpose:** Track observation pipeline from live capture state through processing completion 68 69 **Health Derivation:** Supervisor derives `see`/`hear` health from `observe.status` event recency and content 69 70 **Path Format:** Relative to `JOURNAL_PATH` (e.g., `20251102/163045_300_center_DP-3_screen.webm` for multi-monitor recordings)
+9
observe/linux/observer.py
··· 22 22 import logging 23 23 import os 24 24 import signal 25 + import socket 25 26 import sys 26 27 import time 27 28 ··· 48 49 RMS_THRESHOLD = 0.01 49 50 MIN_HITS_FOR_SAVE = 3 50 51 CHUNK_DURATION = 5 # seconds 52 + 53 + # Host identification for multi-host scenarios 54 + _HOST = socket.gethostname() 55 + _PLATFORM = "linux" 51 56 52 57 # Capture modes 53 58 MODE_IDLE = "idle" ··· 347 352 "observing", 348 353 segment=segment, 349 354 files=files, 355 + host=_HOST, 356 + platform=_PLATFORM, 350 357 ) 351 358 logger.info(f"Segment observing: {segment} ({len(files)} files)") 352 359 ··· 478 485 tmux=tmux_info, 479 486 audio=audio_info, 480 487 activity=activity_info, 488 + host=_HOST, 489 + platform=_PLATFORM, 481 490 ) 482 491 483 492 def finalize_screencast(self, temp_path: str, final_path: str):
+9
observe/macos/observer.py
··· 16 16 import os 17 17 import shutil 18 18 import signal 19 + import socket 19 20 import sys 20 21 import time 21 22 ··· 40 41 RMS_THRESHOLD = 0.01 41 42 MIN_HITS_FOR_SAVE = 3 42 43 SAMPLE_RATE = 48000 # Standard audio sample rate 44 + 45 + # Host identification for multi-host scenarios 46 + _HOST = socket.gethostname() 47 + _PLATFORM = "darwin" 43 48 44 49 45 50 class MacOSObserver: ··· 284 289 "observing", 285 290 segment=segment, 286 291 files=saved_files, 292 + host=_HOST, 293 + platform=_PLATFORM, 287 294 ) 288 295 logger.info(f"Segment observing: {segment} ({len(saved_files)} files)") 289 296 ··· 401 408 tmux=tmux_info, 402 409 audio=audio_info, 403 410 activity=activity_info, 411 + host=_HOST, 412 + platform=_PLATFORM, 404 413 ) 405 414 406 415 def finalize_screencast(self, temp_path: str, final_path: str):