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/discordTypeScript, discord.jsDiscord bot integration
apps/bots/slackTypeScript, Slack BoltSlack bot integration
apps/bots/telegramTypeScript, grammYTelegram bot integration
apps/bots/whatsappTypeScript, WhatsApp Cloud APIWhatsApp bot integration
apps/voice-agentPythonVoice processing worker
All four bots are thin TypeScript adapters, the platform-agnostic logic (commands, streaming, API client, config) lives in libs/shared/ts/src/bots/ and is shared via @gaia/shared.

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 package (@gaia/shared) used by the web and desktop apps and all four bots, including the shared bot logic in src/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 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.