The Question Every Request Has to Answer
Before Delta serves a byte, it has to answer one question: which Mac is asking? Not which user, not which app. Which machine of the family. Every share policy in Track 2 is written in those terms ("the workbench may read", "every Mac in the fleet may write"), so the whole authorization layer stands on one string: the caller's fleet label. Get that string wrong and every policy above it is decoration.
SSH answered the question with keys. Each Mac held a private key, every other Mac held a list of public keys, and somebody had to keep those lists in step across the fleet. Delta was built to stop carrying data over SSH, and it would have been a strange win to bring SSH's key distribution along with it. So Delta asks a different question: who already knows, for certain, which machine sent this packet? On the family's network the answer is WireGuard.
What WireGuard Already Proved
Every family Mac is a node on one Tailscale network, the tailnet. Tailscale is built on WireGuard, and WireGuard has a property that is easy to read past: cryptokey routing. Each peer is configured with a public key and the tailnet addresses it is allowed to use. A packet that arrives through the tunnel claiming a source address can only have been sealed by the private key bound to that address. Spoofing the source address inside the tunnel is not hard; it is impossible without the key.
So when a connection reaches the gateway on this Mac's own tailnet address, from an address in the tailnet's range (100.64.0.0/10, the carrier-grade NAT block of RFC 6598), the source address is already an authenticated fact. Delta does not need to prove it again. It needs to translate it: address to node, node to fleet label.
From Address to Label in Two Lookups
- Address to node.
tailscale status --jsonprints Tailscale's own roster: theSelfnode and everyPeer, each with itsTailscaleIPsand itsDNSName(the MagicDNS name). Delta reads that output into a table from each tailnet address to the node it belongs to. - Node to label. The family registry lists every fleet Mac with its MagicDNS name. Delta lowercases both sides, strips the trailing dot, and keeps only the nodes the registry names. The result is a dictionary from tailnet address to fleet label.
The Roster class keeps that dictionary and refreshes it when it is a minute old. A request from an address that is not in it (a node that joined a moment ago) triggers one extra read, at most once every five seconds, so a burst of unknown callers costs one subprocess, not a hundred.
Three Kinds of Stranger
| Caller | What Delta knows | Answer |
|---|---|---|
| A fleet Mac on the tailnet | Its label, from the roster | Admitted as that label; share policy decides the rest |
| A tailnet node the registry does not list (a phone, a borrowed laptop) | That it is on the tailnet and is not a family Mac | 403: "tailnet node … is not a registered family Mac" |
| A listed Mac outside Delta's fleet (the household's Mac) | Its label | Admitted as that label, then refused by every share whose policy does not name its group (lesson 5) |
The phone is the interesting row. It holds a perfectly valid WireGuard key; the tunnel trusts it. Delta still refuses it, because membership of the tailnet is not membership of the family. The registry draws that line, and the gateway enforces it per connection.
"I Cannot Tell" Is Not "You Are a Stranger"
The roster comes from a subprocess, and subprocesses fail. Tailscale's CLI can be missing from PATH under launchd, can time out, can print something that is not JSON. The first version of Delta already kept the previous roster when a read failed, and logged a warning. What it could not do was tell the caller. An address the old roster did not hold (or any address at all, when no read had succeeded since the daemon started) got the stranger's answer: 403 not a registered family Mac, to a family Mac, because a CLI was broken.
The 1110-7 review fixed that in two moves. First, a failed read now records why it failed, beside the roster it kept. Second, the gateway tells the two cases apart. When an address is unknown and the last read failed, the answer is unavailable, naming the cause: "this Mac cannot read the tailnet roster (…), so it cannot tell which Mac … is". A stranger gets 403; a Mac Delta cannot currently identify gets 503 and a sentence. The caller sees a failure it can wait out, not a verdict about who it is.
The same review closed a quieter cost. While the CLI was failing, every tailnet request launched it again, each attempt allowed up to ten seconds. Now requests share one attempt, at most one every five seconds, and a caller that arrives while a roster is already in hand does not wait for the next read at all.
Why No Password Ever Appears Here
Look at what this lesson never mentioned: a password, an API key, a key file Delta created, a list someone has to keep in step. The tailnet path has no Delta secret at all. The proof is WireGuard's; the meaning ("this node is the workbench") is the registry's; Delta only joins the two. That is the track's title in its purest form. The next three lessons add secrets back, one at a time, for routes where WireGuard is not underneath, and each one is minted where this lesson's proof already holds.