Terraform Provider
The ChatBotKit Terraform Provider enables you to manage your AI chatbot infrastructure using Terraform. Define bots, datasets, skillsets, integrations, and more through declarative configuration files, enabling version control, automated deployments, and infrastructure consistency across environments.
Features
The ChatBotKit Terraform Provider offers several powerful features for infrastructure management:
| Feature | Description |
|---|---|
| Infrastructure as Code | Manage ChatBotKit resources declaratively |
| Full Resource Coverage | Support for bots, datasets, skillsets, integrations, and more |
| Data Sources | Read existing resources for reference in configurations |
| Import Support | Bring existing resources under Terraform management |
| State Management | Track resource changes and drift detection |
| CI/CD Integration | Automate deployments through pipelines |
Installation
Add the provider to your Terraform configuration:
Then initialize Terraform:
Requirements
To use the ChatBotKit Terraform Provider, you need:
- Terraform 1.0 or higher
- A ChatBotKit API key from the Dashboard
Authentication
Configure authentication using either method:
Environment Variable (Recommended):
Provider Configuration:
When both are set, the provider configuration takes precedence over the environment variable.
Quick Start
Here's a complete example that creates a knowledge-based support bot:
Deploy with:
Resources
The provider supports the following resources:
Core Resources
| Resource | Description |
|---|---|
chatbotkit_bot | AI chatbot agents with configurable models and behaviors |
chatbotkit_dataset | Knowledge bases for retrieval-augmented generation |
chatbotkit_skillset | Collections of abilities (tools) for bots |
chatbotkit_skillset_ability | Individual abilities within a skillset |
chatbotkit_blueprint | Reusable templates for bot configurations |
chatbotkit_secret | Secure credential storage |
chatbotkit_file | File records for uploads used by datasets and abilities |
chatbotkit_file_content | Uploads content (inline, local, or remote URL) to a file |
chatbotkit_space | Isolated, persistent filesystem (workspace) for agents |
chatbotkit_space_storage_file | A file stored at a path within a space |
chatbotkit_portal | Customer-facing portal configurations |
chatbotkit_policy | Data-retention and usage policies for bots and blueprints |
Integrations
| Resource | Description |
|---|---|
chatbotkit_widget_integration | Embeddable website chat widget |
chatbotkit_slack_integration | Slack workspace integration |
chatbotkit_discord_integration | Discord bot deployment |
chatbotkit_microsoftteams_integration | Microsoft Teams integration |
chatbotkit_googlechat_integration | Google Chat integration |
chatbotkit_telegram_integration | Telegram bot deployment |
chatbotkit_whatsapp_integration | WhatsApp Business integration |
chatbotkit_messenger_integration | Facebook Messenger integration |
chatbotkit_instagram_integration | Instagram messaging integration |
chatbotkit_email_integration | Email-based interactions |
chatbotkit_twilio_integration | Twilio SMS/voice integration |
chatbotkit_support_integration | Support/helpdesk integration |
chatbotkit_notion_integration | Notion workspace sync |
chatbotkit_sitemap_integration | Website content ingestion |
chatbotkit_extract_integration | Structured data extraction from conversations |
chatbotkit_mcpserver_integration | Model Context Protocol (MCP) server endpoint |
chatbotkit_trigger_integration | Scheduled or event-driven bot triggers |
Data Sources
Read existing resources without managing them:
Available data sources: chatbotkit_bot, chatbotkit_dataset, chatbotkit_blueprint, chatbotkit_skillset.
Bot Resource Example
MCP Server Integration Example
Expose a skillset as an MCP endpoint for AI clients like Claude Desktop or VSCode:
Trigger Integration Example
Schedule a bot to run on a cron schedule:
Extract Integration Example
Extract structured data from conversations:
Importing Resources
Bring existing resources under Terraform management:
Examples
A library of complete, runnable examples lives in the provider repository under examples/. Highlights:
- agent-framework - an autonomous agent authored as a project of files (instructions, skills, heartbeat) and provisioned end to end: a bot whose backstory is read from
instructions.md, ability packs (pack/shell,pack/cbk/space/skills), an isolated workspace with file-based skills uploaded under.skills/, a Slack channel, and both scheduled triggers and a heartbeat. - multi-tenant agents - one agent per customer, each isolated in its own sub-account, in two flavors: multi-tenant-agents-shared (the same agent for all) and multi-tenant-agents-per-customer (a bespoke agent per customer). See Multi-Tenancy below.
- Focused references for datasets, skillsets, dynamic skills, MCP servers, multi-agent workflows, and more.
Each example is a self-contained directory with its own README.md - copy one as a starting point.
Multi-Tenancy and Sub-Accounts
To give each customer their own isolated environment, ChatBotKit's partner API creates sub-accounts (partner users), each with its own bots, datasets, conversations, and settings. Operate on a sub-account with the provider's run_as attribute: you hold one partner/master token and select the sub-account by ID (it sends the X-RunAs-UserId header), so there are no per-customer tokens. This is the standard Terraform multi-account pattern - provider aliases, like the AWS provider's assume_role:
Add a customer by adding a provider alias and a module call - no for_each. Account IDs are not secret; only the master token is. The provider cannot create sub-accounts itself (that is the partner REST API), so create them once in the dashboard or via partner/user/create. See the multi-tenant-agents-shared and multi-tenant-agents-per-customer examples.
CI/CD Integration
Example GitHub Actions workflow for automated deployments:
Best Practices
- Use Variables: Parameterize your configurations for reusability across environments
- Remote State: Use remote backends (S3, Terraform Cloud) for team collaboration
- Workspaces: Manage multiple environments (dev, staging, prod) with workspaces
- Lifecycle Rules: Use
prevent_destroyfor critical production resources - Metadata: Tag resources with
metafor organization and filtering
Additional Resources
- Terraform Provider Manual - Comprehensive technical documentation
- Terraform Registry - Official provider page
- GitHub Repository - Source code and issues
- API Documentation - ChatBotKit API reference
Related SDKs
- Node.js SDK: @chatbotkit/sdk - Official Node.js SDK
- Go SDK: github.com/chatbotkit/go-sdk - Official Go SDK