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
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
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.

