Protorip
---
site: protos.rip
page: docs/guides/create-and-publish-a-module
---
# Create and publish a module
```bash
buf registry login protos.rip # sign in
buf registry module create protos.rip/acme/shipments # create the module record
```
Add to `buf.yaml`:
```yaml
name: protos.rip/acme/shipments
```
```bash
buf push # first commit, on label "main"
buf push --label v1.0.0 # tag a release
```
## Sign in
```bash
buf registry login protos.rip
```
Complete the sign-in in the browser tab that opens (the token is stored locally for protos.rip). To use an API key instead, create one in the [dashboard](/dashboard) and enter it when prompted.
## Create the module
```bash
buf registry module create protos.rip/acme/shipments
```
Replace `acme` with your username or org slug — visible in your dashboard URL — and `shipments` with your module name.
Module names are 1–64 characters, lowercase, starting with a letter; digits, hyphens, and underscores allowed after.
New modules are private. Change visibility from the module page in the dashboard.
## Configure buf.yaml
Add a `name` field pointing to the module:
```yaml
version: v2
name: protos.rip/acme/shipments
```
`buf push` reads this to determine which module receives the commit.
## Push
```bash
buf push
```
First push lands a commit on the `main` label. Re-pushing identical content is a no-op.
## Tag a release
```bash
buf push --label v1.0.0
```
`--label` applies a named label to the commit. Use it to mark stable releases your consumers can pin to.
## See also