Agents
An agent is an AI actor with a model, a system prompt, and a set of attached capabilities. Agents respond to messages in real time and can be deployed across multiple channels simultaneously.
Creating an agent
Go to Agents → New agent. The form asks for:
| Field | Description |
|---|---|
| Name | Displayed in the UI and referenced inside workflows |
| Model | Claude Opus, Sonnet, or Haiku — see Model options |
| System prompt | Instructions shaping the agent’s personality, tone, and constraints |
After creating the agent you land on its detail page where you attach capabilities and manage adapters.
System prompt
The system prompt is the most important configuration for an agent. It sets:
- Persona — name, tone, and communication style
- Scope — what topics the agent should and shouldn’t address
- Behaviour — how it handles edge cases, what it does when it doesn’t know something
- Format — whether to use bullet points, markdown, short answers, etc.
Keep prompts focused. A 200-word prompt that clearly scopes the agent outperforms a 2 000-word prompt that tries to cover every scenario.
Prompt variables
System prompts support ${varName} interpolation — values injected automatically at runtime so the agent always has fresh context.
Always available:
| Variable | Value |
|---|---|
${user_name} | Display name of the user sending the message |
${date} | Current date in ISO format (2026-05-03) |
${platform} | Channel the message arrived on (discord, telegram, web-widget, api) |
Discord extras:
| Variable | Value |
|---|---|
${guild_id} | Discord server ID |
${guild_name} | Discord server name |
${channel_id} | Channel ID |
${channel_name} | Channel name |
${user_id} | Discord user ID (snowflake) |
${user_username} | Discord username |
${message_id} | ID of the triggering message |
${thread_id} | Thread ID if the message is in a thread |
Telegram extras:
| Variable | Value |
|---|---|
${user_id} | Telegram user ID |
${user_username} | Telegram username |
${user_language} | User’s language code (e.g. en) |
${chat_id} | Chat ID |
${chat_type} | private, group, or supergroup |
${chat_title} | Group or channel title |
${message_id} | ID of the message |
${is_bot} | true if the sender is a bot |
The prompt editor in the dashboard renders variable tokens as inline chips and lets you click to insert.
Capabilities
An agent without capabilities can only use its training knowledge. Attach capabilities from the Capabilities tab on the agent detail page:
| Capability | What it adds |
|---|---|
| Skills | Reusable AI behaviours injected as additional instructions |
| Integrations | MCP tool servers — the agent can call tools at runtime |
| Knowledge bases | Documents the agent retrieves via semantic search |
You can attach multiple of each type. Integrations and knowledge bases are also attachable at the workflow step level.
Conversation history
Each agent maintains per-user conversation memory. Messages are stored in an isolated per-agent LibSQL database. On every new turn the agent receives the full history for that user as context.
You can inspect conversations, filter by agent, and clear individual histories from the Logs section of the dashboard.
Roles & permissions
Agents belong to a workspace. What you can do with an agent depends on your workspace role:
| Role | Permissions |
|---|---|
owner | Everything, including deleting the workspace |
admin | Create, edit, and delete agents and all capabilities |
member | Create and edit agents |
viewer | Read-only — can view agents but not change them |