| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>ALPHA-GPT β Certificate of a private model</title> |
| <style> |
| :root { |
| --ground:#0b0c0f; --panel:#101216; --ink:#ece9e1; --ink-2:#a7a99f; |
| --ink-3:#63656b; --rule:#1e2128; --rule-2:#2a2e37; |
| --seal:#a23842; --seal-2:#c25560; --verify:#7fae86; |
| --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace; |
| --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,sans-serif; |
| --maxw:70ch; |
| } |
| @media (prefers-color-scheme: light){ |
| :root{ --ground:#efece3; --panel:#f8f6ef; --ink:#17181c; --ink-2:#4d4f57; |
| --ink-3:#8b8d8a; --rule:#dcd8cd; --rule-2:#cbc7ba; --seal:#8c2f39; |
| --seal-2:#a3414c; --verify:#3d7a54; } |
| } |
| :root[data-theme="dark"]{ --ground:#0b0c0f; --panel:#101216; --ink:#ece9e1; |
| --ink-2:#a7a99f; --ink-3:#63656b; --rule:#1e2128; --rule-2:#2a2e37; |
| --seal:#a23842; --seal-2:#c25560; --verify:#7fae86; } |
| :root[data-theme="light"]{ --ground:#efece3; --panel:#f8f6ef; --ink:#17181c; |
| --ink-2:#4d4f57; --ink-3:#8b8d8a; --rule:#dcd8cd; --rule-2:#cbc7ba; |
| --seal:#8c2f39; --seal-2:#a3414c; --verify:#3d7a54; } |
| |
| *{ box-sizing:border-box; } |
| html{ -webkit-text-size-adjust:100%; } |
| body{ margin:0; background:var(--ground); color:var(--ink); |
| font-family:var(--sans); line-height:1.62; -webkit-font-smoothing:antialiased; |
| font-feature-settings:"kern" 1; } |
| .wrap{ max-width:var(--maxw); margin:0 auto; padding:0 28px; } |
| a{ color:inherit; } |
| ::selection{ background:var(--seal); color:#fff; } |
| |
| |
| .doc{ border-left:1px solid var(--rule); border-right:1px solid var(--rule); |
| max-width:calc(var(--maxw) + 56px); margin:0 auto; } |
| |
| .toprule{ display:flex; justify-content:space-between; align-items:center; |
| font-family:var(--mono); font-size:.7rem; letter-spacing:.16em; |
| text-transform:uppercase; color:var(--ink-3); padding:18px 28px; |
| border-bottom:1px solid var(--rule); } |
| .toprule .dot{ color:var(--seal); } |
| |
| header.hero{ padding:76px 0 60px; } |
| .kicker{ font-family:var(--mono); font-size:.72rem; letter-spacing:.22em; |
| text-transform:uppercase; color:var(--seal); margin:0 0 26px; } |
| h1{ font-size:clamp(2.7rem,8vw,5rem); line-height:.98; letter-spacing:-.035em; |
| font-weight:820; margin:0 0 26px; text-wrap:balance; } |
| h1 em{ font-style:normal; color:var(--ink-3); } |
| .lede{ font-size:clamp(1.08rem,2.3vw,1.3rem); color:var(--ink-2); |
| max-width:52ch; margin:0 0 38px; } |
| .actions{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; } |
| .btn{ font-family:var(--mono); font-size:.82rem; letter-spacing:.04em; |
| text-decoration:none; padding:14px 22px; border:1px solid var(--rule-2); |
| display:inline-flex; align-items:center; gap:10px; |
| transition:border-color .15s ease, color .15s ease, background .15s ease; } |
| .btn .arw{ color:var(--seal); } |
| .btn.primary{ background:var(--seal); border-color:var(--seal); color:#fff; } |
| .btn.primary .arw{ color:#fff; } |
| .btn.primary:hover{ background:var(--seal-2); border-color:var(--seal-2); } |
| .btn.ghost:hover{ border-color:var(--ink-2); color:var(--ink); } |
| |
| |
| .seal{ position:relative; background:var(--panel); border:1px solid var(--rule-2); |
| padding:26px 26px 24px; margin:0; font-family:var(--mono); font-size:.82rem; |
| line-height:2; overflow-x:auto; } |
| .seal::before,.seal::after{ content:""; position:absolute; width:9px; height:9px; |
| border:1px solid var(--seal); } |
| .seal::before{ top:-1px; left:-1px; border-right:0; border-bottom:0; } |
| .seal::after{ bottom:-1px; right:-1px; border-left:0; border-top:0; } |
| .seal .stamp{ position:absolute; top:20px; right:24px; font-size:.64rem; |
| letter-spacing:.2em; text-transform:uppercase; color:var(--seal); |
| border:1px solid var(--seal); padding:4px 9px; transform:rotate(4deg); |
| border-radius:2px; } |
| .seal .k{ color:var(--ink-3); } |
| .seal .v{ color:var(--ink); } |
| .seal .ok{ color:var(--verify); } |
| .seal .hash{ color:var(--seal-2); word-break:break-all; } |
| |
| section{ padding:52px 0; border-top:1px solid var(--rule); } |
| .clause{ font-family:var(--mono); font-size:.72rem; letter-spacing:.14em; |
| text-transform:uppercase; color:var(--ink-3); margin:0 0 18px; } |
| .clause b{ color:var(--seal); font-weight:600; } |
| h2{ font-size:clamp(1.6rem,3.4vw,2.15rem); line-height:1.08; letter-spacing:-.02em; |
| font-weight:760; margin:0 0 10px; text-wrap:balance; } |
| .sub{ color:var(--ink-3); margin:0 0 30px; font-size:.98rem; max-width:50ch; } |
| |
| ol.steps{ list-style:none; margin:0; padding:0; counter-reset:st; } |
| ol.steps li{ counter-increment:st; display:grid; grid-template-columns:2.4rem 1fr; |
| gap:20px; padding:20px 0; border-top:1px solid var(--rule); align-items:baseline; } |
| ol.steps li:first-child{ border-top:0; } |
| ol.steps .idx{ font-family:var(--mono); font-size:.8rem; color:var(--seal); |
| font-variant-numeric:tabular-nums; } |
| ol.steps .idx::before{ content:"Β§" counter(st,decimal-leading-zero); } |
| ol.steps h3{ margin:0 0 5px; font-size:1.06rem; font-weight:640; } |
| ol.steps p{ margin:0; color:var(--ink-2); font-size:.96rem; } |
| |
| ul.truth{ list-style:none; margin:0; padding:0; } |
| ul.truth li{ display:grid; grid-template-columns:1.4rem 1fr; gap:14px; |
| padding:14px 0; border-top:1px solid var(--rule); font-size:.98rem; color:var(--ink-2); } |
| ul.truth li:first-child{ border-top:0; } |
| ul.truth .m{ font-family:var(--mono); font-weight:700; line-height:1.5; } |
| ul.truth .m.y{ color:var(--verify); } |
| ul.truth .m.s{ color:var(--seal); } |
| ul.truth b{ color:var(--ink); font-weight:640; } |
| |
| .who p{ color:var(--ink-2); margin:0 0 14px; font-size:1.02rem; } |
| .who p:last-child{ margin:0; } |
| .who b{ color:var(--ink); font-weight:600; } |
| .who .rule-word{ color:var(--seal); font-weight:600; } |
| |
| .final{ text-align:left; padding:64px 0 20px; } |
| .final h2{ font-size:clamp(1.9rem,4.5vw,2.6rem); margin-bottom:14px; } |
| |
| footer{ border-top:1px solid var(--rule); padding:26px 28px 56px; |
| font-family:var(--mono); font-size:.72rem; color:var(--ink-3); |
| letter-spacing:.04em; } |
| footer .sig{ color:var(--ink-2); } |
| footer p{ margin:14px 0 0; line-height:1.7; letter-spacing:0; } |
| |
| .fade{ opacity:0; transform:translateY(10px); animation:rise .7s cubic-bezier(.2,.7,.2,1) forwards; } |
| .fade.d1{ animation-delay:.05s; } .fade.d2{ animation-delay:.13s; } |
| .fade.d3{ animation-delay:.21s; } .fade.d4{ animation-delay:.29s; } |
| @keyframes rise{ to{ opacity:1; transform:none; } } |
| @media (prefers-reduced-motion:reduce){ .fade{ animation:none; opacity:1; transform:none; } } |
| </style> |
|
|
| </head> |
| <body> |
| <div class="doc"> |
| <div class="toprule"> |
| <span>ALPHA-GPT</span> |
| <span><span class="dot">β</span> your export, made into a model</span> |
| </div> |
|
|
| <div class="wrap"> |
| <header class="hero"> |
| <p class="kicker fade">ChatGPT & Claude export β your own model</p> |
| <h1 class="fade d1">Everything you've said to ChatGPT,<br><em>turned into a model you run.</em></h1> |
| <p class="lede fade d2">ALPHA-GPT trains a small language model on your own ChatGPT and Claude history β your topics, your phrasing, your patterns β as a private model that lives and runs on your machine. Not a chatbot borrowed from a company. One made from your corpus.</p> |
| <div class="actions fade d3"> |
| <a class="btn primary" href="mailto:j.skrobynets@gmail.com?subject=ALPHA-GPT%20%E2%80%94%20train%20my%20model&body=I%27d%20like%20to%20turn%20my%20ChatGPT%2FClaude%20export%20into%20my%20own%20model.">Train your model <span class="arw">β</span></a> |
| <a class="btn ghost" href="#how">How it works</a> |
| </div> |
| </header> |
| </div> |
|
|
| <div class="wrap"> |
| <section style="border-top:0; padding-top:0;"> |
| <div class="seal fade d4"> |
| <span class="stamp">sealed</span> |
| <span class="k">issued_to</span> <span class="v">the machine you own</span><br> |
| <span class="k">model</span> <span class="v">alpha-gpt-Q4_K_M.gguf</span><br> |
| <span class="k">fingerprint</span> <span class="hash" id="hash">d0293826e6b4135fadccecc6d2ea3e5015ea40dcf84d4e0ed84ae4c708e35e8a</span><br> |
| <span class="k">uploaded</span> <span class="ok">never</span><br> |
| <span class="k">custody</span> <span class="ok">local Β· sole</span> |
| </div> |
| </section> |
|
|
| <section id="how"> |
| <p class="clause">Clause <b>I</b> β How it is issued</p> |
| <h2>Three steps, none of them leave the room</h2> |
| <p class="sub">Your archive goes in. Every stage after runs on your hardware.</p> |
| <ol class="steps"> |
| <li><span class="idx"></span><div><h3>Submit your archive</h3><p>Your ChatGPT or Claude export is parsed into training data locally. No upload, no account, no third party.</p></div></li> |
| <li><span class="idx"></span><div><h3>Train in place</h3><p>A LoRA adapter is fine-tuned on your own words, fused into an open base model, and quantized into one fast local file.</p></div></li> |
| <li><span class="idx"></span><div><h3>Take custody</h3><p>The model registers with Ollama and runs offline β shaped by your history, held by no one but you.</p></div></li> |
| </ol> |
| </section> |
|
|
| <section> |
| <p class="clause">Clause <b>II</b> β Proof of custody</p> |
| <h2>The privacy claim is an artifact, not a promise</h2> |
| <p class="sub">Every build emits a signed manifest carrying the model's fingerprint and its custody record β evidence you can file, not marketing you have to trust.</p> |
| <ul class="truth"> |
| <li><span class="m y">β</span><span><b>The pipeline runs end-to-end.</b> Export β train β fuse β quantize β run, verified on real hardware.</span></li> |
| <li><span class="m y">β</span><span><b>The certificate is real.</b> Canonical fingerprint and an <span style="font-family:var(--mono)">uploaded: never</span> record on every build.</span></li> |
| <li><span class="m y">β</span><span><b>Private remote access.</b> Reach your model from your phone while the machine is on β token-sealed, still local.</span></li> |
| <li><span class="m s">β</span><span><b>One-command install & self-improvement.</b> In progress β the model consolidates your corrections over time.</span></li> |
| </ul> |
| </section> |
|
|
| <section> |
| <p class="clause">Clause <b>III</b> β Who this is written for</p> |
| <div class="who"> |
| <p>If you are a <b>lawyer, therapist, or clinician</b>, sending client information to a cloud model is not a matter of taste β it is a matter of <span class="rule-word">rule</span>.</p> |
| <p>ALPHA-GPT keeps the model, the training data, and the inference on hardware you control, and hands you a certificate you can put in an audit file. Provably private β with the receipt to show for it.</p> |
| </div> |
| </section> |
|
|
| <section class="final"> |
| <p class="clause">Clause <b>IV</b> β Execution</p> |
| <h2>Bring an export. Leave with a model only you hold.</h2> |
| <p class="sub">Early access is opening to a small first group.</p> |
| <div class="actions"> |
| <a class="btn primary" href="mailto:j.skrobynets@gmail.com?subject=ALPHA-GPT%20%E2%80%94%20train%20my%20model&body=I%27d%20like%20to%20turn%20my%20ChatGPT%2FClaude%20export%20into%20my%20own%20model.">Train your model <span class="arw">β</span></a> |
| </div> |
| </section> |
| </div> |
|
|
| <footer> |
| <span class="sig">ALPHA-GPT</span> Β· runs on your machine Β· weights never uploaded |
| <p>Built on an open base model fine-tuned with your private data. Local-model quality; pair with retrieval for exact recall. Describes an early product in active development.</p> |
| </footer> |
| </div> |
|
|
| <script> |
| (function(){ |
| if (window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; |
| var el = document.getElementById("hash"); |
| if (!el) return; |
| var final = el.textContent, chars = "0123456789abcdef", frame = 0; |
| var iv = setInterval(function(){ |
| frame++; |
| var out = ""; |
| for (var i=0;i<final.length;i++){ |
| out += (i < frame*2) ? final[i] : chars[Math.floor(Math.random()*16)]; |
| } |
| el.textContent = out; |
| if (frame*2 >= final.length){ el.textContent = final; clearInterval(iv); } |
| }, 34); |
| })(); |
| </script> |
|
|
| </body> |
| </html> |
|
|