Skip to content
Nautilo Documentation
Build on NautiloConceptsEntity modelRelationship matrix

REL-RLY-TOL: Relay ↔ Tool

Implemented Relay ↔ Tool relationship or deliberate no-direct-edge invariant.

Stable ID: REL-RLY-TOL
Entities: RLY (Relay) ↔ TOL (Tool)
Relationship status: implemented

Audited relationship

Relay capability advertisement and proxy execution are current.

Design

A Tool declares whether it executes on the cloud path or a Relay path. Cardinality: M:N — one Relay can execute many Tools (all Tools with executor: "relay" whose relayCapability the Relay advertises); one Tool (if relay-executed) can run on many Relays (any connected Relay with matching capability). The match is runtime — RelayRegistry picks a connected Relay advertising the required relayCapability (e.g. canReadWorkspace, canRunShell). Output always passes through scanToolResult server-side.

Local execution dispatch

The file and officecli catalog tools remain executor: "cloud". For commands whose effective zone is current or absolute, the server dispatches a typed local-file operation to a qualifying Electron relay (protocol v4+ with localFileExecution); workspace artifact operations stay on the server path unchanged.

The server retains authorization, approval, and scanToolResult for every local-zone dispatch. The relay is the execution and device-local revision authority for current/absolute zones — it runs file commands, bundled OfficeCLI, and bounded local undo history on the user's Mac. Workspace artifacts, namespace rules, server OfficeCLI, and server file_revisions are unaffected.

Local-file execution is a relay feature/profile (localFileExecution), not a Human Capability; see REL-CAP-RLY.

Implementation

ToolPolicyEntry in trust/src/tool-policies.ts declares executor: "cloud" | "relay" + optional relayCapability: string. RelayRegistry routes by matching advertisement. agent/src/nodes/tools.ts runs scanToolResult on all outputs regardless of path.

Verification state

This article remains at the original relationship granularity for AI and maintainer use. Its current-versus-target classification was reconciled before migration; public code-anchor verification remains in progress against Nautilo 4b3ea604.