Skip to content

Creating Agents

Agents are the core building blocks of Evonic. Each agent is an independently configured LLM-powered assistant that can reason, plan, and take actions.

When you first set up Evonic, the very first agent you create is automatically designated as the Super Agent. This isn’t optional — the platform requires a Super Agent to bootstrap itself.

The Super Agent is the platform administrator. It has elevated privileges that regular agents don’t:

PrivilegeSuper AgentRegular Agent
Can be disabled?❌ No✅ Yes
Apply skillsets to create new agents✅ Yes❌ No
Create tasks on Kanban (create_task_super_only)✅ Yes❌ No
Bypass super-agent setup checks (update endpoint)✅ Yes❌ No
assign_skills / unassign_skill tools✅ Yes❌ No
Delete other agents’ memories (forget_memory)✅ Yes❌ No

Think of the Super Agent as your AI platform manager. Its job is:

  • Orchestrate other agents: Create, configure, and manage specialized agents for different tasks
  • Apply skillsets: Use pre-built templates to spin up new agents with the right tools and prompts
  • Oversee workflows: Manage Kanban boards and coordinate multi-agent operations
  • Self-update the platform: Has special access to the update system to keep Evonic current

In the CLI, the Super Agent shows Super: yes:

Terminal window
evonic agent get siwa
# Output:
# ID: siwa
# Name: Siwa Miwa
# Description: Super agent
# Status: enabled
# Super: yes ← this is the Super Agent
  1. Go to /agents
  2. Click + New Agent
  3. Fill in:
    • Agent ID: slug format, alphanumeric + underscores only (e.g., bookstore_bot)
    • Name: display name (e.g., “Bookstore Assistant”)
    • Description: short description
  4. Click Create: you’ll be redirected to the agent’s config page
Terminal window
curl -X POST http://localhost:8080/api/agents \
-H 'Content-Type: application/json' \
-d '{
"id": "bookstore_bot",
"name": "Bookstore Assistant",
"description": "Book recommendation assistant for a local bookstore"
}'
Terminal window
# Basic agent
evonic agent add my_bot --name "My Bot"
# Agent with description
evonic agent add bookstore_bot --name "Bookstore Assistant" --description "Book recommendation assistant"
# Agent with a specific model
evonic agent add research_bot --name "Research Bot" --model gpt-4
# Agent from a skillset template
evonic agent add dev_bot --name "Dev Bot" --skillset coder --description "Coding assistant"

Options:

FlagRequiredDescription
--nameYesDisplay name for the agent
--descriptionNoShort description
--modelNoModel override
--model-fallbackNoFallback model chain (comma-separated)
--skillsetNoSkillset template ID (pre-configures tools & prompt)

View all agents with their status, tool count, and channel count:

Terminal window
evonic agent list

Output:

ID Name Status Tools Channels
-------------------------------------------------
siwa Siwa Miwa enabled 10 1
claimg ClaimGuard enabled 7 0

View detailed information about a specific agent:

Terminal window
evonic agent get bookstore_bot

Output:

ID: bookstore_bot
Name: Bookstore Assistant
Description: Book recommendation assistant for a local bookstore
Status: enabled
Super: no
Model: moonshotai/kimi-k2-thinking
System Prompt: You are a book recommendation assistant...
Tools (10):
- bash
- calculator
- patch
...
Channels (1):
- Mirai

New agents come with several capabilities enabled by default:

CapabilityDescription
Vision (vision_enabled)Agent can process images sent through supported channels (e.g., Telegram)
Agent ID Injection (inject_agent_id)The agent’s own ID is injected into its system prompt so it knows its identity
Date/Time Injection (inject_datetime)Current date and time are injected into the system prompt each turn
Intermediate Responses (send_intermediate_responses)Tool results and intermediate steps are sent as visible messages to the user in real-time
Agent State (enable_agent_state)Plan/Execute mode system is active; state persists across conversation turns and summarization

These capabilities can be toggled per-agent in the General tab.

The agent detail page (/agents/<id>) has five tabs:

FieldDescription
NameDisplay name
DescriptionShort description
Model OverrideUse a different model than the default (leave empty for default)
System PromptThe agent’s persona and instructions
Workspace DirectoryCustom filesystem directory for the agent’s file operations (optional, defaults to agents/<agent_id>/workspace/)
Timeout RetriesNumber of times to retry the LLM call if it times out (default: 1)

The system prompt defines who the agent is and how it behaves. Example:

You are a book recommendation assistant for a local bookstore.
Always respond in English. Be friendly and professional.
## POPULAR BOOKS
| Title | Author | Price |
| The Great Gatsby | F. Scott Fitzgerald | $12.99 |
| To Kill a Mockingbird | Harper Lee | $14.99 |

You can override the default model for a specific agent. This is useful when you want different agents to use different models based on their requirements:

# In the Model Override field:
llama3.2:3b

Or use a remote model:

