Skip to content

I2411 — A server whose mesh is enabled is reachable on the tailnet and the LAN, and only by a trusted peer

When the mesh is enabled, the shared server listens and advertises on the machine's tailnet and LAN addresses as well as loopback, so a trusted peer can dial it, while a request from a non-loopback address stays limited to what runtime-trust allows.

READY wave 0 · p0 · implementation profile · runs alone

Part of the-mesh-works-out-of-the-box — The mesh works out of the box: trusted machines find each other by every means and their sessions cooperate from the first turn.

Ready. Every dependency is done, so majordomus plan start I2411 will be accepted.

Objective

When the mesh is enabled, the shared server listens and advertises on the machine's tailnet and LAN addresses as well as loopback, so a trusted peer can dial it, while a request from a non-loopback address stays limited to what runtime-trust allows.

Why

The server binds 127.0.0.1 unless --host or MAJORDOMUS_HTTP_HOST says otherwise (apps/majordomus-cli/src/cli.rs:3355-3362) and advertises only loopback (mesh/address.rs:39-45), so two machines on default settings can never dial each other (docs/MESH.md:383-391). The hubs in this repository are servers started by hand on 0.0.0.0.

Current state

Cross-machine links exist only through hand-started hubs.

Desired state

After the remote-caller restrictions of I2123 (PR #860) land, a mesh-enabled server binds the addresses it advertises (tailnet and LAN, never a public interface), the advertised endpoints are the bound ones, and a non-loopback caller is held to the remote-caller rule.

Scope

  • apps/majordomus-cli/src/cli.rs
  • apps/majordomus-cli/src/shared.rs
  • apps/majordomus-cli/src/mesh/address.rs
  • docs/MESH.md
  • test/cases

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • A server started with the mesh enabled answers a trusted peer on its tailnet address with no --host
  • The same server refuses a write from a non-loopback caller, as runtime-trust requires
  • A server with the mesh disabled still binds loopback only

Validation

  • bin/majordomus plan validate
  • cargo test --test serve_lifecycle

Evidence required

  • mesh_server_reachable_on_tailnet_test

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2411.yaml. Read it back with majordomus plan show I2411.

Searches the titles and descriptions of every page this site publishes.