Skip to main content
GAIA is a full-stack monorepo managed with Nx. All apps, services, and shared libraries live in a single repository for unified tooling, shared code, and coordinated releases.

Top-Level Layout

apps
api
app/
pyproject.toml
.env.example
web
src/
package.json
next.config.ts
nx.json
mise.toml
pnpm-workspace.yaml
package.json

Apps

AppStackDescription
apps/apiFastAPI, LangGraph, PythonBackend API and AI agent system
apps/webNext.js 16, React 19, TypeScriptPrimary web application
apps/desktopElectron, Next.jsDesktop app wrapping the web build
apps/mobileReact Native, ExpoiOS and Android app
apps/bots/discorddiscord.pyDiscord bot integration
apps/bots/slackSlack BoltSlack bot integration
apps/bots/telegrampython-telegram-botTelegram bot integration
apps/voice-agentPythonVoice processing worker

Backend Structure (apps/api)

apps/api
app
agents
main.py
pyproject.toml
.env.example

Frontend Structure (apps/web)

apps/web/src
app

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 in project.json and Nx handles caching and parallelization.
# Run a target across all projects
nx run-many -t build

# Run a target for a specific app
nx build web
nx dev api
See Development Commands for the full list.