How agentconnect-md/agentconnect works
Purpose and topology
AgentConnect is a daemon-centric, self-hostable platform for running ACP-compatible AI agents from collaboration channels, GitHub events, webhooks, schedules, and webchat. It separates a management/control plane from edge execution so agent workspaces, runtime credentials, live messages, and sessions remain in the operator’s environment. Core deployment definitions are compose.yaml, deploy/k8s/30-deployment.yaml, and charts/operator/templates/operator-deployment.yaml.
User and operational entry points
The stable agentconnect CLI installs, starts, recovers, upgrades, and delegates to the local daemon; its command entry is packages/cli/src/index.ts, with daemon service lifecycle in packages/cli/src/service/index.ts. The daemon executable begins at packages/daemon/src/index.ts and assembles the long-running edge process in packages/daemon/src/daemon.ts. The management console is a Next.js application rooted at packages/web/src/app/layout.tsx; organization-scoped console routes are under packages/web/src/app/(app)/[slug].
Control Plane: authoritative coordination boundary
The Control Plane owns organizations, identities, agent configuration, placement, access policy, integrations, audit/usage metadata, and API/WebSocket interfaces. HTTP application/server composition is in packages/control-plane/src/app.ts and packages/control-plane/src/http/server.ts; daemon gateway handling is in packages/control-plane/src/ws/gateway.ts. It does not ordinarily persist message bodies or ACP streams: it coordinates and pushes configuration to daemons.
Persistence, identity, and secrets
PostgreSQL/Prisma backs multi-tenant coordination state and repositories, modeled in packages/control-plane/prisma/schema.prisma and accessed through packages/control-plane/src/persistence/prisma.ts. HTTP auth and organization scoping form the main request boundary in packages/control-plane/src/http/plugins/auth.ts and packages/control-plane/src/http/org-scope.ts. Secret handling is explicitly separated through encrypted/brokered providers in packages/control-plane/src/secrets/secretsBroker.ts and packages/control-plane/src/secrets/vault-transit.ts; Logto is supported for hosted/local authentication via compose.logto.yaml.
Daemon execution and session pipeline
A daemon maintains Control Plane connectivity, reconciles assigned agents/configuration, receives platform events, selects an agent/session, and runs the configured runtime locally or in Kubernetes. Session ownership and transcript/turn handling live in packages/daemon/src/session/session-manager.ts and packages/daemon/src/session/transcript-recorder.ts. ACP runtime launch/sandbox boundaries are implemented in packages/daemon/src/acp/acp-host.ts and packages/daemon/src/acp/runtime-launch.ts; runtime selection, credentials, and model discovery are in packages/daemon/src/runtimes/registry.ts.
Messaging, routing, and integration data plane
Platform adapters normalize and render Slack, Telegram, Discord, Feishu, and GitHub traffic, with shared dispatch contracts in packages/daemon/src/platforms/registry.ts and routing rules in packages/daemon/src/router/routing-table.ts. The optional Relay accepts callback/webchat ingress and forwards it to the owning daemon without durable message storage; its server is packages/relay/src/server.ts, ingress manager is packages/relay/src/relay-ingress-manager.ts, and webchat routing is packages/relay/src/webchat-router.ts. Shared daemon–relay–Control Plane frame contracts are defined in packages/protocol/src/index.ts and packages/protocol/src/frames.
Agent capabilities and infrastructure extensions
Agents receive per-agent workspace, Git policy, skills, MCP tools, memory, runtime, and sandbox policy. Workspace/Git execution is bounded by packages/daemon/src/workspace/workspace-manager.ts and packages/daemon/src/workspace/git-origin-policy.ts; MCP injection/control is in packages/daemon/src/mcp/bridge.ts. Memory supports native, managed, and external providers through packages/daemon/src/agents/memory-provider.ts, with Mem0 Cloud/OSS implemented by packages/memory-plugin-mem0/src/server.ts. Kubernetes placement/runtime-pool support spans packages/daemon/src/k8s/runtime-plane.ts and the controller in packages/operator/src/controller.ts.
Main entry points: daemon.ts Edge daemon · server.ts Control Plane API · registry.ts Runtime registry · acp-host.ts ACP host
Components 23
Entry Points
- agentconnect CLI · Installs and delegates lifecycle operations to the local daemon.
packages/cli/src/index.ts - Daemon service lifecycle
packages/cli/src/service/index.ts
Control Plane
Authoritative coordination and policy boundary.
- Control Plane API · Management API and application composition.
packages/control-plane/src/http/server.ts - Auth & org scope · Authenticates requests and establishes tenant scope.
packages/control-plane/src/http/plugins/auth.ts - Daemon gateway · Coordinates connected daemons and configuration delivery.
packages/control-plane/src/ws/gateway.ts - Coordination store · Multi-tenant organizations, agents, placement, policy, and audit metadata.
packages/control-plane/prisma/schema.prisma - Secrets broker · Encrypted and brokered runtime credentials.
packages/control-plane/src/secrets/secretsBroker.ts
Edge Execution
Operator-local daemon execution and agent data plane.
- Edge daemon · Reconciles assignments and runs agent work in the operator environment.
packages/daemon/src/daemon.ts - Agent routing · Selects agent and session for normalized events.
packages/daemon/src/router/routing-table.ts - Session manager · Owns sessions, turns, and transcripts locally.
packages/daemon/src/session/session-manager.ts - Runtime registry · Selects runtimes, credentials, and models.
packages/daemon/src/runtimes/registry.ts - ACP host · Launches and hosts ACP-compatible agent runtimes.
packages/daemon/src/acp/acp-host.ts - Workspace & Git policy · Provides per-agent workspaces with bounded Git access.
packages/daemon/src/workspace/workspace-manager.ts - MCP bridge
packages/daemon/src/mcp/bridge.ts
Ingress & Clients
- Management Console · Organization-scoped management UI.
packages/web/src/app/layout.tsx - Collaboration platforms · Slack, Telegram, Discord, Feishu, and GitHub events.
packages/daemon/src/platforms/registry.ts - Relay ingress · Forwards callback and webchat ingress to the owning daemon.
packages/relay/src/server.ts - Webchat routing
packages/relay/src/webchat-router.ts
Extensions & Infrastructure
- Agent memory · Supports native, managed, and external memory providers.
packages/daemon/src/agents/memory-provider.ts - Mem0 provider · Mem0 Cloud and OSS integration.
packages/memory-plugin-mem0/src/server.ts - Kubernetes runtime plane · Supports Kubernetes runtime pools.
packages/daemon/src/k8s/runtime-plane.ts - Kubernetes operator · Reconciles Kubernetes runtime infrastructure.
packages/operator/src/controller.ts - Shared frame protocol · Daemon, Relay, and Control Plane frame contracts.
packages/protocol/src/index.ts
Connections 26
- agentconnect CLI → Daemon service lifecycle: manages
- Daemon service lifecycle → Edge daemon: starts / recovers
- Management Console → Control Plane API: management API
- Control Plane API → Auth & org scope: applies
- Auth & org scope → Coordination store: scoped access
- Control Plane API → Coordination store: coordination state
- Control Plane API → Secrets broker: brokers credentials
- Edge daemon → Daemon gateway: persistent connection
- Daemon gateway → Coordination store: assignments / config
- Collaboration platforms → Edge daemon: adapter events
- Relay ingress → Webchat routing: webchat ingress
- Webchat routing → Edge daemon: forwards to owner
- Edge daemon → Agent routing: dispatches events
- Agent routing → Session manager: agent session
- Session manager → Runtime registry: selects runtime
- Runtime registry → ACP host: launches
- ACP host → Workspace & Git policy: agent workspace
- ACP host → MCP bridge: tool access
- ACP host → Agent memory: memory access
- Agent memory → Mem0 provider: external provider
- Runtime registry → Secrets broker: runtime credentials
- Runtime registry → Kubernetes runtime plane: Kubernetes placement
- Kubernetes runtime plane → Kubernetes operator: runtime resources
- Edge daemon → Shared frame protocol: uses frames
- Relay ingress → Shared frame protocol: uses frames
- Daemon gateway → Shared frame protocol: uses frames