Repository navigation
Closed
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/blockedQueue or user escalation stateQueue or user escalation statesource/humanFiled directly by a humanFiled directly by a humanstatus:done
Description
What and why
Give third-party SSH clients reachability to NAT'd id hosts by tunnelling SSH over iroh (tailnet-like); iroh-over-SSH only where UDP is blocked but port 22 is open. SSH servers in id stay rare and opt-in.
Source
- Phase 13 plan — F13.3
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task)
- id(transport): transport designs #536 (transport designs) — D1-051
Current status
Not started. grep -rn 'tunnel\|direct_tcpip' pkgs/id/src/world_ssh.rs finds no tunnel or port-forward code; the relay kit's tunnel.toml is an iroh-relay deploy config, not this.
Acceptance criteria
- An unmodified
sshclient connects to a world behind NAT through the tunnel - A test proves the iroh-over-SSH fallback negotiates when UDP is denied
- Trust stays at host keys + peer IDs: a peer that reaches the SSH server through iroh still authenticates to
idnormally (no identity bypass)
Size
L
Prerequisites
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task) — F13.2 SSH transport (built on top)
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/blockedQueue or user escalation stateQueue or user escalation statesource/humanFiled directly by a humanFiled directly by a humanstatus:done
Activity
developing-today commentedon Oct 24, 2026
CODE-113
feat(id): SSH-over-iroh tunnel for third-party SSH clients (F13.3)
dezren39 commentedon Oct 25, 2026
SSH-over-iroh landed on PR #842 (SshTunnelProtocol +
id world ssh-tunnel, verified with unmodified OpenSSH). Remaining open here: the iroh-over-SSH fallback when UDP is denied — needs a non-QUIC iroh transport or SSH-carried datagram channel, which does not exist yet. F13.2's exec transport covers joins in that network meanwhile.dezren39 commentedon Oct 26, 2026
Intake review
Fleet monitor intake pass (protocol §5).
Related: Phase 13 sibling set — #785 (F13.3), #786 (F13.4), #787 (F13.5), #788 (F13.6), #789 (F13.7), #790 (F13.8); this issue is F13.3 SSH-over-iroh reachability (and iroh-over-SSH fallback). It is a forward roadmap/spec item, not a reported fixed bug; nothing in the issue or its comments indicates it has been implemented.
Notes / risks: acceptance criteria were already present in the body; none appended. Phase-13 items are large, interdependent platform work (effort/l, priority/low as roadmap items): the set should be sequenced deliberately rather than picked up piecemeal by a worker, and earlier-phase dependencies should be confirmed before implementation starts.
Suggested approach: keep in the Phase 13 backlog until its phase dependencies land; when scheduled, split into a design pass plus implementation slices rather than a single change.
Labels normalized by the monitor.
17 remaining items
dezren39 commentedon Nov 1, 2026
Triage verdict — PARTIALLY SATISFIED; fallback remains blocked on transport design
Freshly checked against current
origin/main(9be9c2298c51368f8eacaacd2f50bfe2b627ba99) and GitHub on 2026-11-01:SshTunnelProtocol(pkgs/id/src/world_ssh.rs:83+), theid world ssh-tunnelclient (pkgs/id/src/commands/world.rs:926+), and thessh_reaches_the_world_through_the_iroh_tunneltest (world_ssh.rs:2728+). id: Phase 13 first slice — shell contract (F13.1), SSH transports (F13.2/F13.3), F13.7 design #842 also records verification with unmodified OpenSSH.The latest note on transport tracker #536 describes D1-051 as superseded by Phase 13, but that accounts for the SSH-over-iroh path only; it does not satisfy this issue's explicit UDP-denied fallback criterion. The remaining scope is L and needs a transport design decision (implement a non-QUIC/SSH-carried transport, or revise the requirement based on the existing F13.2 SSH-exec route). I did not enqueue it as a
small_fix: that would misclassify the unresolved transport design. #785 stays OPEN withqueue/blocked+status/blockeduntil the fallback requirement is settled; no Drew-specific decision is being escalated.🤖 Agent note · blocked
dezren39 commentedon Nov 1, 2026
🤖 Agent note · done
docs(id): design UDP-denied SSH fallback for #785
dezren39 commentedon Nov 1, 2026
Design summary
--viamodes stay unchanged.Question for Drew
@dezren39 — Should criterion 2 require A) literal Iroh-over-SSH via a new non-QUIC transport/SSH-carried datagram channel, B) session-level failover to the existing SSH exec frame transport (recommended, reuses F13.2 and meets the port-22 world-join outcome), or C) explicit
id world join --via sshonly and remove automatic fallback? I recommend B and updating the criterion's wording so it names the transport actually used. The design records the implementation plan either way and does not close #785.Merge pull request #3798 from developing-today/design/id-785
dezren39 commentedon Nov 1, 2026
🤖 Agent note · done