Download index.html from CubicLabs/README: direct link, hf CLI and curl.
- Browser
- Download file 19.8 kB
-
https://huggingface.co/spaces/CubicLabs/README/resolve/main/index.html
- Command line
-
hf download hf://spaces/CubicLabs/README/index.html
-
curl -L -o index.html https://huggingface.co/spaces/CubicLabs/README/resolve/main/index.html
19.8 kB
| <html lang="en" data-theme="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Cubic — AI and Cybersecurity Research</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&display=swap" rel="stylesheet"> | |
| <style> | |
| :root{ | |
| --bg:#0a0a0b; | |
| --panel:#131316; | |
| --panel-2:#18181c; | |
| --line:#232328; | |
| --line-bright:#33333a; | |
| --accent:#c9c8c2; | |
| --silk:#f2f1ec; | |
| --text:#b9b9bd; | |
| --muted:#6f6f76; | |
| } | |
| [data-theme="light"]{ | |
| --bg:#f1efe9; | |
| --panel:#fbfaf6; | |
| --panel-2:#eeece4; | |
| --line:#dcd9cf; | |
| --line-bright:#b8b4a4; | |
| --accent:#3c3c3e; | |
| --silk:#17171a; | |
| --text:#3c3c3e; | |
| --muted:#7a7a76; | |
| } | |
| *{box-sizing:border-box;} | |
| html{scroll-behavior:smooth;} | |
| body{ | |
| margin:0; | |
| font-family:'Source Serif 4',Georgia,serif; | |
| color:var(--text); | |
| background:var(--bg); | |
| transition:background 0.25s ease, color 0.25s ease; | |
| } | |
| ::selection{background:var(--accent);color:#1a0f08;} | |
| a{color:inherit;} | |
| .wrap{max-width:960px;margin:0 auto;padding:0 24px 90px;} | |
| header{ | |
| display:flex; | |
| align-items:center; | |
| justify-content:space-between; | |
| padding:20px 0; | |
| border-bottom:1px solid var(--line); | |
| margin-bottom:56px; | |
| } | |
| .brand{display:flex;align-items:center;gap:9px;} | |
| .chip{width:22px;height:22px;flex-shrink:0;} | |
| .chip rect{fill:none;stroke:var(--accent);stroke-width:1.4;} | |
| .chip circle{fill:var(--accent);} | |
| .chip line{stroke:var(--accent);stroke-width:1.2;} | |
| .brand-name{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:16px;letter-spacing:0.01em;color:var(--silk);} | |
| nav{display:flex;align-items:center;gap:16px;} | |
| nav a{text-decoration:none;color:var(--muted);font-size:13px;font-weight:500;font-family:'IBM Plex Mono',monospace;border-bottom:1px solid transparent;} | |
| nav a:hover{color:var(--silk);border-color:var(--accent);} | |
| .theme-row{display:flex;align-items:center;gap:6px;margin-left:6px;} | |
| .switch-label{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);} | |
| #theme-toggle{ | |
| width:32px;height:17px; | |
| border:1px solid var(--line-bright); | |
| border-radius:3px; | |
| background:var(--panel-2); | |
| position:relative; | |
| cursor:pointer; | |
| padding:0; | |
| } | |
| #theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;} | |
| #theme-toggle::after{ | |
| content:""; | |
| position:absolute; | |
| top:1px;left:1px; | |
| width:13px;height:13px; | |
| border-radius:2px; | |
| background:var(--accent); | |
| transition:transform 0.16s ease; | |
| } | |
| [data-theme="light"] #theme-toggle::after{transform:translateX(15px);} | |
| .eyebrow{ | |
| font-family:'IBM Plex Mono',monospace; | |
| font-size:11.5px; | |
| color:var(--accent); | |
| letter-spacing:0.09em; | |
| text-transform:uppercase; | |
| margin-bottom:16px; | |
| } | |
| h1{ | |
| font-family:'Source Serif 4',Georgia,serif; | |
| font-size:38px; | |
| line-height:1.22; | |
| font-weight:600; | |
| color:var(--silk); | |
| margin:0 0 16px; | |
| max-width:620px; | |
| letter-spacing:-0.005em; | |
| } | |
| .tagline{color:var(--muted);font-size:16px;line-height:1.65;max-width:540px;margin:0 0 44px;} | |
| .metrics{ | |
| display:grid; | |
| grid-template-columns:repeat(5,1fr); | |
| border:1px solid var(--line); | |
| border-radius:8px; | |
| overflow:hidden; | |
| margin-bottom:68px; | |
| background:linear-gradient(180deg, var(--panel-2), var(--panel)); | |
| } | |
| .metric{ | |
| padding:19px 12px; | |
| text-align:center; | |
| border-right:1px solid var(--line); | |
| } | |
| .metric:last-child{border-right:none;} | |
| .metric b{ | |
| display:block; | |
| font-family:'IBM Plex Mono',monospace; | |
| font-size:22px; | |
| font-weight:600; | |
| color:var(--silk); | |
| margin-bottom:5px; | |
| letter-spacing:-0.01em; | |
| } | |
| .metric > span{font-size:11px;color:var(--muted);letter-spacing:0.04em;text-transform:uppercase;font-family:'IBM Plex Mono',monospace;} | |
| section{margin-bottom:64px;} | |
| h2{ | |
| font-family:'IBM Plex Mono',monospace; | |
| font-size:12px; | |
| text-transform:uppercase; | |
| letter-spacing:0.09em; | |
| color:var(--muted); | |
| margin:0 0 20px; | |
| display:flex; | |
| align-items:center; | |
| gap:10px; | |
| } | |
| h2::after{content:"";flex:1;height:1px;background:var(--line-bright);} | |
| .card{ | |
| background:linear-gradient(180deg, var(--panel-2), var(--panel)); | |
| border:1px solid var(--line); | |
| border-radius:8px; | |
| padding:18px; | |
| } | |
| .focus-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;} | |
| .focus-item{transition:border-color 0.15s ease;} | |
| .focus-item:hover{border-color:var(--line-bright);} | |
| .focus-item b{font-family:'IBM Plex Mono',monospace;font-size:14px;color:var(--silk);display:block;margin-bottom:7px;} | |
| .focus-item p{font-size:13.5px;color:var(--muted);margin:0;line-height:1.55;} | |
| .project-card{ | |
| cursor:pointer; | |
| transition:border-color 0.15s ease, transform 0.15s ease; | |
| display:block; | |
| width:100%; | |
| text-align:left; | |
| font:inherit; | |
| color:inherit; | |
| } | |
| .project-card:hover,.project-card:focus-visible{ | |
| border-color:var(--line-bright); | |
| transform:translateY(-1px); | |
| } | |
| .project-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px;} | |
| .project-card h3{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--silk);margin:0 0 14px;font-weight:600;} | |
| .project-meta{ | |
| display:grid; | |
| grid-template-columns:repeat(4,1fr); | |
| gap:12px; | |
| margin-bottom:14px; | |
| padding-bottom:14px; | |
| border-bottom:1px solid var(--line); | |
| } | |
| .project-meta div{font-size:12px;} | |
| .project-meta b{display:block;color:var(--silk);font-family:'IBM Plex Mono',monospace;font-size:12.5px;margin-bottom:3px;} | |
| .project-meta span{color:var(--muted);} | |
| .project-card p.hint{font-size:12px;color:var(--muted);margin:0;font-family:'IBM Plex Mono',monospace;} | |
| .calc-panel{padding:0;overflow:hidden;} | |
| .calc-tabs{display:flex;border-bottom:1px solid var(--line);background:var(--panel);} | |
| .calc-tab{ | |
| background:none; | |
| border:none; | |
| border-right:1px solid var(--line); | |
| color:var(--muted); | |
| font-family:'IBM Plex Mono',monospace; | |
| font-size:12px; | |
| letter-spacing:0.02em; | |
| padding:12px 16px; | |
| cursor:pointer; | |
| transition:color 0.12s ease, background 0.12s ease; | |
| } | |
| .calc-tab:hover{color:var(--silk);} | |
| .calc-tab.active{color:var(--silk);background:var(--panel-2);box-shadow:inset 0 -2px 0 var(--accent);} | |
| .calc-tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;} | |
| .calc-body{padding:20px;} | |
| .calc-pane{display:none;} | |
| .calc-pane.active{display:block;} | |
| .calc-desc{font-size:13px;color:var(--muted);margin:0 0 16px;line-height:1.55;} | |
| .calc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px;} | |
| .calc-row label{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--text);} | |
| .calc-row input,.calc-row select{ | |
| width:180px; | |
| background:var(--panel); | |
| border:1px solid var(--line); | |
| color:var(--text); | |
| border-radius:6px; | |
| padding:8px 10px; | |
| font-size:13px; | |
| font-family:'IBM Plex Mono',monospace; | |
| outline:none; | |
| transition:border-color 0.15s ease; | |
| } | |
| .calc-row input:focus,.calc-row select:focus{border-color:var(--line-bright);} | |
| .calc-result{ | |
| margin-top:16px; | |
| padding:13px 14px; | |
| background:var(--panel); | |
| border:1px solid var(--line-bright); | |
| border-radius:6px; | |
| font-size:13.5px; | |
| color:var(--muted); | |
| font-family:'IBM Plex Mono',monospace; | |
| } | |
| .calc-result b{color:var(--silk);font-size:15px;} | |
| @media (max-width:720px){ | |
| .calc-row{flex-direction:column;align-items:flex-start;} | |
| .calc-row input,.calc-row select{width:100%;} | |
| } | |
| .team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;} | |
| .team-card{text-align:center;} | |
| .avatar{ | |
| width:34px;height:34px; | |
| margin:0 auto 10px; | |
| border:1px solid var(--accent); | |
| border-radius:50%; | |
| position:relative; | |
| } | |
| .avatar::before{ | |
| content:""; | |
| position:absolute; | |
| inset:6px; | |
| border-radius:50%; | |
| background:var(--accent); | |
| opacity:0.4; | |
| } | |
| .team-card b{display:block;font-family:'IBM Plex Mono',monospace;font-size:13.5px;color:var(--silk);margin-bottom:4px;} | |
| .team-card span{font-size:11.5px;color:var(--muted);font-family:'IBM Plex Mono',monospace;} | |
| .features{display:grid;grid-template-columns:repeat(2,1fr);gap:9px 22px;font-size:13.5px;margin:0;padding:0;} | |
| .features li{list-style:none;padding-left:16px;position:relative;color:var(--muted);} | |
| .features li::before{content:"—";position:absolute;left:0;color:var(--accent);} | |
| footer{ | |
| display:flex; | |
| align-items:center; | |
| justify-content:space-between; | |
| padding-top:22px; | |
| border-top:1px solid var(--line-bright); | |
| font-size:12px; | |
| color:var(--muted); | |
| font-family:'IBM Plex Mono',monospace; | |
| } | |
| footer .flinks a{text-decoration:none;color:var(--text);margin-left:14px;} | |
| footer .flinks a:hover{color:var(--accent);} | |
| @media (max-width:720px){ | |
| .metrics{grid-template-columns:repeat(2,1fr);} | |
| .metric{border-bottom:1px solid var(--line-bright);} | |
| .focus-grid,.team-grid{grid-template-columns:1fr;} | |
| .project-meta{grid-template-columns:repeat(2,1fr);} | |
| h1{font-size:28px;} | |
| } | |
| @media print{ | |
| #theme-toggle,.theme-row{display:none;} | |
| body{background:#fff;color:#000;} | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="wrap"> | |
| <header> | |
| <div class="brand"> | |
| <svg class="chip" viewBox="0 0 24 24"> | |
| <rect x="6" y="6" width="12" height="12" rx="1.5"/> | |
| <line x1="9" y1="2" x2="9" y2="6"/><line x1="15" y1="2" x2="15" y2="6"/> | |
| <line x1="9" y1="18" x2="9" y2="22"/><line x1="15" y1="18" x2="15" y2="22"/> | |
| <line x1="2" y1="9" x2="6" y2="9"/><line x1="2" y1="15" x2="6" y2="15"/> | |
| <line x1="18" y1="9" x2="22" y2="9"/><line x1="18" y1="15" x2="22" y2="15"/> | |
| <circle cx="12" cy="12" r="1.6"/> | |
| </svg> | |
| <span class="brand-name">CUBIC</span> | |
| </div> | |
| <nav> | |
| <a href="https://github.com/Cubic-Labs" target="_blank" rel="noopener">GitHub</a> | |
| <a href="https://huggingface.co/Cubic" target="_blank" rel="noopener">HuggingFace</a> | |
| <div class="theme-row"> | |
| <span class="switch-label">0</span> | |
| <button id="theme-toggle" type="button" aria-label="Toggle light and dark theme" aria-pressed="false"></button> | |
| <span class="switch-label">1</span> | |
| </div> | |
| </nav> | |
| </header> | |
| <div class="eyebrow">AI · Cybersecurity Research</div> | |
| <h1>Accessible AI systems that run on consumer hardware.</h1> | |
| <p class="tagline">CPU-first training, open-source research, and practical deployment — no data center required.</p> | |
| <div class="metrics"> | |
| <div class="metric"><b>27</b><span>Models</span></div> | |
| <div class="metric"><b>1</b><span>Research paper</span></div> | |
| <div class="metric"><b>3</b><span>Team members</span></div> | |
| <div class="metric"><b>$0.004</b><span>Min training cost</span></div> | |
| <div class="metric"><b>100%</b><span>Open source</span></div> | |
| </div> | |
| <section> | |
| <h2>Research Focus</h2> | |
| <div class="focus-grid"> | |
| <div class="card focus-item"> | |
| <b>AI Development</b> | |
| <p>CPU-first architectures and open-source models.</p> | |
| </div> | |
| <div class="card focus-item"> | |
| <b>Cybersecurity</b> | |
| <p>AI-powered security tools and threat detection.</p> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Projects</h2> | |
| <div class="card project-card" data-url="https://huggingface.co/Cubic" tabindex="0" role="button" aria-label="Open AXL project on HuggingFace"> | |
| <h3>AXL — CPU-First Code Generation</h3> | |
| <div class="project-meta"> | |
| <div><b>27</b><span>models, 566K–318M params</span></div> | |
| <div><b>$0.004</b><span>training cost / model</span></div> | |
| <div><b>Multi-scale</b><span>byte-level transformer</span></div> | |
| <div><b>Apache 2.0</b><span>license</span></div> | |
| </div> | |
| <p class="hint">> click for the full AXL detail page</p> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Interactive Tools</h2> | |
| <div class="calc-panel card"> | |
| <div class="calc-tabs" role="tablist" aria-label="Calculator selector"> | |
| <button type="button" class="calc-tab active" data-calc="memory-usage" role="tab" aria-selected="true">Memory Usage</button> | |
| <button type="button" class="calc-tab" data-calc="inference-speed" role="tab" aria-selected="false">Inference Speed</button> | |
| </div> | |
| <div class="calc-body"> | |
| <div class="calc-pane active" data-pane="memory-usage"> | |
| <p class="calc-desc">Total estimated RAM: weights at your chosen quantization plus KV-cache overhead.</p> | |
| <div class="calc-row"> | |
| <label for="mu-params">Parameters</label> | |
| <input type="number" id="mu-params" min="1" step="1" value="318000000"> | |
| </div> | |
| <div class="calc-row"> | |
| <label for="mu-quant">Quantization</label> | |
| <select id="mu-quant"> | |
| <option value="4">Q4 (4-bit)</option> | |
| <option value="8" selected>Q8 (8-bit)</option> | |
| <option value="16">F16 (16-bit)</option> | |
| </select> | |
| </div> | |
| <div class="calc-row"> | |
| <label for="mu-context">Context (tokens)</label> | |
| <input type="number" id="mu-context" min="0" step="1" value="4096"> | |
| </div> | |
| <div class="calc-result" id="mu-result">Estimated RAM: <b>—</b></div> | |
| </div> | |
| <div class="calc-pane" data-pane="inference-speed"> | |
| <p class="calc-desc">Estimated CPU tokens/sec by parameter count (byte-level transformer, single-thread baseline).</p> | |
| <div class="calc-row"> | |
| <label for="is-params">Model size (params)</label> | |
| <select id="is-params"> | |
| <option value="566000">566K (smallest AXL)</option> | |
| <option value="8000000">8M</option> | |
| <option value="60000000">60M</option> | |
| <option value="150000000">150M</option> | |
| <option value="318000000" selected>318M (largest AXL)</option> | |
| </select> | |
| </div> | |
| <div class="calc-row"> | |
| <label for="is-threads">CPU threads</label> | |
| <input type="number" id="is-threads" min="1" max="64" step="1" value="4"> | |
| </div> | |
| <div class="calc-result" id="is-result">Estimated: <b>— tok/s</b></div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Team</h2> | |
| <div class="team-grid"> | |
| <div class="card team-card"><div class="avatar"></div><b>Kennedy</b><span>CEO & Head of AI Research</span></div> | |
| <div class="card team-card"><div class="avatar"></div><b>Jasser</b><span>CTO & Head of Cybersecurity</span></div> | |
| <div class="card team-card"><div class="avatar"></div><b>Taem</b><span>Head of Marketing/Sales/Technical Assist</span></div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Key Features</h2> | |
| <ul class="features"> | |
| <li>Dark/Light theme toggle</li> | |
| <li>Two live calculators (memory & speed)</li> | |
| <li>Print-friendly CSS</li> | |
| <li>Responsive design</li> | |
| </ul> | |
| </section> | |
| <footer> | |
| <span>CPU-first AI for everyone.</span> | |
| <span class="flinks"> | |
| <a href="https://github.com/Cubic-Labs" target="_blank" rel="noopener">GitHub</a> | |
| <a href="https://huggingface.co/Cubic" target="_blank" rel="noopener">HuggingFace</a> | |
| </span> | |
| </footer> | |
| </div> | |
| <script> | |
| (function(){ | |
| 'use strict'; | |
| var root = document.documentElement; | |
| /* ---------- theme toggle ---------- */ | |
| var THEME_KEY = 'cubic-theme'; | |
| var toggle = document.getElementById('theme-toggle'); | |
| function applyTheme(mode){ | |
| root.setAttribute('data-theme', mode); | |
| toggle.setAttribute('aria-pressed', mode === 'light' ? 'true' : 'false'); | |
| } | |
| var storedTheme = null; | |
| try { storedTheme = window.localStorage.getItem(THEME_KEY); } catch (e) { storedTheme = null; } | |
| if (storedTheme === 'light' || storedTheme === 'dark') { | |
| applyTheme(storedTheme); | |
| } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { | |
| applyTheme('light'); | |
| } | |
| toggle.addEventListener('click', function(){ | |
| var next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; | |
| applyTheme(next); | |
| try { window.localStorage.setItem(THEME_KEY, next); } catch (e) { /* storage unavailable, theme still applies for session */ } | |
| }); | |
| /* ---------- project card open (click + keyboard) ---------- */ | |
| var projectCard = document.querySelector('.project-card'); | |
| function openProject(){ | |
| window.open(projectCard.dataset.url || 'https://huggingface.co/Cubic', '_blank', 'noopener'); | |
| } | |
| projectCard.addEventListener('click', openProject); | |
| projectCard.addEventListener('keydown', function(e){ | |
| if (e.key === 'Enter' || e.key === ' ') { | |
| e.preventDefault(); | |
| openProject(); | |
| } | |
| }); | |
| /* ---------- calculator tabs ---------- */ | |
| var calcTabs = Array.prototype.slice.call(document.querySelectorAll('.calc-tab')); | |
| var calcPanes = Array.prototype.slice.call(document.querySelectorAll('.calc-pane')); | |
| calcTabs.forEach(function(tab){ | |
| tab.addEventListener('click', function(){ | |
| var target = tab.dataset.calc; | |
| calcTabs.forEach(function(t){ | |
| t.classList.toggle('active', t === tab); | |
| t.setAttribute('aria-selected', t === tab ? 'true' : 'false'); | |
| }); | |
| calcPanes.forEach(function(p){ | |
| p.classList.toggle('active', p.dataset.pane === target); | |
| }); | |
| }); | |
| }); | |
| function fmtBytes(bytes){ | |
| if (bytes < 1024) return bytes.toFixed(0) + ' B'; | |
| var units = ['KB','MB','GB','TB']; | |
| var val = bytes; | |
| var i = -1; | |
| do { val /= 1024; i++; } while (val >= 1024 && i < units.length - 1); | |
| return val.toFixed(2) + ' ' + units[i]; | |
| } | |
| /* Memory Usage — weights at quantization + KV-cache overhead (assumes 12 layers / 768 dim default arch) */ | |
| var muParams = document.getElementById('mu-params'); | |
| var muQuant = document.getElementById('mu-quant'); | |
| var muContext = document.getElementById('mu-context'); | |
| var muResult = document.getElementById('mu-result'); | |
| function calcMemoryUsage(){ | |
| var params = parseFloat(muParams.value) || 0; | |
| var bitsPerParam = parseFloat(muQuant.value) || 8; | |
| var context = parseFloat(muContext.value) || 0; | |
| var weightBytes = params * (bitsPerParam / 8); | |
| var kvBytes = 2 * 12 * context * 768 * 2; /* approximate default arch */ | |
| var total = weightBytes + kvBytes; | |
| muResult.innerHTML = 'Estimated RAM: <b>' + fmtBytes(total) + '</b>'; | |
| } | |
| [muParams, muQuant, muContext].forEach(function(el){ el.addEventListener('input', calcMemoryUsage); el.addEventListener('change', calcMemoryUsage); }); | |
| /* Inference Speed — heuristic tok/s from param count + thread count on CPU */ | |
| var isParams = document.getElementById('is-params'); | |
| var isThreads = document.getElementById('is-threads'); | |
| var isResult = document.getElementById('is-result'); | |
| function calcInferenceSpeed(){ | |
| var params = parseFloat(isParams.value) || 1; | |
| var threads = Math.max(1, parseFloat(isThreads.value) || 1); | |
| var base = 40 / Math.sqrt(params / 1e6); | |
| var estimate = base * Math.pow(threads, 0.7); | |
| isResult.innerHTML = 'Estimated: <b>' + estimate.toFixed(1) + ' tok/s</b>'; | |
| } | |
| isParams.addEventListener('change', calcInferenceSpeed); | |
| isThreads.addEventListener('input', calcInferenceSpeed); | |
| /* run once on load so panes aren't showing placeholder dashes */ | |
| calcMemoryUsage(); | |
| calcInferenceSpeed(); | |
| })(); | |
| </script> | |
| </body> | |
| </html> |