Oxygen
Oxygen (oxy) is a distributed version control system written in Rust. It keeps history as a set of changes rather than a chain of snapshots, treats conflicts as data, signs everything with post-quantum signatures, and can keep a repository on storage you choose, from your laptop to your own cloud bucket.
This wiki explains how Oxygen works, with a diagram wherever one helps. Start with Getting Started to use it, or Concepts to understand it.
flowchart LR
You([You]) -->|oxy commit| WC[Working copy]
WC --> Repo[(Local repository<br/>changes, states, op log)]
Repo <-->|oxy push / pull| Hub[(OxygenHub<br/>or oxy serve)]
Repo <-->|oxy push / pull| Bucket[(Your bucket<br/>S3, GCS, Azure)]
Repo <-->|oxy git fetch / push| Git[(A Git remote)]
Hub --> Flow[[OxygenFlow<br/>runs your pipelines]]
What makes it different
| Idea | What it means for you | Read more |
|---|---|---|
| History is a set of changes | Independent work never needs a merge commit or a rebase | Changes and Dependencies |
| Conflicts are data | A conflicted state can be committed, pushed and fixed later | Conflicts |
| Two identifiers per change | A stable ID you type, and a hash that makes history tamper-evident | Concepts |
| Everything is undoable | Every command is recorded in an operation log | Working Copy and Operation Log |
| Everything is signed | Ed25519 and ML-DSA-65 together, checked against a policy in the repository | Identity and Signing |
| Storage you choose | A directory, a hub, or your own S3, GCS or Azure bucket | Strata |
| Works with Git | Import, export, fetch from and push to Git | Git Interoperability |
Pages
- Using Oxygen: Getting Started, Everyday Work, Bookmarks, Working with Others
- How it works: Concepts, Changes and Dependencies, Conflicts, Working Copy and Operation Log
- Trust: Identity and Signing, Trust Policy
- Storage and transport: Storage, Strata, Wire Protocol, Big Repositories
- Around Oxygen: Git Interoperability, Architecture, Glossary
The full specification is docs/spec.md in the repository, and the task-by-task user guide is docs/guide.md.