This page describes how things work on Grid projects.For Dedicated Gen 2 projects, read about how Dedicated Gen 2 projects are structured.
.upsun/config.yaml file.
- One router
- One or more app containers
- Zero or more service containers
- Zero or more worker containers

Router
Each environment always has exactly one router. This router maps incoming requests to the appropriate app container and provides basic caching of responses, unless configured otherwise. The router is configured in a.upsun/config.yaml file.
If you don’t include configuration, a single default route is deployed.
Read more about how to define routes.
Apps
You always need at least one app container, but you can have more. App containers run the code you provide via your Git repository. They handle requests from the outside world and can communicate with other containers within the environment. Each app container is built from a specific language image with a given version for the language. To configure your apps, you usually create a single.upsun/config.yaml file
and place it in the repository root.
Read more about how to configure apps.
Services
You don’t need any service containers, but you can add them as you like. Service containers run predefined code for specific purposes, such as a database or search service. You don’t need to add their code yourself, just set up how your apps communicate with them. Service containers are configured by the.upsun/config.yaml file.
Read more about how to add services.