Files
microdao-daarion/services/router/agents_registry.yaml
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

258 lines
7.8 KiB
YAML

# ================================================
# DAARION Platform - Agent Registry v1.0
# ================================================
platform:
name: "MicroDAO Daarion"
version: "1.0.0"
default_agent: "helion"
fallback_agent: "helion"
# ================================================
# REGISTERED AGENTS
# ================================================
agents:
helion:
display_name: "Helion"
description: "Energy Union AI - енергетика, інфраструктура, DePIN"
domain_tags:
- energy
- power
- grid
- depin
- infrastructure
- sensors
- tariffs
- dao
capabilities:
- chat
- stt
- tts
- vision
- image_gen
- web_search
- web_scrape
- document
entrypoint:
type: "nats"
subject: "agent.helion.invoke"
memory_policy:
qdrant_collections:
read: ["helion_messages", "helion_docs", "helion_artifacts", "helion_memory_items"]
write: ["helion_messages", "helion_docs", "helion_artifacts", "helion_memory_items"]
neo4j_labels: ["HelionUser", "HelionTopic", "HelionProject", "HelionChannel"]
neo4j_filter: "agent_id = 'helion'"
redis_prefix: "helion:"
data_policy:
handoff_allow: ["nutra", "greenfood"] # Can share context with these agents
handoff_fields: ["user_intent", "context_summary", "language"]
sensitive_fields_block: ["api_keys", "internal_metrics", "wallet_addresses"]
sla:
priority: "high"
rate_limit_rpm: 60
max_tokens_per_request: 8000
prompt_file: "/app/prompts/helion_prompt.txt"
telegram_token_env: "HELION_BOT_TOKEN"
active: true
nutra:
display_name: "Nutra"
description: "AI Nutrition Agent - харчування, здоров'я, дієти"
domain_tags:
- nutrition
- food
- diet
- health
- wellness
- recipes
- allergens
- nutrients
- calories
capabilities:
- chat
- vision
- document
entrypoint:
type: "nats"
subject: "agent.nutra.invoke"
memory_policy:
qdrant_collections:
read: ["nutra_messages", "nutra_docs", "nutra_food_knowledge", "nutra_memory_items"]
write: ["nutra_messages", "nutra_docs", "nutra_food_knowledge", "nutra_memory_items"]
neo4j_labels: ["NutraUser", "NutraGoal", "NutraProduct", "NutraRecipe", "NutraRestriction"]
neo4j_filter: "agent_id = 'nutra'"
redis_prefix: "nutra:"
data_policy:
handoff_allow: ["helion"]
handoff_fields: ["user_intent", "context_summary", "language", "dietary_preferences"]
sensitive_fields_block: ["medical_history", "health_conditions"]
sla:
priority: "medium"
rate_limit_rpm: 30
max_tokens_per_request: 4000
prompt_file: "/app/prompts/nutra_prompt.txt"
telegram_token_env: "NUTRA_BOT_TOKEN"
active: true
greenfood:
display_name: "GreenFood"
description: "GreenFood DAO Agent - органічні продукти, ферми"
domain_tags:
- organic
- farming
- sustainable
- local_food
- farmers_market
capabilities:
- chat
entrypoint:
type: "nats"
subject: "agent.greenfood.invoke"
memory_policy:
qdrant_collections:
read: ["greenfood_messages", "greenfood_docs"]
write: ["greenfood_messages", "greenfood_docs"]
neo4j_labels: ["GreenFoodUser", "GreenFoodFarm", "GreenFoodProduct"]
neo4j_filter: "agent_id = 'greenfood'"
redis_prefix: "greenfood:"
data_policy:
handoff_allow: ["nutra", "helion"]
handoff_fields: ["user_intent", "context_summary"]
sensitive_fields_block: []
sla:
priority: "low"
rate_limit_rpm: 20
max_tokens_per_request: 4000
prompt_file: "/app/prompts/greenfood_prompt.txt"
telegram_token_env: "GREENFOOD_BOT_TOKEN"
active: true
druid:
display_name: "Druid"
description: "Legal/Compliance Agent - юридичні питання, регуляція"
domain_tags:
- legal
- compliance
- contracts
- regulations
- kyc
capabilities:
- chat
- document
entrypoint:
type: "nats"
subject: "agent.druid.invoke"
memory_policy:
qdrant_collections:
read: ["druid_messages", "druid_docs", "druid_legal_kb"]
write: ["druid_messages", "druid_docs"]
neo4j_labels: ["DruidUser", "DruidContract", "DruidRegulation"]
neo4j_filter: "agent_id = 'druid'"
redis_prefix: "druid:"
data_policy:
handoff_allow: ["helion"]
handoff_fields: ["user_intent", "context_summary", "jurisdiction"]
sensitive_fields_block: ["personal_id", "contracts_content"]
sla:
priority: "medium"
rate_limit_rpm: 20
max_tokens_per_request: 8000
prompt_file: "/app/prompts/druid_prompt.txt"
telegram_token_env: "DRUID_BOT_TOKEN"
active: false
daarwizz:
display_name: "DaarWizz"
description: "Operations/DevOps Agent - інфраструктура, моніторинг"
domain_tags:
- devops
- infrastructure
- monitoring
- deployment
- servers
capabilities:
- chat
- web_scrape
entrypoint:
type: "nats"
subject: "agent.daarwizz.invoke"
memory_policy:
qdrant_collections:
read: ["daarwizz_messages", "daarwizz_docs"]
write: ["daarwizz_messages", "daarwizz_docs"]
neo4j_labels: ["DaarwizzServer", "DaarwizzService", "DaarwizzAlert"]
neo4j_filter: "agent_id = 'daarwizz'"
redis_prefix: "daarwizz:"
data_policy:
handoff_allow: ["helion"]
handoff_fields: ["user_intent", "context_summary"]
sensitive_fields_block: ["credentials", "ssh_keys", "api_secrets"]
sla:
priority: "high"
rate_limit_rpm: 100
max_tokens_per_request: 4000
prompt_file: "/app/prompts/daarwizz_prompt.txt"
telegram_token_env: "DAARWIZZ_BOT_TOKEN"
active: false
# ================================================
# INTENT ROUTING RULES
# ================================================
routing:
# Hard routes (explicit commands/channels)
hard_routes:
- pattern: "^/nutra"
agent: "nutra"
- pattern: "^/helion"
agent: "helion"
- pattern: "^/greenfood"
agent: "greenfood"
- pattern: "^/legal"
agent: "druid"
- pattern: "^/ops"
agent: "daarwizz"
# Intent-based routing (keyword matching)
intent_routes:
- keywords: ["їжа", "продукт", "рецепт", "дієта", "калорі", "харчування", "вітамін",
"food", "recipe", "diet", "nutrition", "calorie", "vitamin", "meal"]
agent: "nutra"
confidence_threshold: 0.7
- keywords: ["енергія", "електрика", "сонячн", "вітер", "батаре", "тариф", "мережа",
"energy", "power", "solar", "wind", "battery", "grid", "tariff", "depin"]
agent: "helion"
confidence_threshold: 0.7
- keywords: ["органіч", "ферма", "фермер", "городни", "sustainable", "organic", "farm"]
agent: "greenfood"
confidence_threshold: 0.6
- keywords: ["юрист", "договір", "контракт", "legal", "compliance", "contract", "kyc"]
agent: "druid"
confidence_threshold: 0.8
# Fallback behavior
fallback:
agent: "helion"
message: "Передаю до основного асистента Helion."
# ================================================
# HANDOFF CONTRACT TEMPLATE
# ================================================
handoff_contract:
required_fields:
- user_intent
- source_agent
- target_agent
- timestamp
optional_fields:
- context_summary
- language
- user_preferences
- references
- constraints
- reason_for_handoff
max_context_tokens: 500
strip_sensitive: true