[taskboard] add direct host dispatch targets

This commit is contained in:
2026-03-07 13:09:22 -08:00
parent 73da5ae6d2
commit 85c5ab10b0
17 changed files with 441 additions and 32 deletions

View File

@@ -3,9 +3,10 @@
"overview": [
"OpenClaw is the ubuntu-local orchestration layer and Telegram HQ entrypoint.",
"ZeroClaw provides host-scoped remote administration on grizzley and ice.",
"The taskboard is the shared planning, dispatch, and audit surface across both families."
"Direct SSH targets extend the taskboard to hosts that do not run an active Claw runtime.",
"The taskboard is the shared planning, dispatch, and audit surface across all host-operation families."
],
"topologyDiagram": " Telegram / Forum Topics\n |\n +----------------+----------------+\n | |\n v v\n OpenClaw gateway ZeroClaw control\n ubuntu :18789 ice zeroclaw-admin\n local swarm topic router / paired gateway\n | |\n +------------+--------------------+\n |\n v\n shared taskboard UI\n |\n +-----------+-----------+\n | |\n v v\n OpenClaw agents ZeroClaw runtimes\n ubuntu-local swarm grizzley / ice\n",
"topologyDiagram": " Telegram / Forum Topics\n |\n +----------------+----------------+\n | |\n v v\n OpenClaw gateway ZeroClaw control\n ubuntu :18789 ice zeroclaw-admin\n local swarm topic router / paired gateway\n | |\n +------------+--------------------+\n |\n v\n shared taskboard UI\n |\n +-----------------+---------------------+\n | | |\n v v v\n OpenClaw agents ZeroClaw runtimes Direct SSH targets\n ubuntu-local grizzley / ice pve / truenas / panda\n",
"sections": [
{
"id": "openclaw",
@@ -62,6 +63,31 @@
"Grizzley is host-scoped and should not proxy other hosts directly.",
"Ice still uses host-local secret and encryption state under /home/bear/.zeroclaw-admin."
]
},
{
"id": "direct",
"title": "Direct Host Targets",
"summary": "SSH-backed host operations for systems that do not run an active OpenClaw or ZeroClaw runtime. These flows execute safe, built-in host checks and complete through the taskboard callback pipeline.",
"runtime": [
{ "label": "Execution", "value": "taskboard container on ubuntu" },
{ "label": "Transport", "value": "SSH with mounted host key material" },
{ "label": "Key Path", "value": "/root/.ssh/id_ed25519 inside container" }
],
"channels": [
{ "label": "PVE", "value": "root@192.168.50.11:22" },
{ "label": "TrueNAS", "value": "christopher@192.168.50.12:22" },
{ "label": "Panda", "value": "bear@192.168.50.196:22" }
],
"configuredAgents": [
"pve-direct",
"truenas-direct",
"panda-direct"
],
"diagram": "taskboard direct SSH\n -> pve : built-in Proxmox overview\n -> truenas : built-in storage overview\n -> panda : built-in SSH add-on overview\n\nEach direct task\n -> ssh safe built-in command\n -> capture stdout/stderr\n -> task callback -> completed result\n",
"notes": [
"Direct targets are for safe built-in actions, not arbitrary remote shell execution from the UI.",
"Completion state is written through the same callback pipeline used by remote agent runtimes."
]
}
],
"zeroclawAgents": [
@@ -117,5 +143,132 @@
"description": "Posts JSON webhook payloads to the ice ZeroClaw runtime."
}
}
],
"directAgents": [
{
"slug": "pve-direct",
"assignmentKey": "pve-direct",
"aliases": ["pve-direct", "PVE Direct", "pve"],
"name": "PVE Direct",
"host": "pve",
"role": "Direct Proxmox host checks over SSH",
"runtimePath": "ssh://root@192.168.50.11:22",
"configPath": null,
"emoji": "P",
"channels": [
{ "label": "SSH", "value": "root@192.168.50.11:22" },
{ "label": "Actions", "value": "proxmox-overview" }
],
"tools": ["ssh", "systemctl", "pct", "qm"],
"capabilities": [
"Verify core Proxmox services",
"Enumerate running LXC containers",
"Enumerate VM state"
],
"files": [],
"notes": [
"Uses direct SSH from the taskboard container.",
"Designed for safe built-in verification flows."
],
"dispatch": {
"method": "direct-ssh",
"hostname": "192.168.50.11",
"user": "root",
"port": 22,
"defaultAction": "proxmox-overview",
"actions": [
{
"key": "proxmox-overview",
"title": "Proxmox overview",
"description": "Verify core services and list active LXCs and VMs.",
"command": "systemctl is-active pve-cluster pvedaemon pveproxy pvestatd ssh && printf '\\nCTs:\\n' && pct list && printf '\\nVMs:\\n' && qm list",
"successSummary": "PVE services and guest inventory collected"
}
]
}
},
{
"slug": "truenas-direct",
"assignmentKey": "truenas-direct",
"aliases": ["truenas-direct", "TrueNAS Direct", "truenas"],
"name": "TrueNAS Direct",
"host": "truenas",
"role": "Direct storage checks over SSH",
"runtimePath": "ssh://christopher@192.168.50.12:22",
"configPath": null,
"emoji": "T",
"channels": [
{ "label": "SSH", "value": "christopher@192.168.50.12:22" },
{ "label": "Actions", "value": "storage-overview" }
],
"tools": ["ssh", "zfs", "systemctl", "midclt"],
"capabilities": [
"Verify storage datasets",
"Check docker service state",
"Report host identity and storage status"
],
"files": [],
"notes": [
"Runs safe read-only storage checks.",
"Does not modify datasets or apps."
],
"dispatch": {
"method": "direct-ssh",
"hostname": "192.168.50.12",
"user": "christopher",
"port": 22,
"defaultAction": "storage-overview",
"actions": [
{
"key": "storage-overview",
"title": "Storage overview",
"description": "Report host identity, docker-app service state, and top-level ZFS datasets.",
"command": "printf 'Host: '; hostname && printf '\\nDocker apps service:\\n' && systemctl is-active truenas-docker-apps.service || true && printf '\\nDatasets:\\n' && zfs list -o name,used,avail | head -n 12",
"successSummary": "TrueNAS storage overview collected"
}
]
}
},
{
"slug": "panda-direct",
"assignmentKey": "panda-direct",
"aliases": ["panda-direct", "Panda Direct", "panda"],
"name": "Panda Direct",
"host": "panda",
"role": "Direct SSH add-on checks for the Home Assistant host",
"runtimePath": "ssh://bear@192.168.50.196:22",
"configPath": null,
"emoji": "H",
"channels": [
{ "label": "SSH", "value": "bear@192.168.50.196:22" },
{ "label": "Actions", "value": "ssh-addon-overview" }
],
"tools": ["ssh", "hostname", "cat", "ls"],
"capabilities": [
"Verify SSH add-on shell reachability",
"Report add-on OS state and mounted data files"
],
"files": [],
"notes": [
"Targets the Home Assistant SSH add-on shell, not a full host shell.",
"Uses shell-safe inspection commands that work without supervisor API auth."
],
"dispatch": {
"method": "direct-ssh",
"hostname": "192.168.50.196",
"user": "bear",
"port": 22,
"defaultAction": "ssh-addon-overview",
"actions": [
{
"key": "ssh-addon-overview",
"title": "SSH add-on overview",
"description": "Report add-on shell identity, OS information, and mounted /data files.",
"command": "printf 'Host: '; hostname && printf '\\nOS:\\n' && cat /etc/os-release && printf '\\nData dir:\\n' && ls -1 /data 2>/dev/null | head -n 10",
"successSummary": "Panda SSH add-on overview collected"
}
]
}
}
]
}

