Inspiration
Every AI assistant is one chatbot trying to do everything. We wanted a group chat of specialists — a planner, a coach, a memory keeper, and an orchestrator — that share context and collaborate on every message. Airia's Agent Router with parallel execution was the perfect orchestration layer to make that real without building raw LLM plumbing from scratch.
What it does
Jems is a mobile AI operating system with four specialist agents orchestrated on Airia:
Noor — Agent Router that evaluates every message and fires one or more specialists in parallel Kai — Planner. Creates tasks, reminders, time-blocked schedules Echo — Memory keeper. Auto-journals your life, recalls things from weeks ago, spots patterns Sage — Growth coach. Tracks goals, nudges when things stall, surfaces friend updates Say "I've been stressed about the marathon" — the router fires Kai (training schedule), Sage (fitness goal), and Echo (that journal entry about knee pain) simultaneously. Noor synthesizes one response. Five screens, one floating dock, pure white spatial UI.
How we built it
Airia orchestration layer:
Agent Router (Noor) with parallel route execution and chat history for multi-turn awareness User-scoped Memory Objects per domain — schedule context, journal memory, goal state. Memory Load at flow start, Memory Store at flow end. Agents remember across sessions without replaying full history Shared cross_agent_context Memory Object so agents read each other's state — when Kai creates a task, Echo knows HTTP Request steps calling our FastAPI backend for Firestore CRUD MCP Gateway with cherry-picked Google Calendar and Search tools per agent — no token bloat Each agent exposed via Tool & MCP Interface for inter-agent invocation API Interface for the mobile app and scheduled proactive triggers App + data layer:
Flutter native app with glassmorphism spatial design, 3D agent spheres FastAPI on Cloud Run, Firestore, GCS, Firebase Auth 7 Cloud Scheduler cron jobs hitting Airia API endpoints for proactive behavior — morning briefings, goal nudges, memory consolidation RevenueCat subscriptions, Terraform IaC Challenges we ran into Tuning Agent Router descriptions was the biggest challenge. Too generic and Noor always self-handled. Too specific and cross-domain messages got missed. The sweet spot was action-oriented descriptions: "Handles task creation, schedule management, and reminder setting" not "The planning agent."
Cross-agent memory sharing was tricky — agents need isolated memory but also need to read each other's context. We solved it with a shared Memory Object that all agents load at flow start, essentially a context bus on Airia Memory.
Accomplishments that we're proud of The router just works — users never pick which agent to talk to, and multi-domain messages fire parallel agents seamlessly. Agents genuinely remember weeks of context through Airia Memory Objects. Proactive agents reach out via scheduled API calls without being asked. And the spatial UI feels like an OS, not a chat wrapper.
What we learned
Airia's Agent Router with parallel execution solves multi-agent orchestration problems that would take weeks to build from scratch. But the real work is route descriptions and memory architecture — the platform handles plumbing, you design what each agent owns. Memory Objects as a persistent state layer changed everything: long-term recall without burning tokens on conversation replay.
What's next for Jems
More specialist agents (health, finance, learning) as new routes in Noor's router. Airia MCP Gateway expansion to Slack, Notion, and Spotify via their 1,000+ integrations. Human-in-the-loop approvals using Airia's webhook step for high-stakes actions. An open agent marketplace where users install community agents with scoped memory and tools.
Built With
- agents
- airia

Log in or sign up for Devpost to join the conversation.