Skip to content

Getting started

This is the shortest real path from nothing to a repository with your code in it. It uses plain git — there is no extra tooling to install.

Sign up at neosource.dev/signup. Signups are open; there is no waitlist or invite code.

If the handle you pick is already owned by someone on GitHub, signup pivots to a GitHub OAuth flow instead of failing: handles are claimed by proof, so the GitHub account holding that name is the one that gets it here.

Signup is rate-limited to five accounts per source IP per hour, which only matters if you are creating several at once.

Already have an account? Log in.

Go to /new. You need a name and a visibility:

  • Public — anyone can read it.
  • Private — only you and the people you grant access.

Your repository then lives at https://neosource.dev/<owner>/<repo>.

The same page can import an existing repository from a public Git URL instead of starting empty — see Migrating from GitHub.

You can skip this step entirely. Pushing to a repository that does not exist yet creates it, over SSH and over HTTPS alike:

Terminal window
git remote add origin ssh://git@neosource.dev/<your-handle>/my-project.git
git push -u origin main

Repositories created this way are private. Change that on the repository’s settings page if you want it public.

The rules are the same ones the /new page follows: you have to be authenticated (an anonymous push is challenged, not accepted), and you have to be allowed to create repositories where you are pushing — your own namespace always, an organization only if it has granted you that. A git clone or git fetch never creates anything, so a typo in a clone URL still fails cleanly.

Pick one. Both are managed at /settings/developer.

Add your public key on that page, then use the SSH URL. This is the usual choice for day-to-day work.

Create a token on the same page and use it over HTTPS. When Git prompts for credentials:

  • Username — anything. It is ignored.
  • Password — your token.

Tokens are fine-grained and expiring. For pushing, grant repo:write and restrict the token to the repository you are pushing to. For a token that only needs to clone or pull, repo:read is enough.

Both URL forms are shown on the repository page.

Terminal window
# HTTPS — the .git suffix is required
git remote add origin https://neosource.dev/<owner>/<repo>.git
# or SSH — the .git suffix is optional
git remote add origin ssh://git@neosource.dev/<owner>/<repo>.git
git push -u origin main

Pushing an existing project is the ordinary sequence, with nothing neosource-specific about it:

Terminal window
cd my-project
git remote add origin https://neosource.dev/<owner>/my-project.git
git push -u origin main

Open https://neosource.dev/<owner>/<repo>.

View Path
Code browser /<owner>/<repo>, plus /tree/… and /blob/…
Commits /<owner>/<repo>/commits/<ref>
A single commit /<owner>/<repo>/commit/<oid>
Pull requests /<owner>/<repo>/pulls
Issues /<owner>/<repo>/issues
Actions (CI) /<owner>/<repo>/actions
Operations /<owner>/<repo>/operations
Settings /<owner>/<repo>/settings/general

If you use jj, it works against the same URLs with no extra configuration, because jj speaks Git:

Terminal window
jj git clone https://neosource.dev/<owner>/<repo>.git

You never have to. Git is the default and fully first-class — see Protocols: Git and jj.

neosource has a command-line client, neo, and it is installable now:

Terminal window
curl -LsSf https://get.neosource.dev | sh

Nothing on this page needs it — plain git and the web UI are the supported path, and stay that way. neo is worth having for issues, pull requests, running a workflow locally, and registering your machine as a CI runner. See Install the CLI.