Projects and groups
Map one repository or monorepo to deployable projects, workflow workers, branches, and a primary domain.
A project is one deployable target: a directory and branch that produces one website, API, or workflow runtime. A group represents the repository that contains several targets. The group organizes them but does not deploy code itself.
Use one project for one deployable target
Create a standalone project when the repository has a single application. For a monorepo, create a group and one child project per independently deployed target. A typical layout is:
product (group; deploys nothing)
├── web apps/web production branch: main
├── api apps/api production branch: main
└── worker apps/worker production branch: main
Each child has its own root directory, deployment history, environment variables, logs, attached services, framework preset, runtime, and handler contract. A release of web does not implicitly release api or worker, and groups do not supply inherited runtime settings.
Choose the primary child
The group's primary child is the customer-facing entry point. Choose the website or other public front door, not a private API or workflow project. An active custom domain on that child is used; otherwise SproutOS uses its generated hostname.
Changing the primary child changes where the group points. It does not merge projects or move their environment variables and services.
Treat workflow projects as runtime children
A repository-backed workflow is still a project. It may be standalone or a child of the repository group, but it has no website hostname or custom domain because queue and schedule triggers invoke it. Use Repository workflows for BullMQ and Celery workers.
Visual workflow definitions are a different resource attached to a deployed project. They appear under Workflows → Definitions and use the visual editor. See Workflows.
Keep source and runtime responsibilities separate
SproutOS deploys the configured branch and directory. It does not infer that every package in a monorepo is a deployable application. Make build and deployment paths explicit, and use one GitHub Actions deploy step per child.
Deleting a group or child never deletes its GitHub repository. Remove source in GitHub separately only when you intend to destroy it for every consumer.