Skip to main content

<DM />

Back to blog
AI

Building an AI assistant with chat, memory, and voice

How the monorepo is structured for streaming chat, Qdrant memory, multi-agent planning, and a voice pipeline across Expo and Next.js.

Building an AI assistant with chat, memory, and voice

I set out to build a personal AI assistant that behaves like a full product. That means streaming replies, durable memory, tools, and voice on both mobile and web.

Scope

The AI Assistant Platform is a monorepo with Expo and Next.js clients, a Fastify API gateway with Socket.IO, and a FastAPI runtime for model routing, retrieval, planning, and voice.

  • Streaming chat over sockets with a shared capability catalog
  • Memory with PostgreSQL and Qdrant for retrieval
  • Voice path from speech to text, model response, then text to speech
  • Local development with Tilt, Docker Compose, and monitoring hooks

Architecture

Clients do not call model providers directly. Traffic goes through the gateway into the AI runtime so auth, rate limits, and tracing stay consistent on mobile and web.

What this demonstrates

The project covers product UI, realtime systems, AI integration, and infrastructure in one codebase, rather than a thin React layer on top of an external API.

See it on the homepage under Open Source & Tools, or on GitHub.