[ CASE STUDY · FLAGSHIP 05 ]

Alya

Autonomous Hinglish AI assistant on Telegram — Rasa NLU plus Groq fallback, 40-skill registry, MCP tool servers, OAuth workspace pipelines. Live on Telegram.

40-skill registry41 Rasa intents494 test functionsRasa 3.6 + GroqGitHub + OpenCode MCPLive on Telegram

Counted 2026-09-13: 40 distinct /commands in actions/command_registry.py, 41 intent/action entries in domain.yml, 494 test functions across tests/*.py, 49 action modules. Older README copy says 37+ skills; the registry count (40) is authoritative. Bot handle verified live: t.me/Alya_Rasa_Bot (HTTP 200).

01 — Problem

Personal assistants either answer trivia or execute tools — rarely both, and almost never in Hinglish with real workspace access (Gmail, Drive, Calendar, Outlook) plus document generation (PDF, Excel, Word) plus headless code tools.

02 — Solution & Architecture

Dual-tier runtime: a Rasa 3.6 agent (port 5005) owns NLU and dialogue state; an async action server (port 5055) owns execution across 40 registered skills; Groq inference covers generative fallback; MCP clients reach GitHub (port 4097) and OpenCode (port 4096) tool servers; Nginx fronts the stack.

Rasa Agent (:5005) <───▶ Action Server (:5055, 49 modules)
  command_registry.py — 40 /commands with planner metadata
  agent_planner/executor/verifier/memory/triggers — orchestration loop
  mcp_client.py — GitHub MCP (:4097) · OpenCode MCP (:4096)
  llm_provider.py — Groq fallback when NLU rules need generation
  api_gateway.py + api_reliability.py — weather, news, FX, crypto, jobs…
  jobs_service/ — reminders, medicine, bills, commute, server diagnostics

03 — Engineering challenges

Why split NLU from execution?

Slow tools (OAuth refreshes, document synthesis, MCP calls) must never stall conversation state. Rasa classifies intent and extracts slots; the action server runs non-blocking I/O around it.

How do you stop the agent inventing tools?

The registry derives planner metadata from skill descriptions — unregistered goals resolve to None instead of guessed actions. Authorization, container-isolation and webhook-auth tests guard the boundary.

How do 40 skills stay testable?

494 test functions: command inventory, routing, authorization, security regression, scheduler, LLM provider, Telegram UX, image tools, jobs/scholarships pipelines.

04 — Security

05 — Testing

06 — Result & demo

An agent that chats in Hinglish, executes across workspaces, generates real documents, and drives headless code tools — with the registry and test suite to prove the boundary between "can do" and "guessed". Message it.