> For the complete documentation index, see [llms.txt](https://docs.flxbl.io/flxbl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flxbl.io/flxbl/codev/integrations/package-registries/jfrog.md).

# JFrog Artifactory

The JFrog Artifactory integration gives codev's workflows authenticated access to your Artifactory npm registry, so your builds and pipelines can install (and publish) private npm packages without committing tokens to your repository.

You configure it under **Settings > Organization > Integrations > JFrog Artifactory**. Only organization owners can manage it.

<figure><img src="/files/jXcz504jF0TEF1bn48bo" alt="The JFrog Artifactory integration form with Base URL, Repository, Username, Password, and Scope fields"><figcaption><p>Adding a JFrog Artifactory integration — the <strong>Repository</strong> is the npm repository key codev uses to build the registry URL.</p></figcaption></figure>

## What the JFrog integration does

codev stores your Artifactory URL and credentials and uses them to generate an authenticated `.npmrc` on demand when a workflow needs it — for example, when a build or validation step installs private dependencies. The token is never written into your repository; codev produces the `.npmrc` at run time and the workflow consumes it.

This is one of codev's **artifact registry** integrations, alongside [npm Registry](/flxbl/codev/integrations/package-registries/npm.md), GitLab Package Registry, and GitHub Packages.

## Authentication

JFrog connects with one of two methods:

| Method         | What you provide                                                                                   |
| -------------- | -------------------------------------------------------------------------------------------------- |
| **Basic Auth** | Base URL, Repository, a username, and a password (use a dedicated service account where possible). |
| **API Key**    | Base URL, Repository, and an API key.                                                              |

The **Repository** is the key of your Artifactory npm repository (e.g. `npm-local`). codev builds the registry URL `https://<base-url>/artifactory/api/npm/<repository>/` from the Base URL and Repository, so both are required.

Both methods also accept an optional **Scope** — an npm scope **without** the leading `@` (e.g. `my-org`). It defaults to the repository owner if left blank.

### Creating the credentials

1. Open your JFrog Platform instance.
2. Create (or pick) an npm repository — its key is the **Repository** value (e.g. `npm-local`).
3. For **Basic Auth**, use your username and password, or create a dedicated service account under *User Management > Users*.
4. For an **API Key**, open your user profile settings and generate an API key from the *Authentication Settings* section.
5. Use your Artifactory instance URL (e.g. `https://your-instance.jfrog.io`) as the **Base URL**.

## Adding the integration

1. Go to **Settings > Organization > Integrations > JFrog Artifactory**.
2. Under **Add New Integration**, choose **Basic Auth** or **API Key**.
3. Enter the **Base URL**, **Repository**, and credentials, and optionally a **Scope**.
4. Set **Availability** to **Global** (optionally marking it the default) or to a **specific project**.
5. Click **Add Integration**.

## Which registry codev uses

When more than one artifact-registry integration is configured, codev chooses one by the **default** flag first, then by type in the order **GitHub Packages → JFrog → npm → GitLab**. If you rely on JFrog and also have another registry configured, mark JFrog as the **default** for the artifact-registry category.

To switch which registry your workflows use, open the integration you want and tick **Set as default for this provider category** — codev clears the previous default automatically, so the next `.npmrc` it generates points at the newly chosen registry.

{% content-ref url="/pages/NZddLqI4QEraOuxpyID7" %}
[npm Registry](/flxbl/codev/integrations/package-registries/npm.md)
{% endcontent-ref %}

## Scoping and precedence

Each integration is either **Global (all projects)** or scoped to a **specific project**, and a global integration can be marked the **default**. When codev needs a registry credential for a project, it picks the most specific match: a **project**-scoped integration, then the category **default**, then a **global** integration.

## Self-hosting

The JFrog integration works the same on a self-hosted instance. Server-level configuration is covered in the [sfp server](https://docs.flxbl.io/sfp-server) documentation.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.flxbl.io/flxbl/codev/integrations/package-registries/jfrog.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