# For cloud models:
meta-llama/Llama-3-8b-Instruct

Introduced in v0.7.0.

When configuring a model, you can choose the API format the LLM client uses to communicate with the model provider. This is available as a dropdown in the model settings (/system/models):

FormatDescription
OpenAIStandard OpenAI-compatible API format (default for most providers)
AnthropicAnthropic’s native API format (for Claude models via Anthropic-compatible endpoints)

The API format dropdown lets you connect Claude and other Anthropic-compatible models natively without needing a proxy or translation layer. The LLM client automatically handles the format translation when set to Anthropic.

This is configured per-model (not per-agent) — when you create or edit a model, the API format dropdown appears alongside the provider, base URL, and API key fields.

See Models for full configuration details.

Introduced in v0.5.0. Sticky behavior added in v0.6.78.

You can configure a fallback chain of models in case the primary model fails. The agent automatically retries with the next model in the chain if the primary model times out or returns an error.

Configure fallbacks in the Model Fallback field, comma-separated:

gpt-4, gpt-4-mini, llama3.2:3b

Behavior:

  • Each model in the chain is tried in order (1 retry per model)
  • Sticky fallback (v0.6.78+) — once a fallback model is activated, it stays active until manually reset for more predictable behavior
  • To reset back to the primary model, use the reset_active_model tool
  • A badge in the UI shows which fallback model is currently active
  • If all models in the chain fail, the agent returns a timeout error

Introduced in v1.1.0.

In addition to per-agent model fallback chains, you can now set a global default fallback model that applies across all agents. Configure the default_model_fallback_id setting to define a platform-wide backup model.

Behavior:

  • When an agent’s primary model times out or returns a transient error, and the agent has no fallback chain configured, the global fallback is used
  • The /model slash command output is now fallback-aware — it displays both the active model and any fallback that is currently engaged
  • describe_image (vision tool) also falls back on rate limits and transient errors, using the global fallback when no per-agent vision fallback is set

