Skip to content

Agent Configuration

Every agent has a set of configurable properties that control its behavior, capabilities, and constraints.

PropertyTypeDescription
namestringDisplay name shown in the UI
descriptionstringWhat the agent does (used by other agents for delegation)
model_groupstringWhich LLM configuration to use
enabledboolWhether the agent is active
toolsstring[]List of tool names the agent can access
avatarstringOptional avatar URL

The identity field is a key-value map that shapes the agent’s personality. Common keys:

  • name: the agent’s display name in conversations
  • emoji: an icon or emoji for the agent
  • traits: personality characteristics

Identity values are injected into the agent’s system prompt. You can update them at runtime using the update_identity tool.

For agents that use the CLI tool, sandbox settings control execution constraints:

{
"sandbox_config": {
"network_access": true,
"allowed_network_destinations": ["api.example.com"],
"timeout_secs": 30
}
}
SettingDefaultDescription
network_accesstrueAllow network connections from sandboxed commands
allowed_network_destinations[]Specific hosts allowed when network is restricted
timeout_secs30Maximum execution time for a single command

The max_concurrent_tasks field limits how many tasks the agent can run at the same time. If not set, it falls back to the server-wide default (configurable via FRONA_SERVER_MAX_CONCURRENT_TASKS, default: 10).

Agents can be configured with periodic heartbeats. When enabled, the agent wakes up at regular intervals to perform maintenance tasks.

SettingDescription
heartbeat_intervalSeconds between heartbeats
heartbeat_chat_idChat session used for heartbeat messages

The model_group value maps to a configuration block that defines:

  • main: the primary model (e.g., claude-sonnet-4-6)
  • fallbacks: backup models to try if the primary fails
  • max_tokens: token limit for responses
  • temperature: creativity/randomness setting
  • context_window: maximum context size
  • retry: backoff settings for transient failures

This indirection lets you change which model an agent uses without modifying the agent itself.

POST /api/agents
{
"name": "My Agent",
"description": "Handles customer support inquiries",
"model_group": "primary",
"tools": ["web_search", "web_fetch", "remember"],
"enabled": true
}
PUT /api/agents/{id}

Send the fields you want to change. Only the agent’s owner can update it.

Agent behavior is primarily defined by system prompts, which are loaded from .md files:

  • AGENT.md: the core system prompt that defines the agent’s role and behavior
  • Tool-specific prompts: additional context for specific tools
  • Memory prompts: instructions for how the agent should handle memory

Built-in agents have prompts in the engine/config/agents/{agent_id}/ directory. Custom agents use a combination of default prompts and any overrides stored in the database.