Skip to Content

Character JSON

Define your agent’s personality and behavior with the character JSON format.

Stable

Overview

The character JSON is the core configuration for an elizaOS agent. It defines:

Complete Schema

{ "name": "Agent Name", "description": "Brief description", "bio": ["First bio statement", "Second bio statement"], "lore": ["Background story element", "Another lore element"], "style": { "all": ["Global style instruction"], "chat": ["Chat-specific style"], "post": ["Social media style"] }, "topics": ["topic1", "topic2"], "adjectives": ["helpful", "friendly"], "modelProvider": "openai", "settings": { "model": "gpt-4o", "temperature": 0.7, "maxTokens": 4096 }, "plugins": [], "clients": [] }

Field Reference

Core Identity

FieldTypeRequiredDescription
namestringAgent display name
descriptionstringBrief description
biostring[]Background statements
lorestring[]Backstory elements

Personality

FieldTypeRequiredDescription
style.allstring[]Global style rules
style.chatstring[]Chat interaction style
style.poststring[]Social media style
topicsstring[]Expertise areas
adjectivesstring[]Personality traits

Model Settings

FieldTypeRequiredDescription
modelProviderstringAI provider
settings.modelstringSpecific model
settings.temperaturenumberCreativity (0-2)
settings.maxTokensnumberMax response length

Bio Guidelines

The bio array defines your agent’s background:

{ "bio": [ "Expert in machine learning and data science", "10 years of experience in AI research", "Published author and conference speaker", "Passionate about explaining complex topics simply" ] }

Best Practices:

Style Instructions

Global Style (style.all)

Applies to all interactions:

{ "style": { "all": [ "Be professional yet approachable", "Use clear, concise language", "Cite sources when making claims", "Ask clarifying questions when needed" ] } }

Chat Style (style.chat)

Specific to chat conversations:

{ "style": { "chat": [ "Keep responses focused and concise", "Use bullet points for complex topics", "Provide examples when helpful", "End with a question to continue the conversation" ] } }

Post Style (style.post)

For social media interactions:

{ "style": { "post": [ "Keep posts under 280 characters", "Use relevant hashtags", "Be engaging and thought-provoking", "Include a call to action" ] } }

Model Providers

Available Providers

ProviderModels
openaigpt-4o, gpt-4o-mini, gpt-4-turbo
anthropicclaude-sonnet-4-6, claude-opus-4-7
googlegemini-1.5-pro, gemini-1.5-flash

Provider Settings

{ "modelProvider": "openai", "settings": { "model": "gpt-4o", "temperature": 0.7, "maxTokens": 4096, "topP": 0.9, "frequencyPenalty": 0, "presencePenalty": 0 } }

Advanced Settings

Knowledge Base

Connect documents:

{ "settings": { "knowledge": { "enabled": true, "documentIds": ["doc_abc123"], "queryLimit": 5, "minScore": 0.7 } } }

MCP Tools

Enable MCP servers:

{ "settings": { "mcp": { "enabled": true, "servers": [{ "id": "weather", "url": "https://mcp.eliza.ai/weather" }] } } }

Voice

Configure voice synthesis:

{ "settings": { "voice": { "provider": "elevenlabs", "voiceId": "voice_abc123", "model": "eleven_multilingual_v2" } } }

Templates

Customer Support

{ "name": "Support Assistant", "bio": [ "Dedicated customer support specialist", "Expert in troubleshooting and problem-solving", "Patient and thorough in explanations" ], "style": { "all": [ "Always be polite and empathetic", "Acknowledge the customer's issue", "Provide step-by-step solutions" ], "chat": [ "Ask for specifics when needed", "Confirm understanding before solving", "Follow up on resolution" ] }, "topics": ["support", "troubleshooting", "product help"], "modelProvider": "openai", "settings": { "model": "gpt-4o", "temperature": 0.5 } }

Research Assistant

{ "name": "Research Assistant", "bio": [ "Academic researcher with expertise in literature review", "Skilled at synthesizing complex information", "Trained on scientific methodology" ], "style": { "all": [ "Use academic language appropriately", "Cite sources when possible", "Be precise and thorough" ], "chat": [ "Break down complex topics", "Provide evidence for claims", "Suggest further reading" ] }, "topics": ["research", "analysis", "academic writing"], "modelProvider": "anthropic", "settings": { "model": "claude-sonnet-4-6", "temperature": 0.3 } }

Validation

The character JSON is validated on upload. Common errors:

ErrorCauseSolution
name requiredMissing name fieldAdd name
invalid providerUnknown modelProviderUse supported provider
invalid temperatureOutside 0-2 rangeAdjust temperature

Best Practices

Next Steps