Also new in v1.1.0: You can now configure a dedicated Evaluation Model setting (#732) for the evaluator pipeline, separate from the agent’s main model.

Each agent has a workspace directory for file operations. By default, this is agents/<agent_id>/workspace/. You can customize it in the General tab to point to any directory on the filesystem.

The workspace provides an isolated context for tools like runpy, bash, write_file, and patch. All file paths in these tools are resolved relative to the workspace directory.

Agents operate in one of two modes: Plan or Execute. This state is persisted across conversation turns and survives LLM context summarization.

  • Plan mode: The agent generates plans and reasoning before executing. This is the default mode when a new session starts.
  • Execute mode: The agent executes actions directly.

The agent state is managed automatically by the runtime. See Agent State for details.

Introduced in v1.1.0.

You can control which slash commands are available to each agent using two new fields in the Settings tab (#728):

SettingDescription
hidden_slash_commandsCommands hidden from /help output and autocomplete, but still executable
disabled_slash_commandsCommands completely blocked — attempting to use them returns an error

Use Cases:

  • Hide advanced commands from simple agents (e.g., hide /restart from non-admin agents)
  • Disable dangerous commands for tightly-scoped agents (e.g., disable /sub to prevent sub-agent spawning)
  • Simplify the command palette for agents used by non-technical users

Configure these as comma-separated lists in the agent’s Settings tab. Changes take effect immediately — no restart required.

Upload .md files that the agent can read during conversations. See Knowledge Base.

Assign tools from the registry that the agent can invoke. See Tools.

Connect external messaging platforms. See Channels.

Chat directly with the agent from the browser to test its behavior before deploying to external channels. The chat interface supports:

  • Stop button: Interrupt the agent while it’s processing
  • Thinking timeline: Visual timeline showing the agent’s reasoning process
  • Tab persistence: Your active tab is remembered across page refreshes (via URL hash)
  • Mobile layout: Responsive design for mobile devices

Each agent has a safety checker that reviews tool calls (such as bash and runpy) before execution. This is enabled by default (safety_checker_enabled = 1).

You can disable the safety checker per agent to enable full autopilot mode, where the agent executes tools without requiring user approval for each call.

SettingValueBehavior
Enabled (default)1Potentially dangerous tool calls trigger a user approval gate
Disabled0Tools execute directly: full autopilot without intervention

Introduced in v0.7.0.

Each agent can be configured to run its bash and runpy tools under a specific Linux user on the host system. This adds an extra layer of OS-level isolation: even if an agent escapes its sandbox, it operates under a restricted user account rather than the Evonic server process owner.

Set the run-as-user in the agent’s General tab or via the API/CLI:

MethodConfiguration
Web UIEnter the Linux username in the Run As User field in the agent’s General tab
APISet "run_as_user": "username" in the agent configuration payload
  • When run_as_user is set, all bash and runpy commands execute under that user’s identity
  • Environment variables are preserved across sudo boundaries (sudo -E behavior)
  • The user must exist on the host system before the agent can use it
  • If the user does not exist, the tool returns a clear error
  • Multi-tenant deployments: Each agent runs under a dedicated user, preventing file access across agent boundaries
  • Compliance: Meet audit requirements by tying agent actions to specific OS accounts
  • Limited permissions: Create restricted Linux users with only the permissions an agent needs

Introduced in v0.8.0.

When creating or configuring an agent, two new advanced settings control sub-agent behavior:

SettingDescription
inter_agent_clear_contextWhether the agent’s context is cleared between inter-agent messages. When enabled (default), each inter-agent turn starts with a fresh context, preventing message history from accumulating across delegation calls.
builtin_tools_enabledWhether built-in tools (read, write_file, patch, str_replace, etc.) are available. When enabled (default), the agent inherits the full set of built-in tools. When disabled, only explicitly assigned tools and skills are available.

Configure these settings in the agent’s Advanced settings panel, accessible from the agent detail page.

  • inter_agent_clear_context disabled: Useful for sub-agents that need conversation continuity across multiple delegation rounds
  • builtin_tools_enabled disabled: Useful for tightly-scoped agents that should only use specific tools (e.g., a calculator agent that doesn’t need file system access)

See Sub-Agents for the full sub-agent system documentation.

Introduced in v1.1.0.

The Super Agent can now selectively assign individual skills to itself (#739). Previously, the Super Agent bypassed authorization checks for all skill operations, which was too broad. With v1.1.0, the assignment model is more granular:

  • Super Agents can assign specific skills rather than receiving blanket authorization
  • A database migration (section 10b) tracks which skills have been approved for the Super Agent
  • Skill reviews now respect individual assignment decisions

This change aligns with Evonic’s security-first design philosophy — no agent, not even the Super Agent, gets unrestricted access by default.

Introduced in v1.1.0.

Agents can now be exported and imported as JSON files, enabling full agent portability:

Terminal window
# Export an agent
evonic agent export bookstore_bot --output bookstore_bot.json
# Import an agent
evonic agent import bookstore_bot.json

What gets exported:

  • Agent ID, name, description
  • System prompt
  • Model configuration (model, fallback chain, API format)
  • Tool assignments
  • Skill assignments
  • Channel configuration
  • All settings from the General, Tools, and Settings tabs

Validation: Imported JSON files are validated against the current schema before creation. If the schema has changed between export and import, you’ll get clear error messages indicating which fields need adjustment.

This is ideal for:

  • Backing up agent configurations before major changes
  • Migrating agents between Evonic instances (dev → staging → production)
  • Sharing agent templates with your team
  • Version-controlling agent configurations alongside your codebase

Introduced in v0.2.0.

Instead of configuring a new agent from scratch, you can clone an existing agent to create a copy with the same configuration. This is useful when you want to:

  • Create multiple agents with similar settings
  • Duplicate an agent as a template for a new role
  • Experiment with config changes without modifying the original
  1. Go to /agents
  2. Find the agent you want to clone
  3. Click the Clone button (or use the dropdown menu)
  4. Enter a new Agent ID and Name for the clone
  5. Click Clone — all settings (tools, skills, channels, system prompt) are copied
Terminal window
evonic agent clone <source_agent_id> --id <new_agent_id> --name "New Agent Name"

Example:

Terminal window
evonic agent clone bookstore_bot --id bookstore_bot_staging --name "Bookstore Bot (Staging)"

What gets copied:

SettingCopied?Notes
System prompt✅ YesExact copy
Tool assignments✅ YesSame tools enabled
Skill assignments✅ YesSame skills enabled
Channel connections✅ YesBut the clone still needs to be added to channel allowlists
Safety checker setting✅ YesPreserved as-is
Model override✅ YesPreserved as-is
Workspace directory✅ YesPreserved as-is
Chat history❌ NoStarts fresh
Agent state❌ NoStarts fresh
Terminal window
evonic agent enable my_bot
Terminal window
evonic agent disable my_bot

Disabling an agent prevents it from processing new messages. Super agents cannot be disabled.

Permanently remove an agent. Requires interactive confirmation:

Terminal window
evonic agent remove my_bot

Output:

Agent to remove:
ID: my_bot
Name: My Bot
Status: enabled
Are you sure? [y/N]: y
Agent removed: my_bot

Deleting an agent removes its database records, all channel configurations, chat sessions, and the KB directory on disk.

Update an agent’s configuration via the API:

Terminal window
curl -X PUT http://localhost:8080/api/agents/bookstore_bot \
-H 'Content-Type: application/json' \
-d '{
"name": "Bookstore Bot",
"system_prompt": "Updated system prompt here..."
}'
  • Alphanumeric characters and underscores only: ^[a-zA-Z0-9_]+$
  • No spaces, hyphens, or special characters
  • Must be unique
  • Used as the filesystem directory name (agents/<id>/kb/)
  • Cannot be changed after creation