Running locally
The backend lives in apps/server/ (monorepo); run its tooling from there:
pnpm install # once at the repo root (single root lockfile)
cd apps/server
pnpm run check # lint + type-check + tests + build (the local merge gate)
BLOOM_LLM_PROVIDER=fake pnpm run dev # run the API offline, no API keys needed
Set real credentials in .env (copy from
.env.example) to use Claude,
Telegram, and GitHub. With BLOOM_LLM_PROVIDER=fake, Bloom produces deterministic placeholder
artifacts so the whole flow runs without a network.