Vyx is version control for self hosters. Your code lives on your own server, set up with one command, and people join it with an invite code.
It's a distributed version control system, built from scratch, with its own storage format and its own network protocol. It's meant as a new alternative for Git/GitHub. Vyx is a single binary with no runtime dependencies. Just download it and put it in your path.
WARNING - VYX IS NEW AND NEEDS MORE TESTING. DO NOT USE FOR PRODUCTION. MAINTAIN YOUR OWN BACKUPS
macOS / Linux
curl -fsSL https://vyx.codes/install | sh
Windows (PowerShell)
irm https://vyx.codes/install.ps1 | iex
vyx.exe is not codesigned yet, so Windows SmartScreen will block it on first run. Click "More info" then "Run anyway" to allow it.
Once it's installed, vyx update updates vyx to the newest version, or any version.
vyx server-setup turns a Linux machine into a vyx server. The server is postgres and sshd, nothing else.
vyx invite-code shows the one code people need to join it.
Only the server has to be Linux, anyone on macOS, Linux, or Windows can connect to it.
vyx connect <host>
Connecting is per machine, not per project. It pins the server's key and asks for the invite code the first time you join.
No system ssh, and it never touches your ~/.ssh/config.
After that, vyx send-project puts a project on the server, and vyx grab, vyx push,
vyx fetch, and vyx pull move changes back and forth.
You need a Linux machine people can reach on port 22 (a cheap VPS works), root on it, and a domain pointed at it if you want one. Your own machine needs vyx too.
1. On your machine, pick a username. This also makes your key, ~/.vyx_ed25519.
vyx username-set <your-name>
2. Still on your machine, print your public key line. It starts with ssh-ed25519, copy all of it.
ssh-keygen -y -f $HOME/.vyx_ed25519
3. On the server, as root, install vyx and move it to /usr/local/bin. sshd runs it for every login,
and it can't reach it inside /root. Then set it up with your key as the owner, using the domain or ip people will connect to.
curl -fsSL https://vyx.codes/install | sh mv ~/.local/bin/vyx /usr/local/bin/vyx /usr/local/bin/vyx server-setup <domain or ip> --owner "ssh-ed25519 AAAA..."
It installs postgres, sets up sshd, and prints the invite code. Your root ssh keeps working,
vyx only takes logins for its own vyx account. Running it again is safe, it keeps the invite code and every account.
4. Back on your machine, connect. You're the owner already, so there's no invite code to type.
vyx connect <domain or ip>
5. Give the invite code to whoever you want on it. You can get it again any time.
vyx invite-code
1. Install vyx (above), then pick a username. Do this before connecting, the server takes your name from it.
vyx username-set <your-name>
2. Connect, and type the invite code when it asks. It only asks once.
vyx connect <domain or ip>
3. Put a project of yours on the server. In the project's folder:
vyx create vyx save "first save" vyx send-project
4. Or grab someone else's. It lands in a new folder named after the project.
vyx grab <owner>/<project>
5. From then on, vyx push sends your saves and vyx fetch gets everyone else's.
vyx switcheroo main does the whole round trip: gets main, merges your work into it, and pushes.
The megafile. vyx create turns your current directory into a vyx project.
All your storage goes in one megafile, a (mostly) append only file named after the directory.
You can treat it like a zip file, move it around your computer and dump out its content with a load.
Saves. vyx save "message" records the entire current state of your project at a moment in time.
It's very similar to git commit, except the staging area is optional. Saves also track the version of the project at that save.
Branches. Unlike git, where branches are pointers to commits, in vyx every save is attached to a branch.
To make a new branch, you have it form alongside a new save: vyx save --create-branch feature.
Issues. Issues live in the megafile. They travel with the repo the way tags do, so you can solve issues offline after you pull them in while online.
Run vyx on its own to open the tui, and learn the rest from there.