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.
git remote set-url --add origin gi.tl:$(basename $PWD) git pushThis 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:
Host gi.tl
User your-desired-user
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.
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 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
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
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.
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
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.
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.
This is a project of David Leadbeater.
Singapore. (We plan to let you pick from multiple locations.)
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.)
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.
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.)
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.
It's Timor-Leste (also known as East Timor). You could pronounce gi.tl as "git-ell".