AI Workspace Service Manager
The service manager is the local lifecycle layer for AI Workspace services.
It reads profiles/<profile>/services.json, starts/stops enabled services, records logs under .aiw/runtime/logs/, and keeps PID/state files under .aiw/runtime/.
Common commands
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:
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.
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:
profiles/<profile>/workspace.json
Current fields:
{
"knowledge_dir": "workspaces/fidelity/project-knowledge",
"inbox_dir": "workspaces/fidelity/inbox",
"index_dir": ".aiw/indexes/fidelity"
}
Use scripts/aiw/profile.py from new scripts instead of hardcoding project memory or inbox paths.
Create and validate an isolated profile:
python3 scripts/aiw/profile.py create my-project --display-name "My Project"
python3 scripts/aiw/profile.py doctor --profile my-project
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
python3 scripts/aiw/test_services.py
python3 scripts/aiw/test_profile.py
python3 scripts/aiw/test_indexer.py