> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-docs-mcp-bridge-private-server.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up an npm connector

> C1 provides identity governance for npm. Integrate your npm organization with C1 for unified visibility and governance over user access.

C1 provides identity governance for npm. Integrate your npm organization with C1
for unified visibility and governance over who belongs to the organization, what
role they hold, and which teams they are members of.

## Capabilities

| Resource      | Sync                                                          | Provision |
| ------------- | ------------------------------------------------------------- | --------- |
| Users         | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |
| Organizations | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |
| Teams         | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |

The connector syncs the members of a single npm organization as users, the
organization itself as a group carrying the `developer`, `admin`, and `owner`
role entitlements, and every team in the organization as a group carrying a
`member` entitlement. Organization role assignments and team memberships are
synced as grants.

## Gather npm credentials

<Warning>
  You must be an **owner** or **admin** of the npm organization you want to sync,
  and you need an npm access token with organization read access.
</Warning>

<Steps>
  <Step>
    Sign in to [npmjs.com](https://www.npmjs.com/) as a user with owner or admin
    access to the target organization.
  </Step>

  <Step>
    Go to **Access Tokens** in your account settings and create a **Granular
    Access Token**. Grant it read access and scope it to the organization you
    want to sync. (Granular access tokens are the supported token type; a
    classic automation token with organization access also works.)
  </Step>

  <Step>
    Copy the generated token and note the organization name (the value after the
    `@` in a scoped package name, e.g. `my-org` in `@my-org/pkg`).
  </Step>
</Steps>

## Configure the npm connector

<Tabs>
  <Tab title="Cloud-hosted">
    Follow these instructions to use a built-in, no-code connector hosted by C1.

    <Steps>
      <Step>
        In C1, navigate to **Integrations** > **Connectors** and click **Add connector**.
      </Step>

      <Step>
        Search for **npm** and click **Add**.
      </Step>

      <Step>
        Choose how to set up the new npm connector.
      </Step>

      <Step>
        Set the owner for this connector.
      </Step>

      <Step>
        Click **Next**.
      </Step>

      <Step>
        Find the **Settings** area of the page and click **Edit**.
      </Step>

      <Step>
        Enter the npm credentials:

        * **Access token**: the npm access token you created.
        * **Organization**: the npm organization scope to sync (e.g. `my-org`).
      </Step>

      <Step>
        Click **Save**.
      </Step>

      <Step>
        The connector's label changes to **Syncing**, followed by **Connected**. You can view the logs to ensure that information is syncing.
      </Step>
    </Steps>

    **Done.** Your npm connector is now pulling access data into C1.
  </Tab>

  <Tab title="Self-hosted">
    Follow these instructions to run the npm connector in your own environment.

    <Steps>
      <Step>
        Create a secret for the npm access token.
      </Step>

      <Step>
        Configure the connector settings:

        * **Access token**: the npm access token you created.
        * **Organization**: the npm organization scope to sync (e.g. `my-org`).
      </Step>

      <Step>
        Deploy the connector using your standard self-hosted connector process.
      </Step>
    </Steps>

    **Done.** Your npm connector is now pulling access data into C1.
  </Tab>
</Tabs>

<Note>
  npm has no global, cross-organization user directory, so each connector instance
  syncs a single organization. To govern multiple npm organizations, add one
  connector per organization.
</Note>
