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

# CI/CD License

> Automated pipeline access for continuous integration

## Overview

A CI/CD License enables automated builds in continuous integration and deployment pipelines. Unlike Individual or Team Licenses which require interactive GitHub authentication, the CI/CD License uses a token that can be stored as an environment variable.

Each subscription includes one CI/CD License that can be used across all your pipelines.

<Info>
  The CI/CD License is designed for automation. Use it in GitHub Actions, CircleCI, Bitrise, Azure Pipelines, or any other CI/CD system.
</Info>

## How It Works

1. **Create your CI/CD License** from your [dashboard](https://uniwind.dev/dashboard)
2. **Store the token** as `UNIWIND_AUTH_TOKEN` secret in your CI/CD platform
3. **Run install** - the postinstall script automatically authenticates and downloads
4. **Build your app** with Uniwind Pro included

## Download Limits

| Metric            | Limit             |
| ----------------- | ----------------- |
| Monthly downloads | **1,000**         |
| Reset period      | 1st of each month |

<Info>
  CI/CD pipelines typically run more frequently than manual installs. The 1,000 download limit accommodates most team workflows with room to spare.
</Info>

<Tip>
  Need higher limits? Contact [support@uniwind.dev](mailto:support@uniwind.dev) to discuss extended quotas for your pipelines.
</Tip>

## Creating Your CI/CD License

1. Navigate to your [dashboard](https://uniwind.dev/dashboard)
2. Go to **Licenses** section
3. Click **Add License**
4. Select **CI/CD** license type
5. Click **Create**

You'll receive a license UUID that serves as your CI/CD token. Use this single token across all your pipelines.

<Warning>
  Treat your CI/CD token like a password. Never commit it to version control. Always use secret management.
</Warning>

## Pipeline Configuration

The `uniwind-pro` package automatically detects CI/CD environments. Simply set the `UNIWIND_AUTH_TOKEN` environment variable with your CI/CD license UUID, and the postinstall script will handle authentication automatically.

```bash theme={null}
UNIWIND_AUTH_TOKEN=your-license-uuid
```

<Info>
  When `UNIWIND_AUTH_TOKEN` is set, the postinstall script automatically downloads Uniwind Pro during `npm install` (or your package manager's install command).
</Info>

### Example: GitHub Actions

```yaml .github/workflows/build.yml theme={null}
name: Build App

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm install
        env:
          UNIWIND_AUTH_TOKEN: ${{ secrets.UNIWIND_AUTH_TOKEN }}

      - name: Build
        run: npm run build
```

Add `UNIWIND_AUTH_TOKEN` to your repository secrets in Settings > Secrets and variables > Actions.

<Tip>
  Cache your `node_modules` to reduce CI/CD download count. Downloads only occur when `uniwind-pro` is not already in `node_modules`.
</Tip>

<Info>
  Uniwind Pro's built-in local cache is only for local development environments, and it also works across Git worktrees on the same machine. CI runners do not use that local cache, so configure CI caching explicitly.
</Info>

### Example: Expo EAS Build

Add `UNIWIND_AUTH_TOKEN` as a secret in your [EAS project settings](https://expo.dev).

## Security Best Practices

<CardGroup cols={2}>
  <Card title="Use secret management" icon="lock">
    Never hardcode the token. Use your CI platform's secret management.
  </Card>

  <Card title="Rotate periodically" icon="rotate">
    Regenerate your token from the dashboard if you suspect it's compromised.
  </Card>

  <Card title="Use caching" icon="box">
    Cache the package to minimize downloads and reduce exposure of your token.
  </Card>

  <Card title="Monitor usage" icon="eye">
    Review CI/CD license usage in your dashboard for anomalies.
  </Card>
</CardGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Access denied error">
    The license token is invalid or not set. Check that:

    * `UNIWIND_AUTH_TOKEN` environment variable is set correctly
    * The token is correctly copied (no extra spaces)
    * The license hasn't been revoked
    * The subscription is active
  </Accordion>

  <Accordion title="Download limit reached">
    You've exceeded the 1,000 monthly download limit. Options:

    * Cache `node_modules` to reduce downloads
    * Wait for monthly reset
    * Contact support for limit increase
  </Accordion>

  <Accordion title="Postinstall script not running">
    Some CI environments disable postinstall scripts. Ensure your package manager allows them, or see the [Installation guide](/pro/installation#whitelisting-postinstall-scripts) for whitelisting instructions.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Individual License" icon="user" href="/pro/individual-license">
    Personal license for development
  </Card>

  <Card title="Team License" icon="users" href="/pro/team-license">
    Shared license for team projects
  </Card>
</CardGroup>
