> ## Documentation Index
> Fetch the complete documentation index at: https://docs.westyx.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a service

> Add a backend or frontend service to your project.

A service is the unit of work in Nexus - it gets its own slug-based endpoint, API keys, and three types of data storage: secrets, configs, and flags. See the [Glossary](/concepts/glossary) for a full definition of service types.

## Steps

<Steps>
  <Step title="Open your project">
    In the left sidebar, click **Projects**, then click on the project you want to add a service to.
  </Step>

  <Step title="Create a new service">
    On the **Services** tab, click the **+ New Service** button in the top-right corner.

    <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-services-list.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=78a55debc0f920127f6749dcfc38e992" alt="Services list" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1605" height="723" data-path="images/how-to/create-service/light-services-list.png" />

    <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-services-list.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=b3fc08c7e632dd186a618ab39a73f32c" alt="Services list" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1605" height="723" data-path="images/how-to/create-service/dark-services-list.png" />
  </Step>

  <Step title="Fill in the service details">
    **Name** - a slug-style identifier for the service (e.g. `my-backend-api`).

    **Environment** - select which of the project's environments this service belongs to. The available options depend on your project's tier.

    **Kind** - choose between Backend and Frontend:

    <Tabs>
      <Tab title="Backend">
        Backend services use secret key pairs (`wxs_...`). They can store secrets, configs, and flags.

        <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-new-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=456b1cf9aaa3f6e6f841bfee91791f4e" alt="New backend service dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="426" height="512" data-path="images/how-to/create-service/light-new-backend-service.png" />

        <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-new-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=38f506f104a15cc9702f9bdf2d91e2e3" alt="New backend service dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="426" height="512" data-path="images/how-to/create-service/dark-new-backend-service.png" />

        <Note>
          If your project uses Workload Identity Federation, add a trust policy before connecting - use the **Add policy →** link in the dialog.
        </Note>
      </Tab>

      <Tab title="Frontend">
        Frontend services use public key pairs (`wxp_...`). They support configs and flags only - secrets are never sent to the browser.

        <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-new-frontend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=e319cb5e7ede01bd414a3c440e0c6a97" alt="New frontend service dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="429" height="673" data-path="images/how-to/create-service/light-new-frontend-service.png" />

        <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-new-frontend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=38ba90501a4d84986208be5227603df2" alt="New frontend service dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="429" height="673" data-path="images/how-to/create-service/dark-new-frontend-service.png" />

        <Warning>
          The service kind is permanent and cannot be changed after creation.
        </Warning>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Optionally enable Umbrella mode">
    Toggle **Umbrella service** if you want this service to act as a shared store for other services of the same kind. An umbrella service has no endpoint or API keys of its own - it only provides secrets, configs, and flags to the services linked to it.

    See the [Glossary](/concepts/glossary#umbrella-service) for a full explanation of how umbrella services work.
  </Step>

  <Step title="Create the service">
    Click **Create service**. The service detail panel opens on the right.

    <Tabs>
      <Tab title="Backend">
        <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-empty-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=fe3ffc30965a97f9cc57455cd0a97ae0" alt="Empty backend service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1091" height="807" data-path="images/how-to/create-service/light-empty-backend-service.png" />

        <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-empty-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=da443a38a2f106d0fc03457a106fb11e" alt="Empty backend service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1091" height="807" data-path="images/how-to/create-service/dark-empty-backend-service.png" />

        Generate your **SK - Primary** key to start connecting SDKs. A secondary key is available for zero-downtime key rotation.
      </Tab>

      <Tab title="Frontend">
        <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-empty-frontend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=904524a04755d2093f9bf9b7499bface" alt="Empty frontend service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1089" height="804" data-path="images/how-to/create-service/light-empty-frontend-service.png" />

        <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-empty-frontend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=e1f410778e767d3d15b606b3023f0518" alt="Empty frontend service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1089" height="804" data-path="images/how-to/create-service/dark-empty-frontend-service.png" />

        Generate your **PK - Primary** key to start connecting SDKs.
      </Tab>

      <Tab title="Umbrella">
        <img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-empty-umbrella-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=e52a9247a6ad474adf757484b8ac0bb5" alt="Empty umbrella service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1089" height="804" data-path="images/how-to/create-service/light-empty-umbrella-backend-service.png" />

        <img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-empty-umbrella-backend-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=3bd64c4bd429b6ce917dcfd3021e0bf3" alt="Empty umbrella service" style={{ borderRadius: '8px', margin: '1rem 0' }} width="1089" height="804" data-path="images/how-to/create-service/dark-empty-umbrella-backend-service.png" />

        An umbrella service has no API keys or endpoint. Add secrets, configs, and flags here, then link other services to it.
      </Tab>
    </Tabs>
  </Step>
</Steps>

## Link a service to an umbrella

To link an existing service to an umbrella, click the **chain link icon** (⛓) on the right side of the service row in the services list.

<img className="block dark:hidden" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/light-link-umbrella-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=5913ec085eec684d092e684ba3844d67" alt="Link to umbrella dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="491" height="250" data-path="images/how-to/create-service/light-link-umbrella-service.png" />

<img className="hidden dark:block" src="https://mintcdn.com/westyx/_9cpGOEM5QxtWxk8/images/how-to/create-service/dark-link-umbrella-service.png?fit=max&auto=format&n=_9cpGOEM5QxtWxk8&q=85&s=4f82955b3d24d31e97c09dec2216749b" alt="Link to umbrella dialog" style={{ borderRadius: '8px', margin: '1rem 0' }} width="491" height="250" data-path="images/how-to/create-service/dark-link-umbrella-service.png" />

Select the umbrella service from the dropdown and click **Link**.

## Developer environments

Each developer on the project gets their own personal **developer environment** with full freedom to create and modify services. These are hidden by default in the services list to avoid clutter - toggle **Dev envs** in the top-right corner to show them.

## Next steps

<CardGroup cols={2}>
  <Card title="Create a secret" icon="lock" href="/how-to/create-secret">
    Store an encrypted secret in your service.
  </Card>

  <Card title="Create a config" icon="sliders" href="/how-to/create-config">
    Add a typed configuration value.
  </Card>

  <Card title="Quickstart" icon="bolt" href="/quickstart">
    Connect an SDK to your new service.
  </Card>

  <Card title="Glossary" icon="book" href="/concepts/glossary">
    Understand the core concepts behind Nexus.
  </Card>
</CardGroup>