View File

@@ -55,5 +55,44 @@
"dispatchMethod": "zeroclaw-webhook",
"reasoningEffort": "medium"
}
},
{
"key": "direct-pve-check",
"title": "PVE direct verification",
"summary": "Run the built-in Proxmox overview action through the direct SSH target.",
"family": "direct",
"tags": ["host-ops", "service-check", "action:proxmox-overview"],
"defaults": {
"priority": "High",
"dispatchMethod": "direct-ssh",
"targetHost": "pve",
"targetChannel": "root@192.168.50.11:22"
}
},
{
"key": "direct-truenas-check",
"title": "TrueNAS direct verification",
"summary": "Run the built-in storage overview action through the direct SSH target.",
"family": "direct",
"tags": ["host-ops", "storage-check", "action:storage-overview"],
"defaults": {
"priority": "High",
"dispatchMethod": "direct-ssh",
"targetHost": "truenas",
"targetChannel": "christopher@192.168.50.12:22"
}
},
{
"key": "direct-panda-check",
"title": "Panda direct verification",
"summary": "Run the built-in SSH add-on overview action through the direct target.",
"family": "direct",
"tags": ["host-ops", "home-assistant", "action:ssh-addon-overview"],
"defaults": {
"priority": "High",
"dispatchMethod": "direct-ssh",
"targetHost": "panda",
"targetChannel": "bear@192.168.50.196:22"
}
}
]