catalogue: give host-network containers the mesh's names too #16

Merged
jschoubben merged 1 commits from feat/usage-store into main 2026-09-07 02:08:19 +00:00
Owner

A container with network: host was skipped when the mesh injects its <node>.internal names, on the belief it "shares the machine's hosts file already". It does not: docker run --network host still gives the container its own /etc/hosts (localhost + its own id only), so every internal name the mesh wrote is invisible inside it, and a client that dials one gets EAI_AGAIN.

Surfaced by the first host-network consumer to dial a provider by the .internal address the mesh hands it as ${bound:...:at} (the model-usage store reaching its postgres). The remedy is the same --add-host every other container already gets — the runtime accepts it with --network host (verified against Docker), and mesh-host emits it for any network mode. The names_test case that asserted the skip is inverted to assert the injection.

A container with `network: host` was skipped when the mesh injects its `<node>.internal` names, on the belief it "shares the machine's hosts file already". It does not: `docker run --network host` still gives the container its own `/etc/hosts` (localhost + its own id only), so every internal name the mesh wrote is invisible inside it, and a client that dials one gets `EAI_AGAIN`. Surfaced by the first host-network consumer to dial a provider by the `.internal` address the mesh hands it as `${bound:...:at}` (the model-usage store reaching its postgres). The remedy is the same `--add-host` every other container already gets — the runtime accepts it with `--network host` (verified against Docker), and mesh-host emits it for any network mode. The names_test case that asserted the skip is inverted to assert the injection.
jschoubben added 1 commit 2026-09-07 02:08:03 +00:00
A container with `network: host` was skipped when the mesh injects its
`<node>.internal` names, on the belief it "shares the machine's hosts file
already". It does not: `docker run --network host` still gives the container
its own /etc/hosts (localhost and its own id only), so every internal name the
mesh wrote is invisible inside it, and a client that dials one gets EAI_AGAIN.

This surfaced with the first host-network consumer to dial a provider by the
`.internal` address the mesh hands it as `${bound:...:at}` (the model-usage
store reaching its postgres). The remedy is the same `--add-host` every other
container already gets — the runtime accepts it with `--network host`
(verified against Docker) and mesh-host emits it for any network mode.

Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
jschoubben merged commit e03833ec40 into main 2026-09-07 02:08:19 +00:00
jschoubben deleted branch feat/usage-store 2026-09-07 02:08:19 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#16