Domain AgentsAgent List

Agent List

KULVEX ships with 17 domain agents, each handling a specific category of requests.

PriorityAgentDomainExamples
10url_analyzeURL analysis”analyze this link”, paste a URL
15signalSignal messaging”send a Signal message to…“
20overviewSystem overview”status”, “overview”, “dashboard”
25fashionFashion/style”outfit suggestions”, “what to wear”
30imageImage generation”generate an image of…”, “create a picture”
35homeHome automation”turn on lights”, “set temperature”
40weatherWeather”what’s the weather”, “forecast”
45presenceWho’s home”who’s home”, “is anyone here”
50solarSolar energy”solar production”, “energy today”
55securitySecurity system”arm alarm”, “camera status”
60remote_nodeRemote nodes”GPU status on node 32”
65codeCode tasks”write a function”, “explain this code”
70systemSystem info”disk usage”, “memory”, “uptime”
75searchWeb search”search for…”, “find information about”
80backupBackups”backup status”, “run backup”
85twitterTwitter/X”post a tweet”, “check mentions”
90messageGeneral messaging”send a message via Telegram”

Agent Anatomy

Each agent is a Python class in core/agents/domain/ with:

class WeatherAgent(BaseAgent):
    name = "weather"
    priority = 40
    patterns = [r"weather", r"forecast", r"temperature outside"]
    tools = ["get_weather", "get_forecast"]
 
    async def handle(self, message, context):
        # Simple query → template response
        if self._is_simple(message):
            return self._template(await self._get_weather())
 
        # Complex query → tool execution + LLM synthesis
        data = await self._execute_tools(message)
        return await self._synthesize(message, data)

Template vs Synthesis

  • Template responses — Pre-formatted, zero LLM. Used for “what’s the weather?” type queries. Instant.
  • Synthesis — Runs data through a minimal LLM prompt (~200 chars) for natural language. Used for complex queries. ~1-2s.