Architecture
How Agentbot is built. A reference for contributors, self-hosters, and anyone who wants to understand the system.System Overview
Components
Frontend (Vercel)
Stack: Next.js 16 (App Router) + React 19 + Tailwind CSS v4 The web dashboard, onboarding flow, billing, and all user-facing pages. Deployed on Vercel with automatic Git-based deploys. Key directories:web/app/— Pages and API routesweb/app/api/— Server-side API proxies (provision, billing, auth)web/app/components/— Shared UI componentsweb/app/lib/— Utilities (auth, Stripe, security)
Backend (Render)
Stack: Express.js + TypeScript The core API server. Handles agent provisioning, deployments, A2A communication, and skill management. Key services:POST /api/provision— Create new agents (public, no auth)POST /api/deployments— Deploy agent containers (auth required)GET /api/agents— List and manage agentsPOST /api/ai/*— AI provider proxy (OpenRouter, Anthropic, etc.)GET /api/browse/*— File explorer (tree, read, write, git sync)GET /api/logs/:agentId/stream— Live log tail (SSE)GET /api/usage/*— Usage tracking (tokens, costs, tool metrics)
Worker service (Render)
A standalone background job processor built on BullMQ. It connects to the same Redis instance used by the backend and processes jobs from two queues:| Queue | Job types | Concurrency |
|---|---|---|
tasks | scheduled-task — cron jobs per agent | 5 |
skill-execution — run a skill on behalf of an agent | ||
provision | new-agent — provision a new agent asynchronously | 2 |
- A2A message routing between agents
- Webhook processing (Stripe, Telegram, Discord)
SIGTERM and drains in-flight jobs before shutting down.
Database (Neon PostgreSQL)
Stores:- User accounts and authentication
- Agent configurations and metadata
- Billing, subscriptions, and usage tracking
- Skill marketplace data
- A2A message history
Cache (Redis)
Used for:- Rate limiting
- Session management
- Real-time agent status
- A2A message queues
- Webhook deduplication
AI Layer (Ollama + BYOK)
Two modes:- Ollama (self-hosted): Local inference for self-hosted deployments (Llama 3, Mistral)
- BYOK: Users bring their own API keys for OpenRouter, Anthropic, OpenAI, Google, or Groq
Watchdog
Monitors agent gateway processes for health and auto-recovers from failures:| Capability | Details |
|---|---|
| Health checks | Every 2 minutes (configurable via WATCHDOG_CHECK_INTERVAL) |
| Crash detection | Listens for gateway exit events |
| Crash-loop detection | 3 crashes in 5-minute window |
| Auto-repair | Kill → wait 5s → restart → verify health (max 2 attempts) |
| Notifications | Telegram + Discord alerts for crashes, repairs, and recovery |
| Degraded state | 5-second retry interval when health check fails |
File Explorer + Git Sync
Browser-based workspace management — no SSH needed:- File tree: Recursive directory listing with depth control
- Read/Write: View and edit files inline (1MB limit)
- Git status: See uncommitted changes
- Git diff: Per-file or full workspace diffs
- Git sync: One-click commit + push to GitHub
- Git log: Browse recent commit history
Usage Tracker
SQLite-backed token and cost tracking per agent, model, and time period:- Per-event recording (session, agent, provider, model, tokens, cost)
- Daily aggregation with upsert
- Tool event monitoring (success rate, duration)
- Query APIs: summary, by-agent, by-model, daily totals
A2A Bus (Agent-to-Agent)
Enables agents to communicate directly:- Request/response patterns
- Fire-and-forget messages
- Skill delegation between agents
- Cross-tenant isolation enforced
Data Flow: Agent Provisioning
Data Flow: Agent Runtime
Self-Hosting
Agentbot is fully open source. To self-host:- Frontend: Deploy
web/to Vercel or any Next.js-compatible host - Backend: Run
agentbot-backend/on any Docker-capable server - Worker: Run the worker entry point from
agentbot-backend/usingDockerfile.worker - Database: Neon Postgres (free tier available) or any PostgreSQL 15+
- Redis: Any Redis 7+ instance
- AI: Ollama for local inference, or configure BYOK providers
Tech Decisions
| Choice | Why |
|---|---|
| Next.js 16 | App Router, server components, Vercel-native DX |
| Express (not serverless) | Long-running agent processes need persistent connections |
| Neon Postgres | Serverless, scales to zero, generous free tier |
| Redis | Fast rate limiting and session management |
| Docker | Isolated agent environments per user |
| BYOK over reselling | Users pay providers directly — no markup, no lock-in |
| Base (not Ethereum) | Low fees, fast finality, Coinbase ecosystem |