Architecture¶
Overview¶
ATL-E runs on the Automate-E runtime — the same generic engine that powers all Dashecorp agents. It uses the GitHub MCP server for all GitHub interactions and Claude Haiku for decision-making.
graph TB
subgraph "ATL-E Namespace (atl-e)"
GW[Gateway<br/>Discord + Webhooks]
W1[Worker 1<br/>Agent loop + MCP]
W2[Worker 2<br/>Agent loop + MCP]
R[Redis<br/>Message queue]
CF[Cloudflared<br/>Tunnel]
CJ[CronJob<br/>Every hour]
PG[(Postgres<br/>Memory)]
KB[Kanban<br/>Board]
end
DC[Discord #admin] <--> GW
GH[GitHub<br/>9 repos] -->|Webhooks| GW
GW -->|Redis Stream| R
R --> W1
R --> W2
W1 --> MCP1[GitHub MCP<br/>26 tools]
W2 --> MCP2[GitHub MCP<br/>26 tools]
MCP1 --> GH
MCP2 --> GH
W1 -->|REST API| DC
W2 -->|REST API| DC
W1 <--> PG
W2 <--> PG
CJ -->|Discord Webhook| DC
CJ --> MCP3[GitHub MCP]
MCP3 --> GH
CJ <--> PG
CF --> DASH[atl-e.dashecorp.com]
CF --> KB
KB -->|GitHub API| GH
W1 <--> CLAUDE[Claude Haiku]
W2 <--> CLAUDE
CJ <--> CLAUDE
Deployment Resources¶
Deployed via ArgoCD multi-source (Helm chart from automate-e repo, values from atl-agent repo):
| Resource | Purpose |
|---|---|
Deployment atl-e-automate-e-gateway |
Discord connection + dashboard |
Deployment atl-e-automate-e-worker (2 replicas) |
Agent loop with GitHub MCP |
StatefulSet atl-e-automate-e-redis |
Message queue for split mode |
CronJob atl-e-automate-e-cron |
Scheduled checks every hour |
Deployment atl-e-automate-e-cloudflared |
Tunnel to atl-e.dashecorp.com |
ConfigMap atl-e-automate-e-character |
Character config |
Service atl-e-automate-e |
Dashboard port 3000 |
StatefulSet postgres |
Persistent memory (conversations, facts) |
Deployment kanban |
Kanban board at kanban.dashecorp.com |
Service kanban |
Kanban HTTP port 8080 |
Migration from TypeScript¶
| Aspect | Before (TypeScript) | After (Automate-E) |
|---|---|---|
| Rules | 8 hardcoded functions | Character prompt |
| GitHub | Octokit REST client | GitHub MCP server (26 tools) |
| Discord | Webhook-only (write) | Bot (read + write) + webhook (cron) |
| State | JSON file on NFS | Postgres persistent memory (facts across runs) |
| Scaling | Single pod CronJob | Gateway + 2 workers + Redis |
| Code | ~2000 lines TypeScript | 0 lines (config only) |
| Cost | Free (API calls only) | ~$2-4/day (Claude Haiku) |
| Flexibility | Code change + rebuild | Edit character prompt |
Kanban Dashboard¶
URL: kanban.dashecorp.com
Standalone Node.js service that fetches issues from all 9 monitored repos and renders a kanban board with columns: Backlog, Ready, In Progress, In Review, Done (24h).
- Queries GitHub API via
GITHUB_PERSONAL_ACCESS_TOKEN - Categorizes issues by labels (
agent-ready,in-progress,in-review) - Shows assigned agents, linked PRs, priority badges
- 30s API cache to avoid rate limits
- Auto-refreshes every 60s
- Deployed as separate pod in
atl-enamespace, exposed via Cloudflare Tunnel