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

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.
See Development Commands for the full list.