Phase B: Agent registers routes with mc-proxy on deploy #2

Merged
kyle merged 2 commits from phase-b-route-registration into master 2026-03-27 08:36:25 +00:00
Owner

Summary\n\n- Agent connects to mc-proxy via Unix socket and registers/removes routes automatically\n- Deploy: after container starts, registers routes with mc-proxy using assigned host ports\n- Stop: removes routes from mc-proxy before stopping containers\n- Config: [mcproxy] socket and cert_dir fields in agent config\n- Nil-safe: if socket not configured, route registration is silently skipped\n\n## Changes\n\n- internal/agent/proxy.goProxyRouter wrapping mc-proxy client library\n- internal/agent/proxy_test.go — tests for listener mapping, nil safety\n- internal/agent/agent.go — wire ProxyRouter into Agent, connect on startup\n- internal/agent/deploy.go — register routes after container starts\n- internal/agent/lifecycle.go — remove routes before container stops\n- internal/config/agent.goMCProxyConfig with socket and cert_dir\n- go.mod — add mc-proxy v1.0.0 dependency\n\n## Design\n\n- L7 routes: mc-proxy terminates TLS using certs at <cert_dir>/<service>.pem\n- L4 routes: TLS passthrough (backend_tls=true), backend handles its own TLS\n- Hostnames default to <service>.svc.mcp.metacircular.net\n- Route registration failures are logged but don't fail the deploy\n\n## Test plan\n\n- [x] TestListenerForMode — port→listener address mapping\n- [x] TestNilProxyRouterIsNoop — all methods safe on nil receiver\n- [x] TestRegisterRoutesSkipsZeroHostPort — zero host ports skipped\n- [x] All existing tests pass

## Summary\n\n- Agent connects to mc-proxy via Unix socket and registers/removes routes automatically\n- Deploy: after container starts, registers routes with mc-proxy using assigned host ports\n- Stop: removes routes from mc-proxy before stopping containers\n- Config: `[mcproxy] socket` and `cert_dir` fields in agent config\n- Nil-safe: if socket not configured, route registration is silently skipped\n\n## Changes\n\n- `internal/agent/proxy.go` — `ProxyRouter` wrapping mc-proxy client library\n- `internal/agent/proxy_test.go` — tests for listener mapping, nil safety\n- `internal/agent/agent.go` — wire ProxyRouter into Agent, connect on startup\n- `internal/agent/deploy.go` — register routes after container starts\n- `internal/agent/lifecycle.go` — remove routes before container stops\n- `internal/config/agent.go` — `MCProxyConfig` with socket and cert_dir\n- `go.mod` — add mc-proxy v1.0.0 dependency\n\n## Design\n\n- L7 routes: mc-proxy terminates TLS using certs at `<cert_dir>/<service>.pem`\n- L4 routes: TLS passthrough (`backend_tls=true`), backend handles its own TLS\n- Hostnames default to `<service>.svc.mcp.metacircular.net`\n- Route registration failures are logged but don't fail the deploy\n\n## Test plan\n\n- [x] `TestListenerForMode` — port→listener address mapping\n- [x] `TestNilProxyRouterIsNoop` — all methods safe on nil receiver\n- [x] `TestRegisterRoutesSkipsZeroHostPort` — zero host ports skipped\n- [x] All existing tests pass
kyle added 2 commits 2026-03-27 08:35:35 +00:00
Extends MCP to own the full build-push-deploy lifecycle. When deploying,
the CLI checks whether each component's image tag exists in the registry
and builds/pushes automatically if missing and build config is present.

- Add Build, Push, ImageExists to runtime.Runtime interface (podman impl)
- Add mcp build <service>[/<image>] command
- Add [build] section to CLI config (workspace path)
- Add path and [build.images] to service definitions
- Wire auto-build into mcp deploy before agent RPC
- Update ARCHITECTURE.md with runtime interface and deploy auto-build docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The agent connects to mc-proxy via Unix socket and automatically
registers/removes routes during deploy and stop. This eliminates
manual mcproxyctl usage or TOML editing.

- New ProxyRouter abstraction wraps mc-proxy client library
- Deploy: after container starts, registers routes with mc-proxy
  using host ports from the registry
- Stop: removes routes from mc-proxy before stopping container
- Config: [mcproxy] section with socket path and cert_dir
- Nil-safe: if mc-proxy socket not configured, route registration
  is silently skipped (backward compatible)
- L7 routes use certs from convention path (<cert_dir>/<service>.pem)
- L4 routes use TLS passthrough (backend_tls=true)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
kyle merged commit c28562dbcf into master 2026-03-27 08:36:25 +00:00
kyle deleted branch phase-b-route-registration 2026-03-27 08:36:26 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mc/mcp#2