fix(smolmachines): docker push fails on Docker Desktop — daemon-side route differs from host loopback #74
@@ -38,9 +38,16 @@ def provision_supervise(plan: SmolmachinesBottlePlan, target: str) -> None:
|
|||||||
return
|
return
|
||||||
url = plan.agent_supervise_url
|
url = plan.agent_supervise_url
|
||||||
info(f"registering supervise MCP server in agent claude config → {url}")
|
info(f"registering supervise MCP server in agent claude config → {url}")
|
||||||
|
# `claude mcp add --scope user` writes to ~/.claude.json. The
|
||||||
|
# agent is the `node` user; smolvm machine_exec runs as root
|
||||||
|
# by default, so we have to switch user explicitly and set
|
||||||
|
# HOME so the config lands in /home/node/.claude.json (where
|
||||||
|
# the agent's claude actually reads it from).
|
||||||
r = _smolvm.machine_exec(
|
r = _smolvm.machine_exec(
|
||||||
target,
|
target,
|
||||||
[
|
[
|
||||||
|
"runuser", "-u", "node", "--",
|
||||||
|
"env", "HOME=/home/node",
|
||||||
"claude", "mcp", "add",
|
"claude", "mcp", "add",
|
||||||
"--scope", "user",
|
"--scope", "user",
|
||||||
"--transport", "http",
|
"--transport", "http",
|
||||||
|
|||||||
@@ -487,11 +487,15 @@ class TestProvisionSupervise(unittest.TestCase):
|
|||||||
_supervise.provision_supervise(plan, "claude-bottle-demo-abc12")
|
_supervise.provision_supervise(plan, "claude-bottle-demo-abc12")
|
||||||
ex.assert_called_once()
|
ex.assert_called_once()
|
||||||
argv = ex.call_args.args[1]
|
argv = ex.call_args.args[1]
|
||||||
# claude mcp add --scope user --transport http supervise <url>
|
# `claude mcp add --scope user` writes to ~/.claude.json,
|
||||||
# — URL is the agent-side endpoint (host loopback +
|
# and the agent is the `node` user — switch UID + set
|
||||||
# discovered port), not the docker bridge IP.
|
# HOME so the config lands in /home/node/.claude.json,
|
||||||
|
# not root's. URL is the agent-side endpoint (host
|
||||||
|
# loopback + discovered port), not the docker bridge IP.
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[
|
[
|
||||||
|
"runuser", "-u", "node", "--",
|
||||||
|
"env", "HOME=/home/node",
|
||||||
"claude", "mcp", "add",
|
"claude", "mcp", "add",
|
||||||
"--scope", "user",
|
"--scope", "user",
|
||||||
"--transport", "http",
|
"--transport", "http",
|
||||||
|
|||||||
Reference in New Issue
Block a user