Public
Apple shortcut
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

Aka — Asistente de IA con delegación multi-agente

Aka es un asistente conversacional en español que ejecuta acciones mediante atajos de Apple. Cuando una petición requiere múltiples acciones, delega automáticamente a sub-agentes en paralelo.

Arquitectura

Usuario → Chat (OpenRouter) → ¿Multi-acción?
                                   │
                          ┌────────┴────────┐
                         Sí              No → Respuesta directa
                          │
                   Delegador (OpenRouter)
                   divide en ≤3 sub-tareas
                          │
              ┌───────────┼───────────┐
           SUB1          SUB2         SUB3
         (Mistral)    (Mistral)    (Mistral)
         o POTENTE    o POTENTE    o POTENTE
         (OpenRouter) (OpenRouter) (OpenRouter)
              └───────────┼───────────┘
                    Respuesta combinada

Pipeline

  1. Chat — Recibe el mensaje. Si es una sola acción, responde directamente. Si son múltiples, responde con DELEGACION ...
  2. Delegador — Divide la tarea en hasta 3 sub-tareas (EN-ANITO1 |<>| comando |<>| ...)
  3. Sub-agentes — Se ejecutan en paralelo. Cada uno produce una acción con su formato exacto
  4. Respuesta finalchat {~~} delegador {~~} SUB1 ... SUB1 SUB2 ... SUB2

Modelos

RolModeloAPIEnv var override
Chatdeepseek/deepseek-v4-flashOpenRouterAKA_CHAT_MODEL
Delegadordeepseek/deepseek-v4-flashOpenRouterAKA_DELEGATOR_MODEL
Sub-agentemistral-large-latestMistralAKA_SUBAGENT_MODEL
Sub-agente potentedeepseek/deepseek-v4-flashOpenRouterAKA_POWERFUL_SUBAGENT_MODEL

Acciones disponibles

AcciónFormato exacto
RecordatorioRECOR-DATORIO [motivo] a las [HH:MM] el día [día y mes]
AlarmaALAR-MA "[HH:MM]"
Macros( MAC-ROS carbohidratos: X proteinas: Y grasas: Z kcal: A )
ImagenIM-AGEN [descripción]
RutaCO-MOLL [ubicación]
Email`CO-RREO |<>
Archivo`AR-CHIVO |<>
Email + archivo`CO-RREOAR |<>

Uso

Endpoint

POST https://basrqtb--aka.web.val.run

Parámetros

ParámetroTipoDescripción
messagestringObligatorio — mensaje del usuario
sessionstringOpcional — ID de conversación para memoria persistente
format"json" | "text"Opcional — formato de respuesta (por defecto: text)
clearbooleanOpcional — true para borrar historial de la sesión

Ejemplos

Texto plano (Apple Shortcuts):

POST /
{"message": "Ponme una alarma para las 18:00"}
→ ALAR-MA "18:00"

JSON estructurado:

POST /
{"message": "Ponme una alarma para las 18:00", "format": "json"}
→ {"chat": "ALAR-MA \"18:00\"", "needsDelegation": false, "action": {"type": "alarm", "data": {"time": "18:00"}}, ...}

Multi-acción con delegación:

POST /
{"message": "Ponme una alarma a las 18:00 y recuérdame comprar pan a las 17:30", "format": "json"}
→ {"chat": "DELEGACION ...", "needsDelegation": true, "delegator": "EN-ANITO1 ...", "subAgents": [{"action": {"type": "alarm", "data": {"time": "18:00"}}, ...}, ...]}

Con memoria de conversación:

POST /  {"message": "Me llamo Carlos", "session": "abc123"}
POST /  {"message": "¿Cómo me llamo?", "session": "abc123"}
→ "Te llamas Carlos, según me dijiste antes."

Health check:

GET /?health
→ {"status": "ok", "models": {...}, "providers": {"openrouter": true, "mistral": true}}

Archivos

ArchivoDescripción
main.tsHTTP endpoint — routing, CORS, pipeline orquestación
api.tsWrappers de OpenRouter y Mistral con timeout, reintentos y temperatura
prompts.tsSystem prompts para chat, delegador y sub-agentes
parser.tsParser de formato EN-ANITO y de acciones estructuradas
memory.tsMemoria de conversación persistente con SQLite
types.tsInterfaces TypeScript compartidas

Variables de entorno

KeyDescripción
OPENROUTER_API_KEYObligatorio — API key de OpenRouter
MISTRAL_API_KEYObligatorio — API key de Mistral (si falta, usa OpenRouter para todo)
AKA_CHAT_MODELOpcional — modelo del chat (default: deepseek/deepseek-v4-flash)
AKA_DELEGATOR_MODELOpcional — modelo del delegador
AKA_SUBAGENT_MODELOpcional — modelo de sub-agentes normales
AKA_POWERFUL_SUBAGENT_MODELOpcional — modelo de sub-agentes potentes

Apple Shortcuts

Usar la acción "Obtener contenido de la URL" con:

  • URL: el endpoint del val
  • Método: POST
  • Cabeceras: Content-Type: application/json
  • Cuerpo: {"message": "[texto del usuario]"}

Para extraer acciones individuales en el atajo, usar format: "json" y acceder a action.type y action.data.