104 lines
3.2 KiB
Markdown
104 lines
3.2 KiB
Markdown
|
|
# Orchestrator Roadmap
|
||
|
|
|
||
|
|
This document tracks Orchestrator-specific work for the AI SysAdmin system.
|
||
|
|
|
||
|
|
## Completed Work
|
||
|
|
|
||
|
|
### Core Infrastructure
|
||
|
|
- [x] Task model, statuses, DB tables
|
||
|
|
- [x] Agent model + registration flow
|
||
|
|
- [x] Task dispatching (`/tasks/next` polling)
|
||
|
|
- [x] Heartbeat system
|
||
|
|
- [x] Result ingestion
|
||
|
|
- [x] Tenant validation, permission flow
|
||
|
|
- [x] FastAPI app with complete routing structure
|
||
|
|
- [x] Deployment on live server (nginx + SSL)
|
||
|
|
|
||
|
|
### API Routes
|
||
|
|
- [x] `/api/v1/agents/*` - Agent registration, heartbeat
|
||
|
|
- [x] `/api/v1/tasks/*` - Task creation, polling, results
|
||
|
|
- [x] `/api/v1/tenants/*` - Tenant management
|
||
|
|
- [x] `/api/v1/env/*` - ENV inspection and update
|
||
|
|
- [x] `/api/v1/agents/{id}/files/inspect` - File inspection
|
||
|
|
|
||
|
|
### Playbooks
|
||
|
|
- [x] Chatwoot playbook (`/api/v1/tenants/{id}/chatwoot/setup`)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Remaining Work
|
||
|
|
|
||
|
|
### Phase 1: Tool-Specific Playbooks
|
||
|
|
|
||
|
|
Create a playbook module for each tool in `app/playbooks/`:
|
||
|
|
|
||
|
|
| Tool | Module | API Endpoint | Status |
|
||
|
|
|------|--------|--------------|--------|
|
||
|
|
| Chatwoot | `chatwoot.py` | `/tenants/{id}/chatwoot/setup` | ✅ Done |
|
||
|
|
| NocoDB | `nocodb.py` | `/tenants/{id}/nocodb/setup` | ⬚ Todo |
|
||
|
|
| Directus | `directus.py` | `/tenants/{id}/directus/setup` | ⬚ Todo |
|
||
|
|
| Ghost CMS | `ghost.py` | `/tenants/{id}/ghost/setup` | ⬚ Todo |
|
||
|
|
| MinIO | `minio.py` | `/tenants/{id}/minio/setup` | ⬚ Todo |
|
||
|
|
| Keycloak | `keycloak.py` | `/tenants/{id}/keycloak/setup` | ⬚ Todo |
|
||
|
|
| Nextcloud | `nextcloud.py` | `/tenants/{id}/nextcloud/setup` | ⬚ Todo |
|
||
|
|
| Activepieces | `activepieces.py` | `/tenants/{id}/activepieces/setup` | ⬚ Todo |
|
||
|
|
| Listmonk | `listmonk.py` | `/tenants/{id}/listmonk/setup` | ⬚ Todo |
|
||
|
|
| Odoo | `odoo.py` | `/tenants/{id}/odoo/setup` | ⬚ Todo |
|
||
|
|
| Mixpost | `mixpost.py` | `/tenants/{id}/mixpost/setup` | ⬚ Todo |
|
||
|
|
|
||
|
|
**Each playbook creates a COMPOSITE task with:**
|
||
|
|
1. `ENV_INSPECT` - Read current configuration
|
||
|
|
2. `ENV_UPDATE` - Update URLs, domains, settings
|
||
|
|
3. `DOCKER_RELOAD` - Restart the stack
|
||
|
|
|
||
|
|
**Each playbook module needs:**
|
||
|
|
- Pydantic request/response schemas
|
||
|
|
- Route handler in `app/routes/playbooks.py`
|
||
|
|
- Tests in `tests/test_playbooks/`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Phase 2: Introspection APIs
|
||
|
|
|
||
|
|
- [ ] `/api/v1/servers/{id}/scan` - Discover all services and their state
|
||
|
|
- [ ] `/api/v1/servers/{id}/diagnose` - Find configuration issues
|
||
|
|
- [ ] `/api/v1/servers/{id}/health` - Aggregate health check
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Phase 3: New Task Types
|
||
|
|
|
||
|
|
Support for new executor types from the agent:
|
||
|
|
|
||
|
|
| Task Type | Purpose | Status |
|
||
|
|
|-----------|---------|--------|
|
||
|
|
| NGINX_RELOAD | Reload nginx after config changes | ⬚ Todo |
|
||
|
|
| HEALTHCHECK | Check service status | ⬚ Todo |
|
||
|
|
| STACK_HEALTH | Verify docker compose stack | ⬚ Todo |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Phase 4: Autonomous Operations
|
||
|
|
|
||
|
|
- [ ] LLM integration for natural language commands
|
||
|
|
- [ ] Task chaining based on results
|
||
|
|
- [ ] Automatic remediation workflows
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Phase 5: Dashboard & UI
|
||
|
|
|
||
|
|
- [ ] Task history and logs viewer
|
||
|
|
- [ ] Agent status dashboard
|
||
|
|
- [ ] Playbook marketplace
|
||
|
|
- [ ] RBAC and multi-tenant UI
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. Create `app/playbooks/nocodb.py`
|
||
|
|
2. Add route: `POST /api/v1/tenants/{tenant_id}/nocodb/setup`
|
||
|
|
3. Create COMPOSITE task with ENV_INSPECT, ENV_UPDATE, DOCKER_RELOAD
|
||
|
|
4. Write tests in `tests/test_playbooks/test_nocodb.py`
|