Top-level layout
apps
api
app/
pyproject.toml
.env.example
web
src/
package.json
next.config.ts
desktop
mobile
bots
voice-agent
libs
infra
docs
nx.json
mise.toml
pnpm-workspace.yaml
package.json
Apps
| App | Stack | Description |
|---|---|---|
apps/api | FastAPI, LangGraph, Python | Backend API and AI agent system |
apps/web | Next.js 16, React 19, TypeScript | Primary web application |
apps/desktop | Electron, Next.js | Desktop app wrapping the web build |
apps/mobile | React Native, Expo | iOS and Android app |
apps/bots/discord | TypeScript, discord.js | Discord bot integration |
apps/bots/slack | TypeScript, Slack Bolt | Slack bot integration |
apps/bots/telegram | TypeScript, grammY | Telegram bot integration |
apps/bots/whatsapp | TypeScript, WhatsApp Cloud API | WhatsApp bot integration |
apps/voice-agent | Python | Voice processing worker |
libs/shared/ts/src/bots/ and is shared via @gaia/shared.
Backend structure (apps/api)
apps/api
app
agents
core
tools
memory
llm
prompts
api
core
db
models
services
workers
main.py
pyproject.toml
.env.example
Frontend structure (apps/web)
apps/web/src
app
(landing)
(app)
features
components
stores
lib
types
Shared libraries (libs/)
The libs/shared directory contains code shared across multiple apps:
libs/shared/py: Python package (gaia-shared) with common utilities, logging, config, and Pydantic models. Automatically available to all Python apps via workspace dependencies.libs/shared/ts: TypeScript package (@gaia/shared) used by the web and desktop apps and all four bots, including the shared bot logic insrc/bots/.
Infrastructure (infra/)
Docker Compose files live in infra/docker/:
docker-compose.yml, Local development (PostgreSQL, MongoDB, Redis, ChromaDB, RabbitMQ)docker-compose.prod.yml, Production deployment
Build system
GAIA uses Nx for orchestrating builds, linting, formatting, and type-checking across all projects. Each app declares its own targets inproject.json and Nx handles caching and parallelization.

