VERA cleanup (FPLAN-0410): - Remove all /home/aipass hardcoded paths (portability) - Remove internal Telegram bot code from public repo (6k+ lines) - Remove runtime logs, .claude/settings.local.json, stale files - Clean READMEs across all branches - Restructure spawn handlers into proper 3-layer architecture - Add __init__.py files for proper package imports - Update seedgo standards for public repo context - Add log_structure standard to seedgo Integration test bug fixes: - Fix double @@ display in drone introspection output - Fix spawn registry resolving to wrong file (walk up from package root) - Fix email sender identity always showing as @ai_mail (pass AIPASS_CALLER_CWD) - Fix branch_detection.py relative path resolution against CWD instead of registry dir - Add .trinity/passport.json detection for spawned agents - Archive duplicate json_ops.py, update imports to canonical json_handler - Update .gitignore for runtime logs and .claude/ dirs Tested end-to-end in Docker container (aipass-test:latest): - Spawn → register → send email → receive → reply all verified working Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prax
System-wide logging and real-time monitoring for AIPass. Prax auto-routes log output from any module to per-module log files and provides a live monitoring console (Mission Control) that shows file changes, log events, and command execution across all branches.
Usage
Logging
from aipass.prax import logger
logger.info("Processing started")
logger.warning("Disk usage high")
logger.error("Connection failed")
Logs auto-route to system_logs/<branch>_<module>.log based on the calling module. No configuration needed — prax detects the caller via stack introspection.
For handlers or plugins that need to bypass the event pipeline:
from aipass.prax.apps.modules.logger import get_direct_logger
log = get_direct_logger("my_handler")
log.info("Direct log entry")
Mission Control
Real-time monitoring console for watching system activity across all branches.
drone @prax monitor
Interactive commands inside the monitor:
watch all # Watch all branches
watch prax # Watch specific branch
watch errors # Only show errors
status # Show current filters
quit # Exit
CLI Commands
| Command | Description |
|---|---|
drone @prax monitor |
Launch Mission Control |
drone @prax init |
Initialize logging system |
drone @prax status |
Show system status |
drone @prax run |
Start continuous logging mode |
drone @prax shutdown |
Shutdown logging system |
drone @prax discover |
Discover Python modules in ecosystem |
drone @prax log-audit |
Audit log file sizes and health |
Architecture
prax/
├── apps/
│ ├── prax.py # Entry point
│ ├── modules/
│ │ ├── logger.py # SystemLogger (public API)
│ │ └── monitor_module.py # Mission Control
│ └── handlers/
│ ├── logging/ # Log setup, rotation, introspection
│ ├── monitoring/ # Event queue, branch detection, stream output
│ ├── discovery/ # Module scanning and filtering
│ ├── config/ # Configuration loading
│ └── registry/ # Module registry management
└── tests/
How It Works
- Auto-routing — When any module calls
logger.info(), prax inspects the call stack to identify the caller and routes the log entry to the appropriate file. - Dual output — Each log entry goes to both a system-wide log (
system_logs/) and a branch-local log ({branch}/logs/), both with rotation. - Mission Control — A multi-threaded monitoring console that watches file changes (via inotify), log events, and agent activity across all branches simultaneously.