Company Configuration¶
SynthOrg organizations are configured via YAML. The configuration defines your company structure, agents, LLM providers, budget, security policies, memory, tools, and operational settings. All configuration is validated at load time using Pydantic -- invalid values produce clear error messages with field paths.
Overview¶
Configuration is loaded from a YAML file and validated into a frozen Pydantic model (RootConfig). Once loaded, configuration is immutable -- runtime state changes (e.g. agent execution status) use separate mutable models.
The configuration can be provided:
- Via the setup wizard in the web dashboard (recommended for first-time setup)
- As a YAML file passed to the CLI or API
- Via templates that pre-populate agents, departments, and workflows
Root Configuration¶
The top-level configuration object. Only company_name is required -- all other fields have sensible defaults.
| Field | Type | Default | Description |
|---|---|---|---|
company_name |
string | (required) | Company identifier |
company_type |
CompanyType | custom |
Company template type |
departments |
list | [] |
Organizational departments |
agents |
list | [] |
Agent configurations |
custom_roles |
list | [] |
User-defined role catalog |
config |
CompanyConfig | (defaults) | Company-wide settings |
budget |
BudgetConfig | (defaults) | Budget and cost controls |
communication |
CommunicationConfig | (defaults) | Messaging architecture |
providers |
dict | {} |
LLM provider configurations |
routing |
RoutingConfig | (defaults) | Model routing strategy |
logging |
LogConfig | null |
Observability configuration |
graceful_shutdown |
GracefulShutdownConfig | (defaults) | Process lifecycle |
workflow_handoffs |
list | [] |
Cross-department handoffs |
escalation_paths |
list | [] |
Cross-department escalation |
task_assignment |
TaskAssignmentConfig | (defaults) | Task assignment strategy |
memory |
CompanyMemoryConfig | (defaults) | Memory backend settings |
persistence |
PersistenceConfig | (defaults) | Database backend settings |
cost_tiers |
CostTiersConfig | (defaults) | Model pricing tiers |
org_memory |
OrgMemoryConfig | (defaults) | Shared organizational memory |
api |
ApiConfig | (defaults) | API server settings |
sandboxing |
SandboxingConfig | (defaults) | Code execution sandbox |
mcp |
MCPConfig | (defaults) | MCP tool bridge |
security |
SecurityConfig | (defaults) | Security rule engine |
trust |
TrustConfig | (defaults) | Progressive trust |
promotion |
PromotionConfig | (defaults) | Career progression |
task_engine |
TaskEngineConfig | (defaults) | Task engine settings |
coordination |
CoordinationConfig | (defaults) | Multi-agent coordination |
git_clone |
GitCloneConfig | (defaults) | Git workspace settings |
backup |
BackupConfig | (defaults) | Backup/restore settings |
coordination_metrics |
CoordinationMetricsConfig | (defaults) | Coordination metrics tracking |
Company Settings¶
Company Types¶
The company_type field selects a pre-defined organizational template:
| Type | Description | Agents |
|---|---|---|
solo_founder |
Solo builder with full autonomy | 2 |
startup |
CEO + small engineering team | 3--5 |
dev_shop |
Engineering squad with quality gates | 6--10 |
product_team |
Product-focused studio with design | 8--12 |
agency |
Project manager + specialists | 4--8 |
full_company |
Enterprise org with all departments | 8--15 |
research_lab |
Lead researcher + assistants | 5--10 |
consultancy |
Client-facing advisory and delivery | 4--6 |
data_team |
Analytics and ML-focused team | 5--8 |
custom |
Build from scratch | Any |
Autonomy Levels¶
Set the company-wide autonomy level in config.autonomy.level:
| Level | Behavior |
|---|---|
full |
Agents execute all actions without approval |
semi |
Risky actions require human approval |
supervised |
Most actions require human approval |
locked |
All actions require human approval |
Individual agents can override the company-wide autonomy level via their autonomy_level field.
Providers¶
LLM providers are configured under the providers key. Each entry is a named provider with connection details, models, and resilience settings.
Provider Configuration¶
| Field | Type | Default | Description |
|---|---|---|---|
driver |
string | "litellm" |
Backend driver |
litellm_provider |
string | null |
LiteLLM routing key override |
family |
string | null |
Provider family for grouping |
auth_type |
AuthType | "api_key" |
Authentication method |
api_key |
string | null |
API key (required for api_key auth) |
subscription_token |
string | null |
Subscription token |
base_url |
string | null |
Custom API base URL |
models |
list | [] |
Available models |
retry |
RetryConfig | (defaults) | Retry settings for transient errors |
rate_limiter |
RateLimiterConfig | (defaults) | Client-side rate limiting |
subscription |
SubscriptionConfig | null |
Quota and subscription tracking |
degradation |
DegradationConfig | null |
Quota exhaustion strategy |
Authentication Types¶
| Auth Type | Required Fields |
|---|---|
api_key |
api_key |
subscription |
subscription_token, tos_accepted_at |
oauth |
OAuth-specific fields |
custom_header |
custom_header_name, custom_header_value |
none |
No credentials (e.g. local Ollama) |
Model Configuration¶
Each provider lists its available models under the models key:
| Field | Type | Default | Description |
|---|---|---|---|
id |
string | (required) | Model identifier |
alias |
string | null |
Short alias for routing rules |
cost_per_1k_input |
float | 0.0 |
Cost per 1K input tokens (USD) |
cost_per_1k_output |
float | 0.0 |
Cost per 1K output tokens (USD) |
max_context |
int | 200000 |
Context window size in tokens |
estimated_latency_ms |
int | null |
Estimated latency |
Provider Examples¶
Model Routing¶
The routing section controls how models are selected for agent tasks.
Routing Strategies¶
| Strategy | Description |
|---|---|
manual |
Explicit model assignment per agent |
role_based |
Match models to agent seniority |
cost_aware |
Balance quality vs. cost |
cheapest |
Always use the cheapest model |
fastest |
Always use the fastest model |
smart |
Cascade: override > task-type > role > seniority > cheapest > fallback |
Routing Rules¶
Rules are evaluated in order. Each rule matches by role_level and/or task_type:
routing:
strategy: cost_aware
rules:
- role_level: c_suite
preferred_model: "large"
- role_level: senior
preferred_model: "medium"
fallback: "small"
- task_type: review
preferred_model: "small"
fallback_chain:
- "medium"
- "small"
| Field | Type | Default | Description |
|---|---|---|---|
role_level |
SeniorityLevel | null |
Seniority filter |
task_type |
string | null |
Task type filter |
preferred_model |
string | (required) | Preferred model alias or ID |
fallback |
string | null |
Fallback model |
Note
At least one of role_level or task_type must be set per rule.
Agents¶
Agent configuration is covered in detail in the Agent Roles & Hierarchy guide. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
name |
string | (required) | Agent display name |
role |
string | (required) | Role identifier |
department |
string | (required) | Department name |
level |
SeniorityLevel | mid |
Seniority level |
personality |
dict | {} |
Personality configuration |
model |
dict | {} |
Model assignment (tier, priority, min_context) |
memory |
dict | {} |
Per-agent memory settings |
tools |
dict | {} |
Tool access configuration |
authority |
dict | {} |
Delegation and approval authority |
autonomy_level |
AutonomyLevel | null |
Per-agent autonomy override |
Agent names must be unique within the organization.
Budget¶
Budget configuration is covered in detail in the Budget & Cost Control guide. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
total_monthly |
float | 100.0 |
Monthly budget limit |
currency |
string | "EUR" |
ISO 4217 currency code |
per_task_limit |
float | 5.0 |
Maximum cost per task |
per_agent_daily_limit |
float | 10.0 |
Maximum cost per agent per day |
reset_day |
int | 1 |
Budget reset day (1--28) |
alerts |
BudgetAlertConfig | (defaults) | Alert thresholds |
auto_downgrade |
AutoDowngradeConfig | (defaults) | Auto-downgrade settings |
Memory¶
Memory configuration is covered in detail in the Memory Configuration guide. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
backend |
string | "mem0" |
Memory backend |
level |
MemoryLevel | "session" |
Default persistence level |
storage |
MemoryStorageConfig | (defaults) | Storage paths |
options |
MemoryOptionsConfig | (defaults) | Behavior options |
retrieval |
MemoryRetrievalConfig | (defaults) | Retrieval pipeline |
consolidation |
ConsolidationConfig | (defaults) | Consolidation settings |
Security & Trust¶
Security configuration is covered in detail in the Security & Trust Policies guide. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
security.enabled |
bool | true |
Master security switch |
security.audit_enabled |
bool | true |
Audit logging |
security.output_scan_policy_type |
string | "autonomy_tiered" |
Output scan policy |
trust.strategy |
string | "disabled" |
Trust strategy type |
trust.initial_level |
ToolAccessLevel | "standard" |
Default trust level |
MCP (Tool Bridge)¶
MCP configuration is covered in detail in the Tool Integration (MCP) guide. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
mcp.servers |
list | [] |
MCP server configurations |
Operational Settings¶
Task Assignment¶
| Field | Type | Default | Description |
|---|---|---|---|
strategy |
string | "role_based" |
Assignment strategy |
min_score |
float | 0.1 |
Minimum capability score (0.0--1.0) |
max_concurrent_tasks_per_agent |
int | 5 |
Concurrency limit (1--50) |
Valid strategies: manual, role_based, load_balanced, cost_optimized, hierarchical, auction.
Graceful Shutdown¶
| Field | Type | Default | Description |
|---|---|---|---|
strategy |
string | "cooperative_timeout" |
Shutdown strategy |
grace_seconds |
float | 30.0 |
Grace period for cooperative exit (0--300] |
cleanup_seconds |
float | 5.0 |
Cleanup time (0--60] |
Departments¶
departments:
- name: "engineering"
budget_percent: 60
head_role: "CTO"
reporting_lines:
- subordinate: "Full-Stack Developer"
supervisor: "CTO"
- name: "product"
budget_percent: 40
head_role: "Product Manager"
| Field | Type | Default | Description |
|---|---|---|---|
name |
string | (required) | Department name (must be unique) |
budget_percent |
int | 0 |
Percentage of company budget |
head_role |
string | (required) | Department head role |
reporting_lines |
list | [] |
Subordinate-supervisor relationships |
Workflow Handoffs¶
Define cross-department handoff triggers:
workflow_handoffs:
- from_department: "engineering"
to_department: "product"
trigger: "Feature implementation completed for product review"
artifacts:
- "pull_request"
- "release_notes"
Escalation Paths¶
Define cross-department escalation routes:
escalation_paths:
- from_department: "engineering"
to_department: "executive"
condition: "Technical blocker requiring executive decision"
priority_boost: 1
Validation Rules¶
SynthOrg enforces the following cross-field validation rules at load time:
| Rule | Description |
|---|---|
| Unique agent names | Agent names must be unique across the organization |
| Unique department names | Department names must not repeat |
| Routing model references | preferred_model and fallback in routing rules must reference existing model IDs or aliases |
| Fallback chain references | fallback_chain entries must reference existing model IDs or aliases |
| Alert threshold ordering | warn_at < critical_at < hard_stop_at (budget alerts) |
| No self-downgrade | downgrade_map entries must not map a model to itself |
| Disjoint deny/approve | hard_deny_action_types and auto_approve_action_types must not overlap |
| Per-task limit | per_task_limit <= total_monthly (when budget > 0) |
| Per-agent daily limit | per_agent_daily_limit <= total_monthly (when budget > 0) |
| Routing rule filter | At least one of role_level or task_type must be set per routing rule |
| Trust strategy fields | Active trust strategy must have its required config (e.g. weighted needs promotion_thresholds) |
Full Example¶
Complete annotated configuration
company_name: "Acme AI Corp"
company_type: startup
config:
autonomy:
level: semi
departments:
- name: "executive"
budget_percent: 20
head_role: "CEO"
reporting_lines:
- subordinate: "CTO"
supervisor: "CEO"
- name: "engineering"
budget_percent: 60
head_role: "CTO"
reporting_lines:
- subordinate: "Full-Stack Developer"
supervisor: "CTO"
- name: "product"
budget_percent: 20
head_role: "Product Manager"
agents:
- role: "CEO"
name: "Alice"
level: c_suite
department: "executive"
model:
tier: "large"
priority: "quality"
min_context: 100000
personality:
openness: 0.85
conscientiousness: 0.6
decision_making: directive
- role: "CTO"
name: "Bob"
level: c_suite
department: "executive"
model:
tier: "large"
priority: "quality"
personality:
openness: 0.85
conscientiousness: 0.4
decision_making: intuitive
- role: "Full-Stack Developer"
name: "Charlie"
level: senior
department: "engineering"
model:
tier: "medium"
priority: "balanced"
personality:
openness: 0.5
conscientiousness: 0.85
decision_making: analytical
- role: "Product Manager"
name: "Diana"
level: senior
department: "product"
model:
tier: "medium"
priority: "speed"
personality:
openness: 0.6
conscientiousness: 0.7
decision_making: consultative
providers:
cloud:
auth_type: api_key
api_key: "sk-example-key"
models:
- id: "example-large-001"
alias: "large"
cost_per_1k_input: 0.015
cost_per_1k_output: 0.075
max_context: 200000
- id: "example-medium-001"
alias: "medium"
cost_per_1k_input: 0.003
cost_per_1k_output: 0.015
- id: "example-small-001"
alias: "small"
cost_per_1k_input: 0.001
cost_per_1k_output: 0.005
routing:
strategy: cost_aware
rules:
- role_level: c_suite
preferred_model: "large"
- role_level: senior
preferred_model: "medium"
fallback: "small"
fallback_chain:
- "medium"
- "small"
budget:
total_monthly: 200.0
currency: "EUR"
per_task_limit: 10.0
per_agent_daily_limit: 25.0
alerts:
warn_at: 75
critical_at: 90
hard_stop_at: 100
auto_downgrade:
enabled: true
threshold: 85
downgrade_map:
- ["large", "medium"]
- ["medium", "small"]
security:
enabled: true
audit_enabled: true
output_scan_policy_type: autonomy_tiered
trust:
strategy: disabled
initial_level: standard
memory:
backend: "mem0"
level: session
options:
retention_days: null # keep forever
max_memories_per_agent: 10000
shared_knowledge_base: true
task_assignment:
strategy: role_based
max_concurrent_tasks_per_agent: 5
graceful_shutdown:
grace_seconds: 30.0
cleanup_seconds: 5.0
workflow_handoffs:
- from_department: "engineering"
to_department: "product"
trigger: "Feature completed for review"
artifacts:
- "pull_request"
escalation_paths:
- from_department: "engineering"
to_department: "executive"
condition: "Technical blocker requiring executive decision"
priority_boost: 1
See Also¶
- Agent Roles & Hierarchy -- detailed agent configuration
- Budget & Cost Control -- budget enforcement and cost tracking
- Security & Trust Policies -- trust strategies and security rules
- Memory Configuration -- memory backends and retrieval
- Tool Integration (MCP) -- external tool configuration
- Design Specification -- full architecture reference