Repository navigation
feat(moq-auth)!: remove mesh enrollment, and move mesh plans to Kixel - #8756
Conversation
Mesh work moves to the downstream Kixel product, which has its own certificate-based enrollment contract, so the JWT mesh coordinator here has no consumer. Public API: `moq_auth::mesh` (Coordinator, Client, Config, and the contract types), `serve::Server::with_mesh`, and `Error::Mesh` and `Error::MeshState` are removed. The CLI loses `moq auth mesh` and every `moq auth serve --mesh-*` flag and `[mesh]` file setting. None of it shipped on `release`, so no migration is needed. The unreleased "Mesh endpoints use the signing public key" note in rs/moq-auth/MIGRATE.md describes removed API; only the release cut edits MIGRATE.md, so the cut should drop it. moq-auth no longer enables moq-crypto's `serde` or url's `serde` features, which only the mesh used. Wire: none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
moq keeps what a large live-media platform would use; mesh work moves to Kixel, which plans and builds it in kixel-ai/kixel.ai. This deletes the mesh epic (relay node, Endpoint, address hints, sparse overlay, status track, certificate credentials), its m2 contract quests, the parked mesh guide, JS enrollment, ICE, and keys quests, the teleop questline, link quality, the certificate challenge, and the stored signing key quest, plus the teleoperation use-case guide and its moq-json example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. WalkthroughThe change removes mesh enrollment from moq-auth, including its public API, client, coordinator, server routes, and CLI settings and commands. It deletes related mesh plans and documentation, with planning notes identifying Kixel as the destination for mesh work. It also removes teleoperation documentation and a moq-json example, and updates a snapshot producer documentation example to pass a timestamp. Merge Risk:
|
There was a problem hiding this comment.
ℹ️ No code issues. One wording fix in the quest record, inline.
Reviewed changes
I reviewed both commits: the removal of moq_auth::mesh and its CLI surface, plus the quest and doc moves to Kixel.
moq_auth::meshremoved.src/mesh/,Server::with_mesh,Error::Mesh/MeshState, and theserdefeatures onmoq-crypto/urlare gone.fs::write_privatebecomes private. The secret-guard test now covers onlyPOST /.moq auth meshand--mesh-*removed.MeshServe,MeshSettings,coordinator(), the mesh listener, and the[mesh]file settings are deleted.restart_onlynow compares only the listener and its secret.- Teleoperation removed. The use-case page, its sidebar and index entries, the
moq-jsonteleopexample with its[[example]]entry, and the MoQ Boy aside are deleted. - Quests moved to Kixel. The m2 mesh contract quests, the m3 mesh epic, m4
cert-challenge/crypto-key-load, and the m5 mesh/teleop/link-quality quests are deleted. Inbound links now read as prose.
Checks I ran on this head:
cargo check -p moq-auth --all-targets --all-featuresandcargo check -p moq-cli --bin moq --testsboth pass with no warnings.- A
git grepfor the deleted quest slugs,use-case/teleoperation,examples/teleop,moq_auth::mesh,with_mesh,auth mesh, andmesh-urlfinds only thers/moq-auth/MIGRATE.mdnote the Impact section already flags. js/authhas no mesh counterpart to remove.
claude-opus-5-5 | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # quest/m2/README.md
Applies Pullfrog's suggestion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # quest/m3/mesh/README.md
There was a problem hiding this comment.
✅ No new issues found. The earlier wording fix is in.
Reviewed changes
This run covered the commits since 3b7e4b4: the applied quest wording fix and a merge of main.
- Fixed the
quest/m3/README.mdrecord. It now says only the mesh libraries left for Kixel, and byte streams stay in m1. The text matches the suggestion exactly. - Merged
origin/main. The only change in this PR's files is inquest/m2/README.md, where thefirst-publish-versionslink is gone.mainhad already removed it, and the file no longer exists.
A grep at a09b65a for the deleted quest slugs, use-case/teleoperation, examples/teleop, moq_auth::mesh, and with_mesh still turns up only the rs/moq-auth/MIGRATE.md note the Impact section mentions, plus the prose in quest/m2/README.md.
claude-opus-5-5 | 𝕏
There was a problem hiding this comment.
✅ No new issues found. The new commit is only a merge of
main.
Reviewed changes
This run covered the changes since a09b65a.
- Merged
origin/main.main(#8702) had already deletedquest/m5/teleop-{robot,arbitration,mavlink,proof}.mdand the teleoperation link in the mesh README, so those deletions drop out of this PR's diff.
A git grep at 843f72b for the deleted quest slugs, use-case/teleoperation, examples/teleop, with_mesh, and moq_auth::mesh finds two things. One is the rs/moq-auth/MIGRATE.md note, which the Impact section already mentions. The other is the prose in quest/m2/README.md.
claude-opus-5-5 | 𝕏
# Conflicts: # quest/m2/README.md
|
quest land watch: the merge queue removed this pull request at 843f72b because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
There was a problem hiding this comment.
✅ No new issues found. The new commit only merges
main.
Reviewed changes
This run covered the changes since 843f72b.
- Merged
origin/main.maindeletedquest/m2/usage-derive-settings.md, so the merge turned the link to it inquest/m2/README.mdinto plain text.
A git grep at c259c3f finds no leftover references to the deleted quests, docs, or example. moq_auth::mesh still appears only in the rs/moq-auth/MIGRATE.md note, which the PR's Impact section already mentions.
claude-opus-5-5 | 𝕏
|
codex, gpt-6.1-sol, medium effort land fixer note:
(written by codex, gpt-6.1-sol, medium effort) |
|
quest land watch: the merge queue removed this pull request at c259c3f because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
# Conflicts: # quest/m2/README.md # quest/m3/mesh/README.md # quest/m3/mesh/endpoint.md
There was a problem hiding this comment.
✅ No new issues found. The new commit only merges
main.
Reviewed changes
This run covered the changes since c259c3f.
- Merged
origin/main.maindeletedquest/m2/auth-key-validation.md,quest/m2/api-capture-fences.md, andquest/m1/stream/rust.md. The merge turned their links inquest/m2/README.mdinto plain text, and the deleted mesh quests no longer link to them.
A git grep at e9700c7 finds no leftover references to the deleted quests, docs, or example. moq_auth::mesh still appears only in the rs/moq-auth/MIGRATE.md note, which the Impact section already mentions.
claude-opus-5-5 | 𝕏
|
codex, gpt-6.1-sol, medium effort land fixer note:
(written by codex, gpt-6.1-sol, medium effort) |
|
quest land watch: the merge queue removed this pull request at e9700c7 because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
|
codex, gpt-6.1-sol, medium effort land fixer note:
(written by codex, gpt-6.1-sol, medium effort) |
|
codex, gpt-6.1-sol, medium effort land fixer: CONFLICT (modify/delete): quest/m3/mesh/README.md deleted in e9700c7c4854a35b573474b895fed194354b6e96 and modified in HEAD. Version HEAD of quest/m3/mesh/README.md left in tree. CONFLICT (modify/delete): quest/m5/mesh-ice.md deleted in e9700c7c4854a35b573474b895fed194354b6e96 and modified in HEAD. Version HEAD of quest/m5/mesh-ice.md left in tree. Auto-merging rs/moq-auth/Cargo.toml Auto-merging rs/moq-auth/src/lib.rs Automatic merge failed; fix conflicts and then commit the result. (written by codex, gpt-6.1-sol, medium effort) |
# Conflicts: # quest/m1/stream/README.md # quest/m2/README.md # quest/m3/README.md # quest/m3/mesh/README.md # quest/m3/mesh/endpoint.md # quest/m5/mesh-ice.md # rs/moq-json/examples/teleop.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found. The new commits merge
mainand fix one doc example.
Reviewed changes
This run covered the changes since e9700c7.
- Merged
origin/main.maindeletedquest/m1/stream/andquest/m4/p2p/. The merge turned links to them inquest/m3/README.md,quest/m3/cluster-routing/README.md, and the deleted mesh quests into plain text.quest/m2/README.mdnow takesmain's list of fences. - Fixed the
mutatedoc example. Thesnapshot::Producer::mutateexample now passes amoq_net::Timestamp, which matchesmutate(f, at: moq_net::Timestamp).
A git grep at 082fdb6 finds no leftover references to the deleted quests, docs, or example. moq_auth::mesh still appears only in the rs/moq-auth/MIGRATE.md note the Impact section mentions and in the prose in quest/m2/README.md.
claude-opus-5-5 | 𝕏

Summary
moq keeps what a large live-media platform would use; mesh networking moves to Kixel, which plans and builds it in kixel-ai/kixel.ai (decided by the maintainer 2026-11-14). Kixel's coordinator already has its own certificate-based enrollment contract and uses nothing from
moq_auth::mesh, so the module has no consumer left.moq_auth::mesh(contract types,Client,Coordinator, theSignertrait),Server::with_mesh, andError::Mesh/MeshState.moq auth meshand every--mesh-*flag and[mesh]setting onmoq auth serve.doc/bin/relay/auth.mdand the mesh bullet indoc/lib/rs/moq-auth.md.AGENTS.mdsays to ask before planning or building work a large live-media platform would not use, which belongs to Kixel (approved by the maintainer).LAN cluster discovery (
--cluster-lan), outbound federation, and the MoQ Boy and CARLA demos stay.Supersedes moq-dev/moq#8746, moq-dev/moq#8748, and moq-dev/moq#8750, which change the removed module.
Impact
Public API: breaking.
moq_auth::meshandServer::with_meshare gone, and moq-cli losesmoq auth meshand--mesh-url,--mesh-listen,--mesh-key,--mesh-relay,--mesh-state, and--mesh-token-ttl. None of it is onrelease, so no published user migrates. The release cut should drop the Unreleasedrs/moq-auth/MIGRATE.mdnote aboutmoq_auth::mesh::EndpointId, which the MIGRATE check keeps edits out of until then. Wire: none.Validation
just checkin the dev shell passes on the combined branch (Rust lint and 14092 Rust tests, JS, docs, quest, nix, and the rest of the changed modules).quest check: 484 documents ok.A grep outside
quest/formoq_auth::mesh,moq auth mesh, andmesh-enrollmentfinds only the MIGRATE.md note above.the_secret_guards_every_routeused the mesh admin route; it now checks the same secret handling onPOST /.2026-11-15 merge of main (redoing the land fixer's unpushed resolution): kept this PR's deletions of
quest/m3/mesh/README.md,quest/m3/mesh/endpoint.md,quest/m5/mesh-ice.md, andrs/moq-json/examples/teleop.rsover main's edits; took main's deletion ofquest/m1/stream/README.md(byte streams moved to Kixel); merged thequest/m2/README.mdandquest/m3/README.mdprose, keeping main's finished fences and dropping links to deleted quests.just checkpasses on the merge.cargo test -p moq-json --docfails on main:snapshot::Producer::mutate's example still passesNonefor theTimestampthat feat(moq-net)!: address groups by their start #8638 made required. Fixed here (one line), since this PR changes moq-json.Decisions
Taken while the maintainer was away, each undoable by a later review:
Follow-ups
None. moq-crypto's
serdefeature now has no user in the workspace; it stays, since downstream may still enable it.Models
Size: M
Implementer: Claude Code, claude-opus-5-5, medium effort (iterate, M)
🤖 Generated with Claude Code
(Written by Opus 5.5)
Review
Rewritten by
quest reviewafter each round.Head: 082fdb6
Base: origin/main at 52732a0
Risk: high,
Removing the mesh library API can break downstream consumers that depend on it, requiring them to migrate or revert the removal.Classified: medium by default
Reviewer: Codex, gpt-6.1-sol, high effort
Session:
01a1dedf-1d75-71c3-80d1-6b1c642b4d7f, round 1Score: 9/10,
The removal is internally consistent with no actionable regressions or blocking defects identified, though builds and tests were not run as instructed.Rounds: 1; first round 0; findings 0: fixed 0, refuted 0, open 0
Findings: none
Reviewer: Codex, gpt-6.1-sol, medium effort, shadow
Session:
01a1dedf-1d75-7a40-81f3-ecb2e8d5a648, round 1Score: 9/10,
Source review found no actionable regressions or blockers, with mesh removal consistent across the library, CLI, and documentation, but builds and tests were not run as instructed.Raised the risk to high:
Removing the mesh library API can break downstream consumers that depend on it, requiring them to migrate or revert the removal.Rounds: 1; first round 0; findings 0: fixed 0, refuted 0, open 0
Findings: none