Skip to content

Stop shipping a relay that is not there - #59

Merged
op-q merged 2 commits into
feat/netlabfrom
feat/no-hosted-relay
Sep 10, 2026
Merged

op-q merged 2 commits into
feat/netlabfrom
feat/no-hosted-relay

Conversation

@op-q

@op-q op-q commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Stacked on #58. Retargets to main once that merges.

The hosted relay is closed. DEFAULT_SERVER is deleted rather than repointed, because a default naming a host that no longer answers is worse than no default: it turns "you have not configured a relay" into a TLS failure against somebody else's DNS, at a hostname this project no longer controls.

Entry 8 is why it cannot simply be corrected in place. It argued for a stable API hostname precisely because the value is compiled in — so every already-installed binary keeps reaching for it until its owner installs a new one. What entry 8 wanted, it can no longer have. Recorded as decisions.md entry 16, which supersedes entry 8 rather than rewriting it: the reasoning is still the record of why the API host was named separately, and still the shape for anyone self-hosting.

What changes for a person

  • --server and DROP_SERVER have no default. Unset, and empty, both mean no relay.
  • --transport relay without one is an error, raised before the payload is read — being told the relay is missing is worth nothing after a wait to compress a directory.
  • auto without one is peer-to-peer that says so, rather than falling back to nowhere.

may_fall_back now takes the configured relay so it can distinguish no relay configured from --transport p2p forbids falling back. Those were one branch before, and a person who never asked for p2p should not be told their transport forbids a fallback they did not choose.

The cost, stated rather than hidden

A browser cannot speak QUIC and can only meet a CLI at a relay, so browser transfers now need an operator to run one. That is in --help.

The README headline also changes. It claimed a relay fallback "for browsers and uncooperative NATs" — the first half now needs a relay you run, and the second was never the Drop relay's job: iroh carries the connection over n0's relay when two peers cannot punch. AGENTS.md forbids a headline claiming what only one path delivers, so the new text says "no Drop server" and names what the direct path still depends on.

Help regrouping

The OPTIONS block listed -h and -V, which work alone, beside -s and -t, which do not, with no way to tell them apart — so drop -s answered unknown command \-s`` about an option that exists. Options are now grouped by the command they belong to.

Verification

Full workspace suite, clippy --all-targets, fmt, check-secrets.sh — all pass. Verified by hand that both relay-missing errors fire, and that DROP_SERVER= counts as unset.

🤖 Generated with Claude Code

The hosted relay is closed. `DEFAULT_SERVER` is deleted rather than
repointed, because a default naming a host that no longer answers is worse
than no default at all: it turns "you have not configured a relay" into a
TLS failure against somebody else's DNS, at a hostname this project no
longer controls.

Entry 8 is the reason it cannot simply be corrected in place. It argued for
a stable API hostname precisely because the value is compiled in — so every
binary already installed keeps reaching for it until its owner installs a
new one. What entry 8 wanted, it can no longer have; the honest response is
to stop shipping a guess. Recorded as decisions.md entry 16, which
supersedes entry 8 rather than rewriting it.

What this changes for a person:

- `--server` and `DROP_SERVER` have no default. Unset, and empty, both mean
  no relay.
- `--transport relay` without one is an error, raised before the payload is
  read, because being told the relay is missing is worth nothing after a
  wait to compress a directory.
- `auto` without one is peer-to-peer that says so rather than falling back
  to nowhere. `may_fall_back` now takes the configured relay so it can tell
  *no relay configured* from *`--transport p2p` forbids falling back* —
  they were one branch before, and a person who never asked for `p2p`
  should not be told their transport forbids a fallback they did not
  choose.

It also costs the one thing the relay was still for: a browser cannot speak
QUIC and can only meet a CLI at a relay, so browser transfers now need an
operator to run one. Stated in `--help` rather than discovered.

The help's OPTIONS block is regrouped while it is being edited. It listed
`-h` and `-V`, which work alone, beside `-s` and `-t`, which do not, with
no way to tell them apart — so `drop -s` answered "unknown command `-s`"
about an option that exists.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@op-q
op-q merged commit f2c67cf into feat/netlab Sep 10, 2026
4 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant