Create a repository
You need a verified email address to create a repository. To bring an existing project from GitHub instead, see GitHub import.
Create a repository in the browser
- Open
/new. - Choose an owner: your account or an organization where you can create repositories.
- Enter:
- Name: unique within the owner.
- Visibility: Private (the default) or Public.
- Default branch:
mainunless you choose another name. - Description: optional.
- Choose Create.
The new repository is empty. Its page shows the commands to push an existing
project or start a new one; see Git access.
There are no README, license or .gitignore templates.
Create a repository from the CLI
| 1 | cafe repo create my-app --private --clone |
--org <slug> creates it in an organization, --default-branch sets the
initial branch name, and --clone clones it into a new directory.
Fork a repository
A fork is your own copy of another repository, linked to its parent so you can propose changes back with a pull request.
- Open the repository and choose Fork.
- Choose the owner and, optionally, a new name.
- Choose Create fork.
Or run cafe repo fork owner/repo --clone. Forking a private organization
repository requires the organization to allow it.
Forks copy only the parent's default branch unless you choose more. Use
cafe repo fork owner/repo --branch feature --branch release to include
additional branches, or --all-branches to copy every branch and tag instead.
The two selection flags cannot be combined. Selected branches do not copy tags.
Fork creation is asynchronous. The CLI prints a progress command:
cafe repo fork --status <repoId> --org <destination-owner>. It reads the
existing admission without starting another fork and shows its state, attempt
count, next retry and last error. --json includes those fields too. A blocked
admission has stopped; an uncertain outcome is retried until confirmed or blocked.
Copies yield between chunks within a three-minute attempt budget and request at most two minutes per native fetch, leaving time for publication and private-source credential cleanup. Completed ref batches survive a retry; interrupted pack downloads do not resume. A single branch whose initial fetch cannot finish within that budget will eventually block and needs an asynchronous native copy path, which this workflow does not yet provide.
To bring your fork's default branch up to date with its parent, run
cafe repo sync; cafe repo compare-upstream shows how far ahead or behind
it is.
Next steps
- Invite people in access settings.
- Protect branches with rulesets.
- Change the description, visibility or default branch in repository settings.