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 | discord.py | Discord bot integration |
apps/bots/slack | Slack Bolt | Slack bot integration |
apps/bots/telegram | python-telegram-bot | Telegram bot integration |
apps/voice-agent | Python | Voice processing worker |
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 utilities shared between the web and desktop apps.
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.

