Approval Workflow Hub
1. What? — Definition and context
Section titled “1. What? — Definition and context”Docker updates, critical MCP operations, incident remediations — several workflows need a human approval before they act. Rather than having every workflow reimplement its own validation logic, the Approval Workflow Hub centralises every request in a uniform format with [Approve] / [Reject] Telegram buttons.
Approval sources
Section titled “Approval sources”| Source | Example | Callback |
|---|---|---|
| Docker DIUN | Application image update | notif_approve_<id> |
| MCP Gateway | N8N workflow write | mcp_approve_<id> |
| Incident Response | Automatic remediation | incident_execute_<id> |
| File Provider | Custom image rebuild | approve_file_<key> |
2. Why? — Stakes and motivations
Section titled “2. Why? — Stakes and motivations”Problems solved
Section titled “Problems solved”| Problem | Without the hub | With the hub |
|---|---|---|
| Duplicated logic | Every workflow runs its own buttons | Unified format and storage |
| No tracking | Approval lost if Telegram crashes | Data Table with audit trail |
| Silent timeout | No reply = nothing happens | Configurable timeout with default action |
3. How? — Technical implementation
Section titled “3. How? — Technical implementation”Architecture
Section titled “Architecture”The hub normalises each request into a common format stored in the Pending Approvals Data Table:
| Field | Description |
|---|---|
approval_id | Unique identifier |
type | claude / docker / incident / file_provider |
source | Triggering workflow |
context | Context payload (JSON) |
callback_url | Return URL (for the MCP gateway) |
status | pending / approved / rejected / expired |
When the user clicks a button, the callback is routed by type:
- Docker → runs the SSH update command
- MCP → HTTP POST to the cli-ollama gateway
- Incident → starts the remediation script
- File Provider → triggers the Docker rebuild
4. What if? — Perspectives and limits
Section titled “4. What if? — Perspectives and limits”Current limits
Section titled “Current limits”| Limit | Impact | Mitigation |
|---|---|---|
| Single admin | Only one approver | Sufficient for solo use |
| No escalation | Timeout = nothing happens | Reminder notification planned |
Evolution scenarios
Section titled “Evolution scenarios”If a team is involved:
- Multi-signature approval (2 admins out of 3)
- Temporary delegation (vacation)
- Approval history in Grafana
Related pages
Section titled “Related pages”Workflows
Section titled “Workflows”- Docker auto-updates — Update approvals
- Conversational system — MCP confirmations
- Notification Hub — Request routing
Infrastructure
Section titled “Infrastructure”- Security Stack — Caddy blocks external webhooks