Where can I find out what is free and what isn't?

For example, I’m looking at these docs:

It says it moved to free. However I’m getting 403s when I try to publish.

I’m using the saas version.


Hi @Resister!

As you’ve noted as as we have in the docs, Package Registry is available in GitLab’s Free tier. See Move the Package Registry from EE to Core (#221259) · Issues · GitLab.org / GitLab · GitLab for more details.

Additionally, with the SaaS version of GitLab, public projects get access to Ultimate features free of charge, as a way to show our appreciation for Open Source projects hosted on GitLab SaaS.

If you’re getting 403’s when trying to publish, the problem is mostly likely unrelated to GitLab product tiers.

Can you share some additional context about this 403 error?

  • Are you trying to publish to package registry using GitLab CI/CD?
  • What type of package are you trying to publish to package registry?
  • What happens just prior to the 403 error?


Hi @gitlab-greg

Thanks for wanting to help me on this!

I thought it might be possible, since this blog post that states its part of premium.

Using GitLab NPM Registry. A quick walkthrough on how to use… | by Jon Black | Medium

Anyway, I made a dummy repo here

Here is my package.json, .gitlab-ci-.yml, and complete log output of my ci running npm publish --loglevel verbose

  "name": "@resister/gitlab-publish",
  "version": "1.0.0",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "git+https://gitlab.com/resister/gitlab-publish.git"
  "files": [
  "author": "",
  "license": "MIT",
  "publishConfig": {
    "access": "public",
    "@resister:registry" : "https://gitlab.com/api/v4/projects/24378785/packages/npm/"
image: node:14-slim

  - deploy

  stage: deploy
    - echo "@${CI_PROJECT_ROOT_NAMESPACE}:registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/">.npmrc
    - echo "//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_TOKEN}">.npmrc
    - npm publish --loglevel verbose

$ echo "@${CI_PROJECT_ROOT_NAMESPACE}:registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/">.npmrc
$ echo "//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_TOKEN}">.npmrc
$ npm publish --loglevel verbose
npm info it worked if it ends with ok
npm verb cli [
npm verb cli   '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   'publish',
npm verb cli   '--loglevel',
npm verb cli   'verbose'
npm verb cli ]
npm info using npm@6.14.11
npm info using node@v14.15.5
npm verb npm-session 900f437b68e99ab9
npm verb publish [ '.' ]
npm info lifecycle @resister/gitlab-publish@1.0.0~prepublish: @resister/gitlab-publish@1.0.0
npm info lifecycle @resister/gitlab-publish@1.0.0~prepare: @resister/gitlab-publish@1.0.0
npm info lifecycle @resister/gitlab-publish@1.0.0~prepublishOnly: @resister/gitlab-publish@1.0.0
npm info lifecycle @resister/gitlab-publish@1.0.0~prepack: @resister/gitlab-publish@1.0.0
npm info lifecycle @resister/gitlab-publish@1.0.0~postpack: @resister/gitlab-publish@1.0.0
npm notice 
npm notice package: @resister/gitlab-publish@1.0.0
npm notice === Tarball Contents === 
npm notice 18B  index.js    
npm notice 397B package.json
npm notice === Tarball Details === 
npm notice name:          @resister/gitlab-publish                
npm notice version:       1.0.0                                   
npm notice package size:  368 B                                   
npm notice unpacked size: 415 B                                   
npm notice shasum:        96d98c075977446d27205dcca3a36cd9698fe4e8
npm notice integrity:     sha512-2OU2O0cnfmBZe[...]O5cnukODC39pw==
npm notice total files:   2                                       
npm notice 
npm http fetch PUT 403 https://gitlab.com/api/v4/projects/24378785/packages/npm/@resister%2fgitlab-publish 162ms
npm verb stack Error: 403 Forbidden - PUT https://gitlab.com/api/v4/projects/24378785/packages/npm/@resister%2fgitlab-publish
npm verb stack     at /usr/local/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:117:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm verb statusCode 403
npm verb pkgid @resister/gitlab-publish@1.0.0
npm verb cwd /builds/Resister/gitlab-publish
npm verb Linux 4.19.78-coreos
npm verb argv "/usr/local/bin/node" "/usr/local/bin/npm" "publish" "--loglevel" "verbose"
npm verb node v14.15.5
npm verb npm  v6.14.11
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://gitlab.com/api/v4/projects/24378785/packages/npm/@resister%2fgitlab-publish
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy.
npm verb exit [ 1, true ]
npm timing npm Completed in 624ms
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-02-13T18_23_11_604Z-debug.log
Cleaning up file based variables 00:01
ERROR: Job failed: exit code 1

One reason that it might be failing is my username used to be captilized, eg Resister, but the npm scoping doesn’t allow that so I change it to lower case on my profile.

All of my settings are turned on for registry. which can be seen on the repo. I used a $DEPLOY_TOKEN and a $PERSONAL_TOKEN and nothign changes.

Thanks again!

@gitlab-greg I was able to publish to the generic packages.
And install it like so

@sway-me/ui-kit": "https://gitlab.com/sway-me/shared/ui-kit/-/archive/v0.1.1/ui-kit-v0.1.1.tar"

not ideal. I’d still really like a proper npm registry.

@gitlab-greg ?

Hi @Resister !

Thanks for the ping. To be transparent, I’m at currently capacity and I don’t have much experience using the NPM registry, so I am unable to assist you at this time.

That said, our community forum is a great resource for questions like this. I expect there’s someone that knows the answers or solutions you’re looking for, but this forum thread is not landing on their radar. I expect your NPM registry issue this isn’t getting the attention it normally would because the post title is unrelated to the current topic.

I suggest copying your two previous comments into a new forum thread with a topic that better describes what you’re looking to do.

Best of luck!