Remote nodes
What this is for. Remote Nodes is the inventory of other machines this EYAS instance can reach. You register a name, host, and connection type so agents can run work off this box — typically over SSH. Health is online, offline, or unknown. This page is the registry; it is not Observability telemetry and not a Hand (desktop/CLI pairing).
When to use it
Section titled “When to use it”- You want an agent to run a command on another host, not only on this instance.
- You are adding a machine you reach by SSH, WebSocket, or Tailscale.
- You need to see whether a node was last seen, or to rename / retarget / remove it.
- You need a guarded SSH invoke (destructive patterns blocked unless forced) — that is an API on SSH nodes, not a button on this page.
Typical workflow
Section titled “Typical workflow”- Open the sidebar Settings group Infrastructure → Nodes (
/nodes). - Click Add Node.
- Fill Name (placeholder
my-node), Host (placeholder192.168.1.100:3100), and Type (SSH, WebSocket, or Tailscale). - Click Save. The card appears with a status dot and the type badge.
- Pencil edits name, host, and type. Trash removes the node.
Empty state: No remote nodes configured. After save you should see the host in monospace and, when known, Last seen.
Features
Section titled “Features”Each card shows Name, a status dot, a Type badge, Host, and Last seen when the registry has a timestamp.
Status colours on this page: online (green), offline (red), unknown (amber). New nodes start offline until something marks them seen.
Type in the dialog is SSH, WebSocket, or Tailscale. The add/edit dialog does not collect a capabilities list; the node record can still store capabilities for agents.
SSH nodes can be invoked through a guarded executor (POST invoke). Patterns such as rm -f / rm -r, mkfs, dd if=, and fork bombs are refused unless forceDestructive is explicitly true. Non-SSH types return “not implemented” for invoke. Credentials (username, password or private key) come from the invoke body or the node’s stored config — never logged.
WebSocket and Tailscale types are inventory + health on this page; they do not gain an invoke button here.
Fields and controls
Section titled “Fields and controls”Add / edit node
| Control | Meaning |
|---|---|
| Add Node | Open the create dialog |
| Node count | Header badge when at least one node exists |
| Name | Human label. Placeholder my-node |
| Host | Address. Placeholder 192.168.1.100:3100 |
| Type | SSH, WebSocket, or Tailscale |
| Save / Saving… | Persist (disabled until name and host are non-empty) |
| Pencil | Edit Node — same fields |
| Trash | Delete the node |
Health
| Control | Meaning |
|---|---|
| Status dot | online / offline / unknown |
| Type badge | Connection type on the card |
| Last seen | Timestamp when the registry last marked the node seen |