> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/miscellaneous-integrations/private-registries/gcp-artifact-registry.md).

# Google Cloud Artifact Registry

Route your registry traffic through Aikido's registry proxy by configuring Google Cloud Artifact Registry as an intermediary. Artifact Registry pulls packages from Aikido instead of the public registries, so every package your team installs is checked for malware, age restrictions, and known vulnerabilities.

{% stepper %}
{% step %}

### Get your Aikido proxy URL

Go to [Settings > Registry Proxy](https://app.aikido.dev/issues/fix/extended-lifecycle-support/setup-instructions), select your ecosystem and copy the upstream proxy URL

<figure><img src="/files/CQs3cGmBqB46HhVonCW4" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Create a Remote Repository in Artifact Registry

1. In the Google Cloud Console, go to **Artifact Registry > Repositories**.
2. Click **Create Repository**.
3. Give the repository a name, for example `aikido`.
4. Set **Format** to match your ecosystem (npm, Python, or Maven).
5. Set **Repository mode** to **Remote**.
6. Under **Remote repository source**, select **Custom**.
7. In the **Custom repository** field, paste your Aikido proxy URL from step 1.
8. Set **Remote repository authentication mode** to **Unauthenticated**.
9. Choose a **Region** and click **Create**.

{% hint style="warning" %}
The **Custom repository URL** is immutable after creation. If you need to change it, delete the repository and create a new one.
{% endhint %}
{% endstep %}

{% step %}

### (Optional) Create a Virtual Repository

If you also publish internal packages to a Standard repository in Artifact Registry, create a Virtual Repository that aggregates both:

1. Go to **Artifact Registry > Repositories > Create Repository**.
2. Set **Format** to match your remote repository and **Repository mode** to **Virtual**.
3. Add your Standard repository and the Remote repository from step 2 as upstream repositories.
4. Assign a priority to each upstream: higher priority is preferred when a package exists in multiple upstreams.
5. Point your package manager at the Virtual Repository URL instead.

This gives your team a single registry endpoint that serves both internal packages and externally proxied packages through Aikido.
{% endstep %}

{% step %}

### Configure Developer Machines to use Artifact Registry

Point each developer's package manager at the Artifact Registry repository (the Virtual Repository, if you created one). See Google Cloud's documentation for the exact steps:

{% tabs %}
{% tab title="npm" %}
[Configure authentication for npm](https://cloud.google.com/artifact-registry/docs/nodejs/authentication)
{% endtab %}

{% tab title="Python" %}
[Configure authentication for Python](https://cloud.google.com/artifact-registry/docs/python/authentication)
{% endtab %}

{% tab title="Maven" %}
[Configure authentication for Maven](https://cloud.google.com/artifact-registry/docs/java/authentication)
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

### (Optional) Block the public registry with Device Protection

Once Artifact Registry is in place, developers can still bypass it by pointing their package manager directly at the public registry. Deploy Aikido Device Protection to enforce that all traffic goes through your private registry.

{% content-ref url="/pages/sa7N9YXthBxZbm6WmKBq" %}
[Block Public Package Registries](/aikido-device-protection/using-aikido-endpoint/block-public-package-registries.md)
{% endcontent-ref %}
{% endstep %}
{% endstepper %}


---

# 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://help.aikido.dev/miscellaneous-integrations/private-registries/gcp-artifact-registry.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.
