Skip to content

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-e namespace, exposed via Cloudflare Tunnel