4.4 KiB
4.4 KiB
Edge Phase Report
Date: 2026-03-20
This phase focused on turning dashboard-edge from a thin remote stub into a real execution-plane service with a stable protocol and a native runtime skeleton.
Completed
1. Execution-plane service extracted
dashboard-edgenow exists as a standalone deployable service.- It owns node identity, heartbeat, node resources, command delivery, logs, workspace, and monitor packet handling.
2. Protocol stabilized
- Heartbeat, node self, node resources, and monitor packets now share a versioned node protocol.
- Node identity fields are consistent across backend and edge.
- Central backend stores node
capabilities,resources, andlast_seen_at.
3. Monitor packets are first-class
- Edge can expose stored monitor packets.
- Backend can poll and persist those packets after command delivery.
- Startup recovery can backfill pending edge conversations from recent logs.
4. Runtime abstraction introduced
- Edge execution now routes through
EdgeRuntimeBackend. - Docker execution is behind the runtime backend abstraction.
- Native execution has a real skeleton instead of a pure stub.
5. Native executor skeleton implemented
- Native runtime can launch a local child process.
- It manages stdout capture, log persistence, process status, command delivery, and resource snapshot reporting.
- Dashboard chat URL and native launch command are configurable through environment variables.
6. Node management is operational
- Nodes can be registered, tested, refreshed, and displayed with protocol/resource data.
- The
local-edgenode is now a usable test target. - A separate
local-edge-nativenode is now running against a real native launcher on port8011.
7. Deploy / migrate flow is now explicit
- A dedicated
POST /api/bots/{bot_id}/deployflow now handles cross-node migration and redeploy. - Basic bot editing no longer accepts execution-target or image switching fields.
- The node home page now exposes a real deploy / migrate modal instead of a design-only placeholder.
8. Native launcher defaults are wired
dashboard-edgenow auto-detects the localnanobot-v0.1.4-post5virtualenv whenEDGE_NATIVE_COMMANDis not explicitly configured.- Native bot startup now passes per-bot
--configand--workspace, so instances no longer fall back to the global~/.nanobot/config.json. - A dedicated
scripts/dev-edge-native.shhelper starts a native edge node aslocal-edge-native.
Still To Do
1. Real native bot contract
- Validate a real Bot lifecycle on
local-edge-nativewithout disrupting the existinglocal-edgeDocker regression target. - Verify the dashboard channel injection path during a full assistant turn, not only node health and capability probing.
- Continue validating per-bot dashboard port or URL selection when multiple native bots run on one node.
2. Deploy flow hardening
- Add richer preflight validation and clearer failure surfacing for edge reachability before switching a Bot.
- Consider a deploy preview / diff step for workspace sync and image changes.
- Extend the flow when a single node eventually supports multiple runtime profiles.
3. Node-level resource telemetry
- Improve native runtime resource accounting with more precise metrics.
- Consider node heartbeat frequency and health thresholds.
4. Reverse-connect transport
- The design still prefers node-initiated connection to the central backend for remote machines.
- That transport is not fully implemented yet.
5. Full remote native rollout
- The native skeleton is in place, but real remote native nodes still need end-to-end validation.
- Existing test bot
unis_bot_a01can be used as a regression target when those pieces are connected.
Verification
- Backend and edge Python modules compile cleanly.
dashboard-edgecan report protocol-versioned node identity and resources.local-edgeis already visible and testable from the central dashboard.local-edge-nativeis registered, online, and reportsruntime.native=truewith the real launcher command.- Frontend build passes with the deploy / migrate modal wired into the active node home page.
Notes
directremains the local fallback path.edgeis now the intended execution-plane abstraction for both Docker and future Native nodes.- The long-term goal remains: central dashboard as control plane,
dashboard-edgeas execution plane.