# Create Your First Repository

> Create a Maven, Python, npm or Docker repository in the admin portal, find its URL, and connect your tool to it.

A repository stores the artifacts of one format. Create one for the format you build with, then connect your tool to it.

## Choose a type

| You build with  | Choose                         |
| --------------- | ------------------------------ |
| Maven or Gradle | **Maven** (Java / JVM)         |
| pip or twine    | **Python** (PyPI packages)     |
| npm             | **npm** (JavaScript / Node.js) |
| Docker          | **Docker** (Container images)  |

## Create it

1. Sign in to the [admin portal](https://admin.cloudrepo.io) and click **Repositories** in the sidebar.

2. Click **Create Repository**. If you do not see the button, your user cannot manage repositories: ask your organization owner.

3. Under **Repository ID**, type a name such as `releases`. It becomes part of the repository’s URL. Use lowercase letters, numbers and hyphens only, up to 32 characters.

4. Under **Repository Type**, choose your format.

   ![Repository ID holds libs-release and the Maven tile is chosen.](/docs/_astro/shots/create-repository/3-maven.2f27a183fc3f8e6c.png)

5. Under **Repository Mode**, keep **Local**: you publish to it and read from it, and CloudRepo stores your artifacts. The other modes are for later: **Proxy**, and, for Maven and Docker, **Group**. See [Proxy Repositories](/docs/consume/proxy-repositories.html).

6. Click **Create Repository**.

Expected: the portal opens a page headed **Connect to your-repo**. Its **Quick Start** card shows your repository URL, and the setup for your tool is on the cards below it. If it says *A repository with this ID already exists. Please choose a different name.*, choose another ID.

![After Create Repository, the portal opens Connect to libs-release with its repository URL and the Maven settings.](/docs/_astro/shots/create-repository/7-created.6e952bbb1f104cec.png)

## Your repository’s URL

For Maven, Python and npm, the URL is your organization’s host plus the repository:

```text
https://your-org.mycloudrepo.io/repositories/your-repo
```

`your-org` is the organization ID you signed up with, and `your-repo` is the repository ID. Docker is different: `docker login` takes only the host, `your-org.mycloudrepo.io`, and the repository goes in the image reference. [Docker Repositories](/docs/formats/docker.html) shows both.

A new repository is private: reading and publishing both need a credential. You can turn on **Public Access** in the repository’s settings so that anyone can read a Maven, Python or npm repository without one; see [Enabling Public Repository Access](/docs/manage/repositories.html#enabling-public-repository-access).

## Connect your tool

1. [Create a repository token](/docs/authenticate/repository-tokens.html). Build tools send a token, not the password you sign in with.
2. Follow the page for your format, which has a ready-to-paste setup and a command that checks it: [Maven](/docs/formats/maven.html), [Python](/docs/formats/python.html), [npm](/docs/formats/npm.html) or [Docker](/docs/formats/docker.html).

> **Note:** If you want teammates or a CI system to have their own credentials, see [Create Your First User](/docs/get-started/add-users.html).

---

The page: https://www.cloudrepo.io/docs/get-started/first-repository.html
