| 1 |
<!doctype html> |
| 2 |
<html lang="en-GB"> |
| 3 |
<head> |
| 4 |
<meta charset="utf-8"> |
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
| 6 |
<title>Oxygen: version control you can verify</title> |
| 7 |
<meta name="description" content="Oxygen is a version control system, a forge and a build runner designed together: every change signed, conflicts recorded and resolved once, builds reproducible, and all of it hosted where you choose."> |
| 8 |
<link rel="icon" href="/assets/oxygen.svg" type="image/svg+xml"> |
| 9 |
<link rel="stylesheet" href="/assets/site.css"> |
| 10 |
</head> |
| 11 |
<body> |
| 12 |
|
| 13 |
<main id="main"> |
| 14 |
|
| 15 |
<section class="hero"> |
| 16 |
<div class="wrap"> |
| 17 |
<p class="eyebrow">Version control, a forge and CI, designed together</p> |
| 18 |
<h1>Version control you can <span class="grad">verify</span>.</h1> |
| 19 |
<p class="lede">Oxygen records every change as a signed, commutative patch, keeps conflicts as part of history instead of a mess to clean up, and builds in sandboxes that leave a signed receipt. It runs on your own machines, in your own country, and proves what it did.</p> |
| 20 |
<div class="ctas"> |
| 21 |
<a class="btn primary" href="https://oxygenhub.io">Explore OxygenHub</a> |
| 22 |
<a class="btn" href="https://oxygenhub.io/andymccall/oxygen/releases">Get oxy</a> |
| 23 |
</div> |
| 24 |
<pre class="term" aria-label="An example session"><code><span class="p">$</span> oxy clone https://oxygenhub.io/andymccall/oxygen |
| 25 |
<span class="p">$</span> oxy commit -m "Retry the upload" |
| 26 |
<span class="p">$</span> oxy push |
| 27 |
<span class="ok">✔</span> Pushed origin/main · sealed by your key · logged</code></pre> |
| 28 |
</div> |
| 29 |
</section> |
| 30 |
|
| 31 |
<section class="pillars" id="oxygen"> |
| 32 |
<div class="wrap"> |
| 33 |
<h2>Three parts, one system</h2> |
| 34 |
<div class="cards"> |
| 35 |
<article class="card"> |
| 36 |
<h3><span class="tag">oxy</span> Oxygen</h3> |
| 37 |
<p>The version control system. Changes commute, so they apply in any order and reach the same result: no rebasing, and a proposal never goes stale.</p> |
| 38 |
<ul> |
| 39 |
<li>Conflicts are recorded in history and resolved once, by a change anyone can fetch.</li> |
| 40 |
<li>Every change is signed, with Ed25519 and the post-quantum ML-DSA-65 together.</li> |
| 41 |
<li>Imports and exports Git history, commit by commit.</li> |
| 42 |
<li>Keeps repositories on disk or in your own S3 or Google Cloud Storage buckets.</li> |
| 43 |
</ul> |
| 44 |
</article> |
| 45 |
<article class="card" id="hub"> |
| 46 |
<h3><span class="tag">oh</span> OxygenHub</h3> |
| 47 |
<p>The forge, self-hosted or at <a href="https://oxygenhub.io">oxygenhub.io</a>: repositories, proposals and reviews, issues and boards, releases.</p> |
| 48 |
<ul> |
| 49 |
<li>Approvals are sealed with the reviewer's key, so a landing proves who agreed.</li> |
| 50 |
<li>Every reference update goes into a transparency log, cosigned by independent witnesses.</li> |
| 51 |
<li>Agents work under grants you can revoke, signing with ten-minute keys, never stored ones.</li> |
| 52 |
<li>A command line, Visual Studio Code extensions and an Android app.</li> |
| 53 |
</ul> |
| 54 |
</article> |
| 55 |
<article class="card" id="flow"> |
| 56 |
<h3><span class="tag">flow</span> OxygenFlow</h3> |
| 57 |
<p>The pipeline runner. Jobs run with no network unless they name the hosts they need, from images pinned by hash.</p> |
| 58 |
<ul> |
| 59 |
<li>Three sandboxes: Firecracker microVMs, system-call filtering, and WebAssembly.</li> |
| 60 |
<li>Runners on Linux (x86_64, Arm and RISC-V), Windows, and Android phones.</li> |
| 61 |
<li>Each job leaves a signed receipt naming its inputs, image and outputs.</li> |
| 62 |
<li>Runners update themselves, in test groups first, and roll back on their own.</li> |
| 63 |
</ul> |
| 64 |
</article> |
| 65 |
</div> |
| 66 |
</div> |
| 67 |
</section> |
| 68 |
|
| 69 |
<section class="why"> |
| 70 |
<div class="wrap two"> |
| 71 |
<div> |
| 72 |
<h2>Why another version control system?</h2> |
| 73 |
<p>Git records snapshots and leaves merging to tools and people. Every rebase rewrites history, every conflict is solved again on the next merge, and nothing proves who wrote what unless everyone signs everything by hand.</p> |
| 74 |
<p>Oxygen starts from the other end. A change is a patch with a stable identity, so applying it twice or in another order changes nothing. History is never rewritten. Signing is the default, checked on every push, and recorded where anyone can audit it.</p> |
| 75 |
</div> |
| 76 |
<dl class="facts"> |
| 77 |
<div><dt>Commutative</dt><dd>Changes apply in any order; proposals never go stale.</dd></div> |
| 78 |
<div><dt>Conflicts kept</dt><dd>Recorded, built on, resolved once for everyone.</dd></div> |
| 79 |
<div><dt>Signed</dt><dd>Classical and post-quantum signatures on every change.</dd></div> |
| 80 |
<div><dt>Logged</dt><dd>A witnessed transparency log of every update.</dd></div> |
| 81 |
<div><dt>Hermetic</dt><dd>Builds with no network, from pinned images.</dd></div> |
| 82 |
</dl> |
| 83 |
</div> |
| 84 |
</section> |
| 85 |
|
| 86 |
<section class="sovereign" id="sovereign"> |
| 87 |
<div class="wrap"> |
| 88 |
<h2>Sovereign by design</h2> |
| 89 |
<p class="lede">Your source, your keys, your builds, in your jurisdiction. Oxygen has no service it must call home to.</p> |
| 90 |
<div class="cards three"> |
| 91 |
<div class="card flat"> |
| 92 |
<h3>Host it where you must</h3> |
| 93 |
<p>Run OxygenHub and its runners on your own hardware or cloud account, in the UK or wherever your data has to stay. Storage can be your own buckets.</p> |
| 94 |
</div> |
| 95 |
<div class="card flat"> |
| 96 |
<h3>Prove what happened</h3> |
| 97 |
<p>Signed changes, sealed approvals, build receipts and a witnessed log let an auditor check the history without trusting the server that holds it.</p> |
| 98 |
</div> |
| 99 |
<div class="card flat"> |
| 100 |
<h3>Keep builds in</h3> |
| 101 |
<p>Jobs reach the network only through hosts you allow, every decision logged, so a build cannot quietly fetch or send what it should not.</p> |
| 102 |
</div> |
| 103 |
</div> |
| 104 |
</div> |
| 105 |
</section> |
| 106 |
|
| 107 |
<section class="status"> |
| 108 |
<div class="wrap"> |
| 109 |
<h2>Where it is today</h2> |
| 110 |
<p>Oxygen is young and moving fast, ahead of a 1.0 release. It is built with itself: its source lives on OxygenHub, every push is tested by OxygenFlow on our own runners, and every release is signed and logged. Try it at <a href="https://oxygenhub.io">oxygenhub.io</a>, or install <code>oxy</code> and <code>oh</code> from the <a href="https://oxygenhub.io/andymccall/oxygen/releases">releases page</a> or the apt repository there.</p> |
| 111 |
</div> |
| 112 |
</section> |
| 113 |
|
| 114 |
</main> |
| 115 |
|
| 116 |
</body> |
| 117 |
</html> |