# AI Workspace Service Manager The service manager is the local lifecycle layer for AI Workspace services. It reads `profiles//services.json`, starts/stops enabled services, records logs under `.aiw/runtime/logs/`, and keeps PID/state files under `.aiw/runtime/`. ## Common commands ```bash python3 scripts/aiw/services.py status --profile fidelity python3 scripts/aiw/services.py status --profile fidelity --json python3 scripts/aiw/services.py doctor --profile fidelity python3 scripts/aiw/services.py doctor --profile fidelity --json python3 scripts/aiw/services.py start --profile fidelity python3 scripts/aiw/services.py stop --profile fidelity python3 scripts/aiw/services.py logs mattermost-proxy --profile fidelity ``` Start a subset by group: ```bash python3 scripts/aiw/services.py start --profile fidelity --group communication python3 scripts/aiw/services.py start --profile fidelity --group inbox ``` ## Current Fidelity services - `mattermost-proxy`: runs the local Mattermost proxy mirror. - `mattermost-desktop`: launches Mattermost Desktop through the proxy. - `photo-inbox`: runs the local HTTP photo receiver. - `aiw-context-mcp`: read-only context MCP server for local AI clients. The service manager unifies startup and status. It does not move capture behavior into the MCP. ## Local project-knowledge index The workspace includes a dependency-free local indexer for canonical Markdown memory. The index is derived from the profile's configured `knowledge_dir` and written under the profile's configured `index_dir`; it is safe to delete and rebuild. ```bash python3 scripts/aiw/indexer.py build --profile fidelity python3 scripts/aiw/indexer.py status --profile fidelity python3 scripts/aiw/indexer.py search "dismissal lifecycle" --profile fidelity ``` `aiw-context-mcp` exposes the same derived search through the read-only `memory_hybrid_search` tool and falls back to live Markdown search if the index has not been built yet. ## Profile path configuration Reusable scripts resolve profile-specific paths through: ```text profiles//workspace.json ``` Current fields: ```json { "knowledge_dir": "project-knowledge", "inbox_dir": "ai/inbox", "index_dir": ".aiw/indexes/fidelity" } ``` Use `scripts/aiw/profile.py` from new scripts instead of hardcoding root-level project memory or inbox paths. ## Robustness features - Manifest validation before lifecycle actions. - Dependency-aware startup through `depends_on`. - Managed PID/state files under `.aiw/runtime/`. - Per-service logs under `.aiw/runtime/logs/`. - Simple log rotation before service start. - TCP/HTTP health checks. - Doctor checks for required commands and paths declared in the profile manifest. - Protection against starting duplicate services when a matching health check is already passing externally. ## Tests ```bash python3 scripts/aiw/test_services.py python3 scripts/aiw/test_profile.py python3 scripts/aiw/test_indexer.py ```