---
name: adk
description: A guide to build AI bots with Botpress's Agent Development Kit (ADK)
version: 1.0.0
author: yueranlu
tags: [botpress, adk, chatbot, ai, typescript]
homepage: https://github.com/botpress/adk
---
# Botpress ADK Development Guide
A comprehensive guide for building AI bots with the Botpress Agent Development Kit (ADK).
## When to Use
- User asks to build a Botpress bot or chatbot
- User mentions ADK, Agent Development Kit, or Botpress
- User wants to create actions, tools, workflows, conversations, tables, triggers, or knowledge bases
- User needs help with `adk` CLI commands (init, dev, deploy, link)
- User has ADK-related errors or needs troubleshooting
- User asks about bot configuration, state management, or integrations
## Quick Reference
The ADK is a **convention-based TypeScript framework** where **file structure maps directly to bot behavior**.
**Your role:** Guide users through the entire bot development lifecycle - from project setup to deployment. Use the patterns and code examples in this skill to write correct, working ADK code.
**Key principle:** In ADK, **where you put files matters**. Each component type has a specific `src/` subdirectory, and files are auto-discovered based on location.
## How to Use This Skill
**This skill is your primary reference for building Botpress bots.** When a user asks you to build something with the ADK:
1. **Identify what they need** - Is it a new bot, a feature (action, tool, workflow), data storage (table), or event handling (trigger)?
2. **Check the correct directory** - Each component type goes in a specific `src/` subdirectory
3. **Use the patterns below** - Follow the code examples exactly, they represent the correct ADK conventions
4. **Run `adk --help`** - For CLI commands not covered here, or `adk <command> --help` for specific help
**Decision Guide - What Component to Create:**
| User Wants To... | Create This | Location |
|------------------|-------------|----------|
| Handle user messages | Conversation | `src/conversations/` |
| Add a function the AI can call | Tool | `src/tools/` |
| Add reusable business logic | Action | `src/actions/` |
| Run background/scheduled tasks | Workflow | `src/workflows/` |
| Store structured data | Table | `src/tables/` |
| React to events (user created, etc.) | Trigger | `src/triggers/` |
| Give AI access to docs/data | Knowledge Base | `src/knowledge/` |
| Connect external service (Slack, etc.) | Integration | `adk add <name>` |
**If the information in this skill isn't enough**, fetch the corresponding GitHub reference file (links provided in each section) for more detailed specifications.
## Important: ADK is AI-Native
The ADK does **NOT** use traditional chatbot patterns. Don't create intents, entities, or dialog flows.
**Instead of:**
- Defining intents (`greet`, `orderPizza`, `checkStatus`)
- Training entity extraction (`@pizzaSize`, `@toppings`)
- Manually routing to intent handlers
**ADK uses:**
- `execute()` - The AI understands user intent naturally from instructions
- Tools - AI autonomously decides when to call your functions
- `zai.extract()` - Schema-based structured data extraction
- Knowledge bases - RAG for grounding responses in your docs
**Docs:** https://www.botpress.com/docs/adk/
**GitHub:** https://github.com/botpress/skills/tree/master/skills/adk
---
## Prerequisites & Installation
Before using the ADK, ensure the user has:
- **Botpress Account** - Create at https://app.botpress.cloud
- **Node.js v22.0.0+** - Check with `node --version`
- **Package Manager** - bun (recommended), pnpm, yarn, or npm
**Install the ADK CLI:**
macOS & Linux:
```bash
curl -fsSL https://github.com/botpress/adk/releases/latest/download/install.sh | bash
```
Windows (PowerShell):
```powershell
powershell -c "irm https://github.com/botpress/adk/releases/latest/download/install.ps1 | iex"
```
**Verify installation:**
```bash
adk --version
```
If installation fails, check https://github.com/botpress/adk/releases for manual download options.
**Docs:** https://www.botpress.com/docs/adk/quickstart
**GitHub:** https://raw.githubusercontent.com/botpress/skills/master/skills/adk/references/cli.md
---
## Quick Start
Once the ADK CLI is installed, create a new bot:
```bash
adk init my-bot # Create project (choose "Hello World" template for beginners)
cd my-bot
npm install # Or bun/pnpm/yarn
adk login # Authenticate with Botpress Cloud
adk add chat # Add the chat integration for testing
adk dev # Start dev server with hot reload
adk chat # Test in CLI (run in separate terminal)
adk deploy # Deploy to production when ready
```
The visual console at **http://localhost:3001/** lets you configure integrations and test the bot.
**Docs:** https://www.botpress.com/docs/adk/quickstart
**GitHub:** https://raw.githubusercontent.com/botpress/skills/master/skills/adk/references/cli.md
---
## Linking and Deploying Your Bot
**IMPORTANT:** Your bot must be linked to Botpress Cloud and deployed for it to work. The ADK runs locally during development but the bot itself lives in Botpress Cloud.
### The Correct Order: Link ā Dev ā Deploy
Follow this order to get your bot working:
```bash
# 1. LINK - Connect your project to Botpress Cloud (creates agent.json)
adk link
# 2. DEV - Start the development server (hot reload, testing)
adk dev
# 3. DEPLOY - Push to production when ready
adk deploy
```
**Step-by-step:**
1. **`adk link`** - Links your local project to a bot in Botpress Cloud. This creates `agent.json` with your workspace and bot IDs. Run this first before anything else.
2. **`adk dev`** - Starts the local development server with hot reloading. Opens the dev console at http://localhost:3001 where you can configure integrations and test your bot. Use `adk chat` in a separate terminal to test.
3. **`adk deploy`** - Deploys your bot to production. Run this when you're ready for your bot to be live and accessible through production channels (Slack, WhatsApp, webchat, etc.).
### Troubleshooting Errors
**If you encounter errors when running `adk dev` or `adk deploy`:**
1. **Check the logs** - Look at the terminal output or the logs panel in the dev console at http://localhost:3001
2. **Copy the error message** - Select and copy the full error message from the logs
3. **Ask for help** - Paste the error back to the AI assistant and ask it to help fix the issue
Common error scenarios:
- **Integration configuration errors:** Usually means an integration needs to be configured in the UI at localhost:3001
- **Type errors:** Often caused by incorrect imports or schema mismatches
- **Deployment failures:** May indicate missing environment variables or invalid configuration
**Example workflow for fixing errors:**
```
1. Run `adk dev` or `adk deploy`
2. See error in terminal/logs
3. Copy the error message
4. Tell the AI: "I got this error when running adk dev: [paste error]"
5. The AI will help diagnose and fix the issue
```
**Docs:** https://www.botpress.com/docs/adk/quickstart
**GitHub:** https://raw.githubusercontent.com/botpress/skills/master/skills/adk/references/cli.md
---
## Project Structure
**Critical rule:** File location determines behavior. Place components in the correct `src/` subdirectory or they won't be discovered.
```
my-bot/
āāā agent.config.ts # Bot configuration: name, models, state schemas, integrations
āāā agent.json # Workspace/bot IDs (auto-generated by adk link/dev, add to .gitignore)
āāā package.json # Node.js dependencies and scripts (dev, build, deploy)
āāā tsconfig.json # TypeScript configuration
āāā .env # API keys and secrets (never commit!)
āāā .gitignore # Should include: agent.json, .env, node_modules/, .botpress/
āāā src/
ā āāā conversations/ # Handle incoming messages ā use execute() for AI responses
ā āāā workflows/ # Background processes ā use step() for resumable operations
ā āāā actions/ # Reusable functions ā call from anywhere with actions.name()
ā āāā tools/ # AI-callable functions ā AI decides when to invoke these
ā āāā tables/ # Data storage ā auto-synced to cloud, supports semantic search
ā āāā triggers/ # Event handlers ā react to user.created, integration events, etc.
ā āāā knowledge/ # RAG sources ā index docs, websites, or tables for AI context
āāā .botpress/ # Auto-generated types (never edit manually)
```
**Key Configuration Files:**
- **agent.config.ts** - Primary configuration defining bot metadata, AI models, state schemas, and integrations (you edit this)
- **agent.json** - Links agent to workspace/bot IDs. Auto-generated by `adk link` or `adk dev`. **Add to .gitignore** - contains environment-specific IDs that differ per developer
- **package.json** - Node.js config with `@botpress/runtime` dependency and scripts for `dev`, `build`, `deploy`
- **tsconfig.json** - TypeScript configuration for the project
- **.env** - Environment variables for API keys and secrets (never commit!)
- **.gitignore** - Should include: `agent.json`, `.env`, `node_modules/`, `.botpress/`
**Docs:** https://www.botpress.com/docs/adk/project-structure
**GitHub:** https://raw.githubusercontent.com/botpress/skills/master/skills/adk/references/agent-config.md
---
## Agent Configuration
The `agent.config.ts` file defines your bot's identity, AI models, state schemas, and integrations. Always start here when setting up a new bot.
```typescript
import { defineConfig, z } from "@botpress/runtime";
export default defineConfig({
name: "my-support-bot",
description: "AI customer support assistant",
// AI models for different operations
defaultModels: {
autonomous: "openai:gpt-4o", // Used by execute() for conversations
zai: "openai:gpt-4o-mini" // Used by zai operations (cheaper, faster)
},
// Global bot state - shared across all conversa
... (truncated)Manage Coder workspaces and AI coding agent tasks
Record, export, and share your AI coding sessions as replayable buildlogs.
Complete guide for AI agents to participate in BotBowl Party
Post investment ideas to the AI-native investment community.