⍺lpha

Gi.tl

We're a simple little software forge for Git. Probably not your only one, that's something we expect in fact. You can add gi.tl as an additional "push" destination in your repository configuration.

We also provide short redirect URLs for other forges, allowing you to publish a URL that will always get to your project, even if it moves.

Simple setup

gi.tl aims to have the simplest possible setup, run the following in an existing repository:
git remote set-url --add origin gi.tl:$(basename $PWD)
git push
This will push to your existing origin first, then gi.tl. If this is your first time using gi.tl you'll need to accept the SSH key:
The authenticity of host 'gi.tl (an IP address here)' can't be established.
ED25519 key fingerprint is SHA256:K5oM48ZOz2hY6eVtjDPnaGWb2QY/L5wKLMTOY/NGL7Y.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

It should match exactly the fingerprint shown above. The IP address can change.

This uses your system username and attempts to create a user authorized by your SSH key. There are various reasons this might not work:

Once you've pushed something, you can ssh directly to gi.tl, which has an administration interface. The default for new repos is to have them private, use chmod o+r repo to make them public.

More advanced setup

Set up your email address

In case you lose access to your SSH key, you should set your email address so we can contact you to confirm ownership.
ssh gi.tl
Welcome to gi.tl shell. Type 'help'.
set email you@example.com
Set your email address to you@example.com.

Anonymous access

Anonymous access is still over SSH:

git clone anon@gi.tl:user/repo
If you own repo make it public by running:
ssh gi.tl
Welcome to gi.tl shell. Type 'help'.
chmod o+r repo

Short links to other forges

Once you have made a repo public, you can set an origin URL which will redirect a URL like https://gi.tl/user/repo to the origin.

ssh gi.tl
Welcome to gi.tl shell. Type 'help'.
cd repo
set origin https://github.com/octocat/Hello-World

Key management

Once you've set up one key, you can use it to ssh gi.tl and then use keys add ssh-key here... to add another key.

Push URLs

In some cases using git remote set-url --add may not behave as desired, you can use the --push option to configure different push URLs. Or you can edit the relevant .git/config, it could look like this:

[remote "origin"]
  url = https://example.com/repo
  pushurl = gi.tl:repo
  pushurl = https://example.com/repo

FAQ

This is a new service (as of November 2025). We have a lot of questions to answer, but much to develop too. So, treat this as an alpha.

Why?

Self hosting Git is a great idea, but whether you do that directly with SSH or run a forge, you need to worry about keeping that service available to others. By configuring this as another push location you can keep it updated with your code and make it easy for people to get your code (if you make it public) or just use it as a private backup location.

Who runs this?

This is a project of David Leadbeater.

Where is my data stored?

Singapore. (We plan to let you pick from multiple locations.)

Is this SSH only?

Clones are only over SSH, currently. We don't have anything against HTTP so will add more features eventually. (At the moment a git clone over HTTP will redirect on the fly to your other forge if you set an origin.)

Is my data safe?

While this is alpha, there are no guarantees. However our goal is to make a secure hosting place for your repositories and we use it for our own important data already.

How much can I store?

During alpha we have quite low limits, about 10MB per user. (We plan to offer paid services for more storage, as well as differentiating between "private" and "public" (open source) storage.)

Can I delete data?

You can push an empty ref to a branch to delete it: git push origin :main
⚠️ This will also delete the branch from your other remotes if using the configuration above. We will add a command to help with this.

.tl?

It's Timor-Leste (also known as East Timor). You could pronounce gi.tl as "git-ell".

Help?

We have IRC: #gitl on Libera.chat (webchat). Alternatively direct any conundrums, challenges, comments, compliments, coffee or complaints to me.