85 lines
2.9 KiB
Markdown
85 lines
2.9 KiB
Markdown
# 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
|
|
|
|
```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/<profile>/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
|
|
```
|