Agent Development Kit (ADK)
The Agent Development Kit (ADK) is a Python CLI for building PolyAI agents locally. Pull your Agent Studio project as YAML and Python files, edit in your IDE (or with a coding assistant like Claude), version with Git, and push from the command line.
How it works
ADK uses a Git-like workflow: init → pull → branch → edit → validate → push → review → merge.
Initialize
Link a local directory to an Agent Studio project with poly init. Select your region, account, and project interactively or pass them as flags.
Pull
Run poly pull to download your project as structured YAML and Python files organized by resource type.
Branch
Use poly branch switch <name> to work on a branch, keeping your changes isolated from the live agent.
Edit
Edit with any tool — VS Code, Cursor, or AI coding assistants. YAML handles configuration, Python handles functions.
ADK is fully compatible with Agent Studio and the APIs. Switch between surfaces at any time.
Prerequisites
Authenticate
Self-serve accounts — run poly start to sign in automatically.
Enterprise accounts — run poly login --region <region>, or export your API key directly:
Generate API keys from your account at studio.poly.ai.
CLI commands
Run poly --help for the full list, or poly <command> --help for flags and options.
Project structure
After pulling, your local directory contains human-readable files organized by resource type:
Each YAML file represents a single resource. For example, a topic file:
Resource references
Cross-references between resources use human-readable placeholder tags. ADK resolves these automatically at push time.
Resource architecture
ADK resources fall into two categories:
Quick guide: Always-true instructions belong in rules.txt. Subject-specific information belongs in topics. Comparisons, calculations, or API calls belong in functions.
Common mistakes to avoid:
- Putting behavioral instructions in topic
contentinstead of topicactions - Putting facts in
rules.txt— this wastes context; keep facts in topics - Using prose conditionals for branching — use Python functions instead, since models can’t reliably detect empty variables

