Real screenshots of the live 0.3.14 app on the Apple M5 Max (paused, Ember Tune off, as Josh left it), shot headless at 1440x900 and 390 px, dark and light, the rail foot, the address and the machine id masked: miner-dashboard.webp (the hero, same name), miner-earnings, miner-prove, miner-settings, miner-dashboard-light, miner-phone. miner.html: a page-by-page section (the card row cell by cell, three page shots, light and the phone), the lead and the meta copy name the four pages and pounds a day at the user's price, the Ember Tune feat carries the app's one sentence and the measured PC 1 rows from the 6 Oct log (5090: 311.0 to 226.8 W for 0.15% of rate; 4070: 106.0 to 75.6 W for none; the floor, not the optimum), the Power control feat (one approval, then the helper task, no prompts), the dev fee moved to Earnings as in the app. index.html: the same hero shot, two pills. build.mjs: the caption no longer says 'until 0.3.6' (0.3.14 still says Igneum Miner). The 9070 XT row, the market price for pounds earned and the bench anchor (the run 6 entry is on the ship0314 branch) are marked as owed or coming. relay/playbooks/site-capture-pc1.ps1: a read-only run job that shoots the installed app's UI on PC 1 with Edge headless and drops the PNGs on the relay (no quit, pause, resume or settings change; passes the playbook checks). docs/plans/site-miner-2026-10-06.png: before and after. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
629 lines
62 KiB
HTML
629 lines
62 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||
<title>The Igneum miner app</title>
|
||
<meta name="description" content="One click: install, start, the card mines, and every NVIDIA card from 8 GB proves. Four pages: Mine, Earnings, Prove, Settings. Every card is one row with its rate, watts and pounds a day at your electricity price. Ember Tune measured on an RTX 5090: 84 W saved for 0.15% of rate. A visible 1% software fee you can switch off.">
|
||
<link rel="canonical" href="https://igneum.network/miner">
|
||
<meta name="theme-color" content="#0C0C0E">
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:site_name" content="Igneum">
|
||
<meta property="og:title" content="The Igneum miner app">
|
||
<meta property="og:description" content="One click: install, start, the card mines, and every NVIDIA card from 8 GB proves. Four pages: Mine, Earnings, Prove, Settings. Every card is one row with its rate, watts and pounds a day at your electricity price. Ember Tune measured on an RTX 5090: 84 W saved for 0.15% of rate. A visible 1% software fee you can switch off.">
|
||
<meta property="og:url" content="https://igneum.network/miner">
|
||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="The Igneum miner app">
|
||
<meta name="twitter:description" content="One click: install, start, the card mines, and every NVIDIA card from 8 GB proves. Four pages: Mine, Earnings, Prove, Settings. Every card is one row: rate, watts, pounds a day at your electricity price, a Tune button. A visible 1% software fee you can switch off.">
|
||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
|
||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||
<link rel="manifest" href="/site.webmanifest">
|
||
<!-- head:start -->
|
||
<link rel="preload" href="/fonts/unbounded-900.woff2" as="font" type="font/woff2" crossorigin>
|
||
<link rel="preload" href="/fonts/plex-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
||
<style>
|
||
/* Shared by every page. Source: site/partials/head.html, injected by site/build.mjs between the head markers. Edit the partial, not the page. */
|
||
/* Fonts, self-hosted (latin subsets, OFL): Unbounded 500/700/900, IBM Plex Sans 400/500/600, IBM Plex Mono 400/500. Fallbacks carry size and ascent overrides so the swap does not move the layout. */
|
||
@font-face{font-family:'Unbounded';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/unbounded-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/unbounded-700.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/unbounded-900.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-sans-400.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-sans-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-sans-600.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
||
@font-face{font-family:'Unbounded Fallback';src:local('Arial Black'),local('Arial-Black'),local('Impact');size-adjust:114%;ascent-override:87.5%;descent-override:21.5%;line-gap-override:0%}
|
||
@font-face{font-family:'Plex Sans Fallback';src:local('Arial'),local('Helvetica Neue'),local('Helvetica');size-adjust:100.5%;ascent-override:102%;descent-override:27.4%;line-gap-override:0%}
|
||
@font-face{font-family:'Plex Mono Fallback';src:local('Courier New'),local('Menlo');size-adjust:100%;ascent-override:102.5%;descent-override:27.5%;line-gap-override:0%}
|
||
:root{--f-sans:'IBM Plex Sans','Plex Sans Fallback',system-ui,-apple-system,sans-serif;--f-display:'Unbounded','Unbounded Fallback',sans-serif;--f-mono:'IBM Plex Mono','Plex Mono Fallback',ui-monospace,Menlo,monospace;
|
||
/* site chrome tokens (nav, footer, skip link). Dark by default; the litepaper sets light values and resets these in dark mode */
|
||
--nav-h:68px;--ui-bg:rgba(12,12,14,.84);--ui-menu:#0C0C0E;--ui-ink:#F4F1EC;--ui-ink-2:#C9C7C2;--ui-ash:#9A9A9E;--ui-line:#2A2A30;--ui-line-2:#3A3A42;--ui-accent:#F2541B;--ui-accent-ink:#0C0C0E;--ui-hot:#FFB35C;--ui-hover:#FF6A2B;--ui-tint:rgba(242,84,27,.12)}
|
||
html{-webkit-text-size-adjust:100%}
|
||
h1,h2,h3{text-wrap:balance}
|
||
p,li,dd,figcaption{text-wrap:pretty}
|
||
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ui-accent);outline-offset:3px;border-radius:6px}
|
||
.skip{position:absolute;left:12px;top:-80px;z-index:50;background:var(--ui-accent);color:var(--ui-accent-ink);padding:10px 14px;border-radius:10px;font:600 15px/1.2 var(--f-sans);text-decoration:none}
|
||
.skip:focus{top:12px}
|
||
/* nav: one bar on every page, the mark in its black square, seven links and the miner button, a menu under 941 px (the eight items need 688 px beside the brand at 15 px, so the bar fits from 941 px up without a wrapped label) */
|
||
.nav{position:sticky;top:0;z-index:20;background:var(--ui-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--ui-line);color:var(--ui-ink)}
|
||
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--nav-h)}
|
||
.nav a{color:inherit;text-decoration:none}
|
||
.brand{display:inline-flex;align-items:center;gap:10px;color:var(--ui-ink);text-decoration:none;flex:0 0 auto}
|
||
.brand .mark{display:block;flex:0 0 auto}
|
||
.brand .word{font-family:var(--f-display);font-weight:900;font-size:20px;letter-spacing:.06em;line-height:1}
|
||
.nav .links{display:flex;align-items:center;gap:clamp(14px,2vw,26px);font-size:15px;font-weight:500}
|
||
.nav .links a{color:var(--ui-ink-2);padding:4px 0;border-bottom:2px solid transparent;white-space:nowrap;transition:color .15s ease,border-color .15s ease}
|
||
.nav .links a:hover,.nav .brand:hover{color:var(--ui-hot);text-decoration:none}
|
||
.nav .brand:hover{color:var(--ui-ink)}
|
||
.nav .links a[aria-current="page"]{color:var(--ui-ink);border-bottom-color:var(--ui-accent)}
|
||
.nav .links a.cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 16px;border-radius:10px;font-weight:600;background:var(--ui-accent);color:var(--ui-accent-ink);border:1px solid var(--ui-accent);transition:background .15s ease,transform .15s ease}
|
||
.nav .links a.cta:hover{background:var(--ui-hover);border-color:var(--ui-hover);color:var(--ui-accent-ink);transform:translateY(-1px)}
|
||
.burger{display:none;background:none;border:1px solid var(--ui-line-2);color:var(--ui-ink);border-radius:10px;width:44px;height:44px;align-items:center;justify-content:center;cursor:pointer;padding:0;flex:0 0 auto}
|
||
.burger .x{display:none}.burger[aria-expanded="true"] .x{display:block}.burger[aria-expanded="true"] .bars{display:none}
|
||
@media (max-width:940px){
|
||
.nav .links{display:none;position:absolute;left:0;right:0;top:100%;background:var(--ui-menu);border-bottom:1px solid var(--ui-line);box-shadow:0 24px 40px rgba(0,0,0,.35);padding:10px var(--gutter,16px) 18px;flex-direction:column;align-items:stretch;gap:2px}
|
||
.nav .links a{padding:13px 10px;border-radius:10px;border-bottom:0;font-size:16px}
|
||
.nav .links a[aria-current="page"]{background:var(--ui-tint)}
|
||
.nav .links a.cta{margin-top:8px;min-height:48px}
|
||
.nav .links.open{display:flex}
|
||
.burger{display:inline-flex}
|
||
}
|
||
/* footer, the same on every page */
|
||
.foot{border-top:1px solid var(--ui-line);color:var(--ui-ink);margin-top:var(--sec,64px)}
|
||
.foot .wrap{padding-block:48px 32px}
|
||
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:32px}
|
||
.foot-brand{display:flex;flex-direction:column;gap:12px;max-width:34ch}
|
||
.foot-brand .brand{align-self:flex-start}.foot-brand .word{font-size:16px}
|
||
.foot-brand p{color:var(--ui-ash);font-size:14px;margin:0}
|
||
.foot-col{display:flex;flex-direction:column;gap:10px;font-size:15px}
|
||
.foot-col .eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ui-ash);margin-bottom:4px}
|
||
.foot-col a{color:var(--ui-ink-2);text-decoration:none;display:inline-flex;align-items:center;gap:6px;align-self:flex-start}
|
||
.foot-col a:hover{color:var(--ui-hot);text-decoration:none}
|
||
.foot-base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:36px;padding-top:20px;border-top:1px solid var(--ui-line);font-size:13px;color:var(--ui-ash)}
|
||
.foot-base span{text-wrap:balance}.foot-base .mono{font-family:var(--f-mono)}
|
||
.foot-imprint{flex-basis:100%;text-wrap:pretty}.foot-base a{color:inherit;text-decoration:none}.foot-base a:hover{color:var(--ui-hot)}
|
||
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
|
||
</style>
|
||
<!-- head:end -->
|
||
<style>
|
||
:root{--obsidian:#0C0C0E;--graphite:#16161A;--line:#2A2A30;--line-2:#3A3A42;--ember:#F2541B;--molten:#FFB35C;--bone:#F4F1EC;--ash:#9A9A9E;--ink-2:#C9C7C2;--ember-ink:#0C0C0E;
|
||
--max:1200px;--gutter:clamp(16px,4vw,32px);--sec:clamp(56px,8vw,96px);--head:clamp(40px,6vw,64px);
|
||
--card-pad:clamp(18px,3vw,28px);--card-r:18px;--tile-pad:18px 20px;--tile-r:14px;--gap:24px;--gap-tile:12px;
|
||
--fs-hero:clamp(32px,5.6vw,56px);--fs-h2:clamp(28px,4.2vw,44px);--fs-h3:clamp(18px,2vw,22px);--fs-tile:clamp(20px,2.2vw,26px)}
|
||
*{box-sizing:border-box}
|
||
html{scroll-behavior:smooth}
|
||
:root{--sm:84px}@media (max-width:900px){:root{--sm:80px}}
|
||
section,[id]{scroll-margin-top:var(--sm)}section[id]{scroll-margin-top:calc(var(--sm) - var(--sec))}
|
||
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
|
||
body{margin:0;background:var(--obsidian);color:var(--bone);font-family:var(--f-sans);font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
|
||
a{color:inherit;text-decoration:none}a:hover{color:var(--molten)}
|
||
img,svg{max-width:100%}
|
||
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gutter)}
|
||
.mono{font-family:var(--f-mono)}
|
||
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ash)}
|
||
.eyebrow.ember{color:var(--ember)}
|
||
h1,h2,h3{font-family:var(--f-display);margin:0;line-height:1.08;text-wrap:balance}
|
||
h1{font-weight:900;font-size:var(--fs-hero);letter-spacing:-.01em}
|
||
h2{font-weight:700;font-size:var(--fs-h2)}
|
||
h3{font-weight:700;font-size:var(--fs-h3)}
|
||
p{margin:0}
|
||
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px;border-radius:10px;font-weight:600;font-size:16px;border:1px solid var(--line-2);color:var(--bone);background:transparent;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}
|
||
.btn:hover{transform:translateY(-1px);border-color:var(--ash);color:var(--bone)}
|
||
.btn.primary{background:var(--ember);color:var(--ember-ink);border-color:var(--ember)}
|
||
.btn.primary:hover{background:#FF6A2B;border-color:#FF6A2B;color:var(--ember-ink)}
|
||
.card{background:var(--graphite);border:1px solid var(--line);border-radius:var(--card-r);padding:var(--card-pad);min-width:0}
|
||
.grid{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
|
||
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
|
||
.reveal.in{opacity:1;transform:none}
|
||
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
|
||
section{padding-block:var(--sec)}
|
||
section+section{padding-top:0;scroll-margin-top:var(--sm)}
|
||
.sec-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:32px}
|
||
.sec-head p{font-size:16px;color:var(--ash);max-width:46ch}
|
||
.pt{font-size:15px;color:var(--ash);max-width:64ch}
|
||
.lp{display:inline-block;margin-top:24px;color:var(--ember);font-weight:600;font-size:15px}
|
||
.cta{display:flex;flex-wrap:wrap;gap:12px}
|
||
|
||
/* hero: copy left, the dashboard in its frame right; one column under 980 px */
|
||
.hero{position:relative;padding-block:clamp(48px,8vw,96px) clamp(40px,6vw,72px);overflow:hidden}
|
||
.hero::before{content:'';position:absolute;inset:auto -10% -30% 40%;height:70%;background:radial-gradient(closest-side,rgba(242,84,27,.18),rgba(242,84,27,0));pointer-events:none}
|
||
.hero .wrap{position:relative;display:grid;gap:36px;grid-template-columns:1fr;align-items:center}
|
||
@media (min-width:980px){.hero .wrap{grid-template-columns:.9fr 1.1fr;gap:32px 56px}}
|
||
.hero-copy{display:flex;flex-direction:column;gap:22px}
|
||
.hero p.lead{font-size:clamp(17px,2vw,20px);color:var(--ink-2);max-width:52ch}
|
||
.hero .os{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14px;color:var(--ash)}
|
||
.hero .os span{display:inline-flex;align-items:center;gap:6px}
|
||
|
||
/* the device frame: a window bar, the screenshot, an ember glow behind */
|
||
.shot{position:relative;min-width:0}
|
||
.shot::before{content:'';position:absolute;inset:12% -6% -8% -6%;background:radial-gradient(closest-side,rgba(242,84,27,.22),rgba(242,84,27,0));filter:blur(12px);pointer-events:none}
|
||
.frame{position:relative;border:1px solid var(--line-2);border-radius:16px;background:#0C0C0E;box-shadow:0 30px 80px rgba(0,0,0,.55);overflow:hidden}
|
||
.frame .bar{height:32px;display:flex;align-items:center;gap:7px;padding:0 14px;border-bottom:1px solid var(--line);background:#121215}
|
||
.frame .bar i{width:10px;height:10px;border-radius:50%;background:#2A2A30;display:block}
|
||
.frame .bar b{margin-left:auto;font:500 11px/1 var(--f-mono);letter-spacing:.12em;color:var(--ash);text-transform:uppercase}
|
||
.frame img{display:block;width:100%;height:auto}
|
||
.frame figcaption{padding:10px 14px;font-size:13px;color:var(--ash);border-top:1px solid var(--line)}
|
||
/* the page-by-page section: three desktop shots in a grid, then the light desktop beside the phone */
|
||
.shots{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));margin-top:28px}
|
||
.shots .shot::before{inset:20% -4% -6% -4%}
|
||
.shots-row{display:grid;gap:var(--gap);grid-template-columns:1fr;align-items:start;margin-top:var(--gap)}
|
||
@media (min-width:900px){.shots-row{grid-template-columns:minmax(0,2.3fr) minmax(0,1fr)}}
|
||
.frame.phone{max-width:320px;margin:0 auto}
|
||
.frame.light{background:#F2F0EB;border-color:#D9D6CF}
|
||
.frame.light .bar{background:#E9E6DF;border-color:#D9D6CF}
|
||
.frame.light .bar i{background:#CFCBC2}
|
||
.frame.light figcaption{background:#0C0C0E}
|
||
.row-tbl{margin-top:28px}
|
||
.row-tbl td:first-child{white-space:nowrap;font-weight:600}
|
||
|
||
/* the three steps */
|
||
.steps{display:grid;gap:var(--gap-tile);grid-template-columns:repeat(3,minmax(0,1fr));position:relative}
|
||
.step{background:var(--graphite);border:1px solid var(--line);border-radius:var(--tile-r);padding:var(--tile-pad);display:flex;flex-direction:column;gap:10px;position:relative;min-width:0}
|
||
.step .n{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;color:var(--ember)}
|
||
.step .t{font-family:var(--f-display);font-weight:700;font-size:var(--fs-h3)}
|
||
.step p{font-size:14px;color:var(--ash);line-height:1.45}
|
||
.step svg{width:40px;height:40px}
|
||
.step::after{content:'';position:absolute;right:-9px;top:50%;width:14px;height:14px;border-top:2px solid var(--line-2);border-right:2px solid var(--line-2);transform:translateY(-50%) rotate(45deg);z-index:1}
|
||
.step:last-child::after{display:none}
|
||
@media (max-width:640px){.steps{grid-template-columns:1fr}.step::after{right:auto;left:50%;top:auto;bottom:-9px;transform:translateX(-50%) rotate(135deg)}}
|
||
|
||
/* feature groups: a heading row, then tiles with one line each */
|
||
.group{display:grid;gap:var(--gap);grid-template-columns:1fr;margin-bottom:var(--sec)}
|
||
@media (min-width:900px){.group{grid-template-columns:300px minmax(0,1fr);gap:48px}}
|
||
.group:last-child{margin-bottom:0}
|
||
.group .g-head{display:flex;flex-direction:column;gap:12px}
|
||
.group .g-head p{font-size:15px;color:var(--ash)}
|
||
.feats{display:grid;gap:var(--gap-tile);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
|
||
.feat{background:var(--graphite);border:1px solid var(--line);border-radius:var(--tile-r);padding:var(--tile-pad);display:flex;flex-direction:column;gap:6px;min-width:0;transition:border-color .2s ease}
|
||
.feat:hover{border-color:var(--line-2)}
|
||
.feat b{font-weight:600;font-size:16px}
|
||
.feat p{font-size:14px;color:var(--ash);line-height:1.45}
|
||
.feat .src{font-family:var(--f-mono);font-size:11px;color:var(--ember);margin-top:4px}
|
||
.feat.wide{grid-column:1/-1}
|
||
|
||
/* the swap table and the measured table */
|
||
.tbl{overflow-x:auto;border:1px solid var(--line);border-radius:var(--card-r);background:var(--graphite);-webkit-overflow-scrolling:touch}
|
||
table{border-collapse:collapse;width:100%;min-width:560px;font-size:15px}
|
||
th,td{padding:12px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
|
||
th{font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash);font-weight:500;background:var(--obsidian)}
|
||
tr:last-child td{border-bottom:0}
|
||
td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
|
||
td a{color:var(--ember)}
|
||
.levers table{min-width:760px}.levers td:first-child{min-width:210px}.levers td:nth-child(2){min-width:260px}
|
||
|
||
/* the fee card: the switch as the app draws it, the start lines as the miner prints them */
|
||
.fee{display:grid;gap:var(--gap);grid-template-columns:1fr}
|
||
@media (min-width:900px){.fee{grid-template-columns:1.1fr .9fr;align-items:start}}
|
||
.switch{display:inline-flex;align-items:center;gap:12px;font-size:15px}
|
||
.switch .track{width:44px;height:26px;border-radius:13px;background:var(--ember);position:relative;flex:0 0 44px}
|
||
.switch .track::after{content:'';position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:var(--bone)}
|
||
.switch.off .track{background:var(--line-2)}.switch.off .track::after{right:auto;left:3px}
|
||
pre{margin:0;padding:14px 16px;background:var(--obsidian);border:1px solid var(--line);border-radius:12px;font-family:var(--f-mono);font-size:12.5px;line-height:1.55;color:var(--ink-2);white-space:pre-wrap;overflow-wrap:anywhere}
|
||
pre b{color:var(--molten);font-weight:500}
|
||
|
||
.band{background:var(--ember);color:var(--ember-ink)}
|
||
.band .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;padding-block:56px}
|
||
.band h2{font-weight:900;font-size:clamp(26px,3.5vw,36px)}
|
||
.band p{font-size:16px;max-width:56ch}
|
||
.btn.dark{background:var(--obsidian);color:var(--bone);border-color:var(--obsidian)}
|
||
.btn.dark:hover{background:#222226;color:var(--bone)}
|
||
.foot{margin-top:0}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- nav:start -->
|
||
<a class="skip" href="#main">Skip to content</a>
|
||
<nav class="nav" aria-label="Main">
|
||
<div class="wrap">
|
||
<a href="/" class="brand" aria-label="Igneum home">
|
||
<svg class="mark" viewBox="0 0 1024 1024" width="36" height="36" aria-hidden="true"><rect width="1024" height="1024" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
|
||
<span class="word">IGNEUM</span>
|
||
</a>
|
||
<button class="burger" id="nav-burger" type="button" aria-expanded="false" aria-controls="nav-links" aria-label="Menu"><svg class="bars" viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16"></path></svg><svg class="x" viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"></path></svg></button>
|
||
<div class="links" id="nav-links">
|
||
<a href="/litepaper" data-nav="litepaper">Litepaper</a>
|
||
<a href="/live" data-nav="live">Live devnet</a>
|
||
<a href="/bench" data-nav="bench">Engineering log</a>
|
||
<a href="/miner" data-nav="miner" aria-current="page">Miner</a>
|
||
<a href="/wallet" data-nav="wallet">Wallet</a>
|
||
<a href="/evidence" data-nav="evidence">Evidence</a>
|
||
<a href="https://github.com/igneum-network/spec" rel="noopener">GitHub</a>
|
||
<a href="/miner" class="cta">The miner</a>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<script>
|
||
(function(){
|
||
// the menu: open on the button, closed by any link, a tap outside, Escape (focus back on the button) or a resize past 940 px
|
||
var b=document.getElementById('nav-burger'),l=document.getElementById('nav-links');if(!b||!l)return;
|
||
function set(o){l.classList.toggle('open',o);b.setAttribute('aria-expanded',o?'true':'false');}
|
||
b.addEventListener('click',function(){set(!l.classList.contains('open'));});
|
||
l.addEventListener('click',function(e){if(e.target.closest('a'))set(false);});
|
||
document.addEventListener('click',function(e){if(l.classList.contains('open')&&!l.contains(e.target)&&!b.contains(e.target))set(false);});
|
||
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&l.classList.contains('open')){set(false);b.focus();}});
|
||
var mq=window.matchMedia('(min-width:941px)');if(mq.addEventListener)mq.addEventListener('change',function(){set(false);});
|
||
})();
|
||
</script>
|
||
<!-- nav:end -->
|
||
|
||
<main id="main">
|
||
<header class="hero" id="top">
|
||
<div class="wrap">
|
||
<div class="hero-copy">
|
||
<div class="eyebrow ember"><span data-product="full">Igneum Ember</span> · one click</div>
|
||
<h1>Install. Start. The card mines. Every NVIDIA card from 8 GB proves; 12 GB and up mine and prove.</h1>
|
||
<p class="lead"><span data-product="name">Ember</span> finds your GPU, makes a wallet for you and runs the node, the miner and the prover as one app. Four pages: Mine, Earnings, Prove, Settings. Every card is one row: its rate, its watts, pounds a day at your electricity price, a Tune button. Every hour it compiles the next program while the current one mines, so the card never stops.</p>
|
||
<div class="cta">
|
||
<a href="#get" class="btn primary">Downloads: public testnet</a>
|
||
<a href="#features" class="btn">Every feature</a>
|
||
</div>
|
||
<div class="os">
|
||
<span>Windows</span><span>macOS</span><span>Linux</span><span>HiveOS</span><span>NVIDIA · AMD · Apple silicon</span>
|
||
</div>
|
||
</div>
|
||
<div class="shot reveal">
|
||
<figure class="frame" style="margin:0">
|
||
<div class="bar"><i></i><i></i><i></i><b><span data-product="app">Igneum Miner</span></b></div>
|
||
<img src="/img/miner-dashboard.webp" width="2880" height="1800" alt="The Mine page of Igneum Miner 0.3.14: the Start mining button, the live total in MH/s and blocks, the card row for an Apple M5 Max with its state word, Tune button and switch, the tune line, the Tuning card with Efficiency, Balanced and Maximum, the node as one line, and the activity strip" fetchpriority="high" decoding="async">
|
||
<figcaption><span data-product="caption">Igneum Ember (the app window still says Igneum Miner)</span> 0.3.14, Mine page, on an Apple M5 Max, paused, live devnet, 6 Oct 2026.</figcaption>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<section id="how">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>Hash, prove, get paid</h2>
|
||
<p>One client. The card hashes the lottery, proves the shards the chain assigns to it, and every block pays one address.</p>
|
||
</div>
|
||
<div class="steps reveal">
|
||
<div class="step">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="var(--ember)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="12" rx="2"></rect><path d="M7 9h4M7 13h2M15 9v4M18 9v4M9 21h6"></path></svg>
|
||
<div class="n">01 · HASH</div><div class="t">The card hashes</div>
|
||
<p>A new random program every hour. 80% of each block to the card that finds it.</p>
|
||
</div>
|
||
<div class="step">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="var(--ember)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7l8-4z"></path><path d="M9 12l2 2 4-4"></path></svg>
|
||
<div class="n">02 · PROVE</div><div class="t">The same card proves</div>
|
||
<p>The client switches to the shards the chain assigns to its keys, posts the proof, and goes back to hashing.</p>
|
||
</div>
|
||
<div class="step">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="var(--ember)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="8"></circle><path d="M12 7v10M9.5 9.5h3.75a1.75 1.75 0 010 3.5h-2.5a1.75 1.75 0 000 3.5H14.5"></path></svg>
|
||
<div class="n">03 · GET PAID</div><div class="t">One address, in IGN</div>
|
||
<p>Block rewards and proving payouts land on the address the app made for you. The <a href="/wallet" style="color:var(--ember)">wallet</a> shows them.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="app">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>Four pages. Every card is one row.</h2>
|
||
<p>Mine, Earnings, Prove, Settings, shipped in 0.3.14 on 6 October 2026. The screenshots are the live app on this team's Apple M5 Max, paused. Apple silicon reports no draw, so its row carries no watts and no pounds; an NVIDIA or AMD card's row does.</p>
|
||
</div>
|
||
<div class="tbl row-tbl reveal"><table>
|
||
<thead><tr><th>On the row</th><th>What it says</th><th>When it is not shown</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>State word</td><td>mining, paused, tuning: step 7 of 9, waiting for the node, restarting in 4 s, off with the reason. A card never shows 0 MH/s without a word.</td><td>Always shown.</td></tr>
|
||
<tr><td>Rate</td><td>122 MH/s, live.</td><td>Blank with the state word when the card is not mining.</td></tr>
|
||
<tr><td>Power</td><td>290 W with 0.42 MH/W under it.</td><td>A card that reports no draw: Apple silicon, an integrated GPU. The row says so once.</td></tr>
|
||
<tr><td>Pounds a day</td><td>Watts × 24 ÷ 1,000 × your pence per kWh. The price is yours, set once in Settings.</td><td>"Set a price" until you set one; hidden with no draw.</td></tr>
|
||
<tr><td>Temperature</td><td>61 °C. Amber from 86 °C, ember from 92 °C.</td><td>When the card reports none.</td></tr>
|
||
<tr><td>Tune and the switch</td><td>Tune starts an Ember Tune on this card; Stop during a run. The switch turns the card on or off. Tune all queues every card, one at a time.</td><td>Tune is hidden for a card with no control and no measurement.</td></tr>
|
||
<tr><td>The tune line</td><td>"Not tuned yet: starts after 2 min of steady mining", "Tuning: step 7 of 9 · about 4 min left", "Tuned 2 h ago · 1,854 MHz at 100% · next check Sunday", or "Measured 27 MH/s as it runs" where the system sets the clocks.</td><td>No line for a card with no control and no measurement.</td></tr>
|
||
<tr><td>Under the chevron</td><td>The power cap slider, identities, pin or unpin, memory temperature, clocks, device facts, the last tune's table.</td><td>Closed by default.</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<p class="pt reveal" style="margin-top:16px">Under the rows: the Tuning card (Efficiency, Balanced, Maximum, and about how many pounds a day at that goal), then the node as one line: synced, peers, blocks, read N s ago. Details opens the chain numbers in place.</p>
|
||
<div class="shots">
|
||
<div class="shot reveal">
|
||
<figure class="frame" style="margin:0">
|
||
<div class="bar"><i></i><i></i><i></i><b>Earnings</b></div>
|
||
<img src="/img/miner-earnings.webp" width="2880" height="1800" alt="The Earnings page: pounds earned with the devnet reason, IGN from proofs, blocks lifetime and this run, electricity at your price, the dev fee switch, the rewards address with Copy, Change address and Show my key" loading="lazy" decoding="async">
|
||
<figcaption>Money first. £ earned reads 0.00 on devnet and says why. The dev fee switch lives here. Change address and Show my key ask in place, no dialogs.</figcaption>
|
||
</figure>
|
||
</div>
|
||
<div class="shot reveal">
|
||
<figure class="frame" style="margin:0">
|
||
<div class="bar"><i></i><i></i><i></i><b>Prove</b></div>
|
||
<img src="/img/miner-prove.webp" width="2880" height="1800" alt="The Prove page: the Prove on this machine switch, one sentence per card on what it can prove, one line of counts, and Details" loading="lazy" decoding="async">
|
||
<figcaption>One switch, one sentence per card, one line of counts: assigned, proven, paid, IGN. Details holds the verifier, the program id and the segments.</figcaption>
|
||
</figure>
|
||
</div>
|
||
<div class="shot reveal">
|
||
<figure class="frame" style="margin:0">
|
||
<div class="bar"><i></i><i></i><i></i><b>Settings</b></div>
|
||
<img src="/img/miner-settings.webp" width="2880" height="1800" alt="The Settings page: Tuning with the goal, Ember Tune, Power control, Hill climb and the electricity price; This machine with start at login, remote jobs, the name and appearance; the update card" loading="lazy" decoding="async">
|
||
<figcaption>Plain rows, one sentence each: Tuning, This machine, one update card, Logs, Advanced. The electricity price every £ figure uses is set here.</figcaption>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
<div class="shots-row">
|
||
<div class="shot reveal">
|
||
<figure class="frame light" style="margin:0">
|
||
<div class="bar"><i></i><i></i><i></i><b>Light</b></div>
|
||
<img src="/img/miner-dashboard-light.webp" width="2880" height="1800" alt="The Mine page in light mode" loading="lazy" decoding="async">
|
||
<figcaption>Light and dark follow the system. Settings lets you pick one.</figcaption>
|
||
</figure>
|
||
</div>
|
||
<div class="shot reveal">
|
||
<figure class="frame phone" style="margin:0 auto">
|
||
<div class="bar"><i></i><i></i><i></i><b>390 px</b></div>
|
||
<img src="/img/miner-phone.webp" width="780" height="1688" alt="The Mine page in a 390 pixel wide window: the big button, the totals, the card row stacked, a bottom tab bar with Mine, Earnings, Prove, Settings and Logs" loading="lazy" decoding="async">
|
||
<figcaption>Under 720 px the rail becomes a bottom tab bar.</figcaption>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="features">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>Every feature, one line each</h2>
|
||
<p>What the app does today on the live devnet, and what is built but not yet measured on a card. Each number links to its engineering log entry.</p>
|
||
</div>
|
||
|
||
<div class="group reveal" id="start">
|
||
<div class="g-head"><div class="eyebrow ember">01 · One click</div><h3>Install, press Start</h3><p>Five steps from download to the first block on a friend's laptop: drag to Applications, open, Get started, Make me an address, Start mining.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>The card mines; an NVIDIA card proves</b><p>One button starts the node, waits for sync, starts one miner per card and, on an NVIDIA card, the prover: every NVIDIA card from 8 GB proves; 12 GB and up mine and prove; 24 GB on the stock server (eleven rented cards, RTX 3060 to RTX 5090, 6 October 2026, docs/analysis/prover-tiers-real-cards.md); the patched server for the smaller cards is not yet in the shipped app. AMD and Apple cards mine; a prover for them lands when a zkVM ships one. Quit stops them in order.</p></div>
|
||
<div class="feat"><b>Finds your GPU by itself</b><p>NVIDIA through the driver, AMD and Intel through OpenCL, Apple silicon through Metal. Real card names, one worker per card.</p></div>
|
||
<div class="feat"><b>A wallet made for you</b><p>A payout key made on your machine and locked to your user, with a backup step before mining starts. Or paste an address you already hold.</p></div>
|
||
<div class="feat"><b>Earnings, money first</b><p>Every block this machine finds pays one address in IGN. The Earnings page counts blocks this run and for life, IGN from proofs, and the electricity cost at your price. £ earned stays 0.00 on devnet and says why; a market price fills it in when one exists (coming). The <a href="/wallet" style="color:var(--ember)">wallet</a> shows the balance.</p></div>
|
||
<div class="feat"><b>Windows, macOS, Linux</b><p>An installer on Windows, a disk image on macOS, a package on Linux. No toolchain, no driver work: the GPU workers are prebuilt.</p></div>
|
||
<div class="feat"><b>HiveOS package</b><p>A custom miner for farms: the Linux miner, node and both GPU workers with the four Hive hooks. Hive itself is untested: report what breaks.</p></div>
|
||
<div class="feat"><b>First outside machine</b><p>An Apple silicon laptop, no instructions beyond the five steps: 33 accepted blocks in 7 minutes, 0 rejected, 21.0 MH/s average.</p><a class="src" href="/bench#4-october-2026-first-outside-machine-on-the-devnet-an-apple-silicon-laptop-through-the-igneum-miner-app">log · 4 Oct 2026</a></div>
|
||
<div class="feat"><b>First card on the app</b><p>An RTX 5090 on Windows from the installer: 117 to 119 MH/s, 34 accepted blocks in the first minute, CPU re-check OK on every share.</p><a class="src" href="/bench#4-october-2026-first-machine-on-the-igneum-miner-app-pc-2-s-rtx-5090-at-118-mh-s-via-setup-exe">log · 4 Oct 2026</a></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="group reveal" id="client">
|
||
<div class="g-head"><div class="eyebrow ember">02 · One client</div><h3>Hashing and proving, switched by the client</h3><p>The lottery and the proving are kept apart on purpose. The client runs both and the miner sees one balance.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>Hashing and proving in one client</b><p>Proving is a switch. On, the client proves the shards the chain assigns to this machine's keys, submits the record to its own node and goes back to hashing. The Prove page shows one sentence per card on what it can prove and one line of counts: assigned, proven, paid, IGN.</p></div>
|
||
<div class="feat"><b>Several identities per card</b><p>Identities take turns on the card and each one votes and pays separately. 8 suits a big card, 2 a small one, 1 an integrated GPU.</p></div>
|
||
<div class="feat"><b>Hourly program, no pause</b><p>The node announces the next seed early. The worker compiles the next program in the background and swaps at the boundary while the current one mines.</p><a class="src" href="/bench#4-october-2026-first-hourly-program-swap-on-the-live-devnet-compile-ahead-no-pause-two-cards">log · 4 Oct 2026</a></div>
|
||
<div class="feat wide">
|
||
<b>The first live swap, 4 Oct 2026, three vendors</b>
|
||
<div class="tbl" style="margin-top:8px"><table>
|
||
<thead><tr><th>Card</th><th>Compile, ahead of time</th><th>Swap at the boundary</th><th>Rate before / after</th><th>Rejected</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>Apple M5 Max, Metal</td><td class="num">82 ms</td><td class="num">0.01 ms</td><td class="num">26.7 / 26.7 MH/s</td><td class="num">0</td></tr>
|
||
<tr><td>RTX 5090, CUDA</td><td class="num">1,285 ms</td><td class="num">0.00 ms</td><td class="num">121.8 / 123.4 MH/s</td><td class="num">0</td></tr>
|
||
<tr><td>AMD Radeon integrated, OpenCL</td><td>prepared</td><td>no restart</td><td class="num">2.74 / 2.74 MH/s</td><td class="num">0</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<a class="src" href="/bench#4-october-2026-first-hourly-program-swap-on-the-live-devnet-compile-ahead-no-pause-two-cards">log · 4 Oct 2026, live devnet v4, epoch boundary at DAA 3,600</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="group reveal" id="updates">
|
||
<div class="g-head"><div class="eyebrow ember">03 · Updates</div><h3>Signed, over the air, at a safe moment</h3><p>Every app updates itself. This is also how a consensus upgrade reaches every node before its activation height.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>Signed over the air</b><p>The manifest is signed with an Ed25519 key compiled into the app. The app verifies the bytes before it reads them, then checks the download's size and hash.</p></div>
|
||
<div class="feat"><b>Installed at a safe moment</b><p>Node synced, no hourly boundary within 3 minutes, no worker starting. Machines take turns, each in its own minute of the hour, and never while the network lost over 30% of its identities in 10 minutes.</p></div>
|
||
<div class="feat"><b>Mining continues through an update</b><p>The download and the staging run while the card mines. The swap itself takes seconds. If the new version fails to start twice, the previous one comes back by itself.</p></div>
|
||
<div class="feat"><b>Urgent when it has to be</b><p>At once when a consensus activation is within 1,800 blocks or the version is below the minimum supported, or when you click Install now.</p></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="group reveal" id="tuning">
|
||
<div class="g-head"><div class="eyebrow ember">04 · Faster, by measurement</div><h3>The fleet tunes itself</h3><p>Nothing here changes the hash. Every variant is the same program in a different shape for the compiler, checked bit for bit before it is timed.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>Variant racing every hour</b><p>At every hourly prepare the worker compiles the program in several shapes (unroll, load path, register budget, threads per group), times each for 2 seconds and keeps the fastest for the hour. Base keeps its place unless beaten.</p><a class="src" href="/bench#4-october-2026-miner-performance-variant-racing-metal-worker-on-the-m5-max-the-rtx-5090-job-is-ready-not-run">log · 4 Oct 2026</a></div>
|
||
<div class="feat"><b>Measured on Apple silicon</b><p>On the M5 Max, 256-thread groups ran 17.3% and 21.2% faster than base on two programs, under load from other work. The NVIDIA race is built and has not yet run on a GPU.</p><a class="src" href="/bench#4-october-2026-miner-performance-variant-racing-metal-worker-on-the-m5-max-the-rtx-5090-job-is-ready-not-run">log · 4 Oct 2026, ratios under contention</a></div>
|
||
<div class="feat"><b>Fleet tuning manifest</b><p>Every race is one record in the app log. The fleet's best variant per card model goes back out inside the signed update manifest, so a card starts from the known best and keeps racing.</p></div>
|
||
<div class="feat"><b>Ember Tune</b><p>Tunes every card for hashes per watt: once after install, then every 7 days, and after a driver or program change. The app steps the power limit and the core clock on the live kernel, 60 seconds a step, and keeps the point with the best MH per watt within 1% of the card's top rate. The memory clock is never touched; a step with a rejected hash, a hot GPU or a dragged memory clock is reverted and marked. Every result feeds a fleet prior per card model that the next card of that model starts from. One goal for all cards: Efficiency, Balanced or Maximum, with about how many pounds a day at that goal.</p><a class="src" href="/bench">log · 6 Oct 2026, Ember run 6</a></div>
|
||
<div class="feat"><b>Power control: one approval, then no prompts</b><p>Setting an NVIDIA power or clock limit needs administrator rights on Windows. The app asks once, when you turn Power control on, and registers a helper task; every cap after that is set through the task with no prompt. Off, NVIDIA cards are measured only. AMD cards are set through the app's own helper with no prompt at all.</p><a class="src" href="/bench">log · 6 Oct 2026, the task re-pointed and two caps set with no prompt</a></div>
|
||
<div class="feat wide">
|
||
<b>Ember Tune measured, PC 1, 6 Oct 2026</b>
|
||
<div class="tbl" style="margin-top:8px"><table>
|
||
<thead><tr><th>Card</th><th>Untuned</th><th>Tuned</th><th>Saved</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>RTX 5090</td><td class="num">311.0 W<br>127.9 MH/s<br>0.411 MH/W</td><td class="num">226.8 W at 1,854 MHz, cap 100%<br>127.71 MH/s (0.15% less)<br>0.563 MH/W</td><td class="num">84 W<br>£0.56 a day at 28p/kWh</td></tr>
|
||
<tr><td>RTX 4070</td><td class="num">106.0 W<br>28.72 MH/s<br>0.271 MH/W</td><td class="num">75.6 W at 1,863 MHz, cap 50%<br>28.78 MH/s (none lost)<br>0.381 MH/W</td><td class="num">30 W<br>£0.20 a day at 28p/kWh</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<p style="font-size:13px;color:var(--ash);margin-top:8px">The chosen clocks are the floor of the ladder, not the optimum: the next cut's ladder goes lower. The pounds are arithmetic from the saved watts at 28p per kWh; the app uses your price. The RX 9070 XT's run aborted at step 1 on a rule that asked a card reporting offsets for watts, fixed the same hour; its row is owed.</p>
|
||
<a class="src" href="/bench">log · 6 Oct 2026, Ember run 6 on PC 1 (job ember-tune-pc1-6, 0.3.13 + kit 6, elevated, one click)</a>
|
||
</div>
|
||
<div class="feat"><b>Latency work</b><p>A block built on a stale tip earns less. The miner is moving from polling to a template subscription and shorter jobs, so a new tip reaches the card in milliseconds. In progress, no number published yet.</p></div>
|
||
<div class="feat"><b>Remote signed jobs, opt in</b><p>Our own fleet only. A switch, "Allow remote jobs from Igneum (signed)", with the key's fingerprint beside it. Off aborts the running job and stops polling. Jobs run at most once each and only on the machines they name.</p></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="group reveal" id="reliability">
|
||
<div class="g-head"><div class="eyebrow ember">05 · Reliability</div><h3>Watchdog, restart, clock</h3><p>Measured against a worker that misbehaves on command: these are recoveries in seconds, not hash rates.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>Watchdog per card</b><p>No status line for 90 seconds, or a hash rate of 0 for 60 seconds while synced: the miner is restarted once. If it recurs, that card is marked faulted with the reason and the other cards keep mining.</p><a class="src" href="/bench#4-october-2026-miner-fault-guards-and-the-app-watchdog-measured-against-a-fake-worker-miner-community-lead-app-owner">log · 4 Oct 2026</a></div>
|
||
<div class="feat"><b>Watchdog per node</b><p>A node that answers nothing for 120 seconds is restarted by the app, with a growing delay when it repeats. Measured: silent node to mining again in 160.0 s.</p><a class="src" href="/bench#4-october-2026-miner-fault-guards-and-the-app-watchdog-measured-against-a-fake-worker-miner-community-lead-app-owner">log · 4 Oct 2026</a></div>
|
||
<div class="feat"><b>Restart in order</b><p>Miners first, then the node, on quit and on update. What crashes comes back. A worker that restarts itself is left alone, so nothing is restarted twice.</p></div>
|
||
<div class="feat"><b>Clock check</b><p>A clock 60 seconds slow kept a node silently dead for 12 minutes. Now the app reads block times and an HTTPS Date header: over 5 seconds a warning, over 10 seconds Start is blocked and a Sync clock button appears.</p><a class="src" href="/bench#4-october-2026-a-node-60-s-behind-the-clock-is-silently-dead-pc-2-s-first-app-install">log · 4 Oct 2026</a></div>
|
||
<div class="feat wide">
|
||
<b>Recoveries measured, 4 Oct 2026</b>
|
||
<div class="tbl" style="margin-top:8px"><table>
|
||
<thead><tr><th>What the worker did</th><th>What the app did</th><th>Back to mining</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>Reported 0 hashes</td><td>Restarted the miner once after the 60 s rule</td><td class="num">91.0 s</td></tr>
|
||
<tr><td>The same again inside five minutes</td><td>Marked the card faulted, no further restart; Resume cleared it</td><td class="num">75.4 s to faulted</td></tr>
|
||
<tr><td>The miner process stopped</td><td>Killed and restarted it after the 90 s rule</td><td class="num">101.4 s</td></tr>
|
||
<tr><td>The node process stopped</td><td>Restarted the node, which synced; mining resumed</td><td class="num">160.0 s</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<a class="src" href="/bench#4-october-2026-miner-fault-guards-and-the-app-watchdog-measured-against-a-fake-worker-miner-community-lead-app-owner">log · 4 Oct 2026, a fake worker on a private test network, no real GPU</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="group reveal" id="log">
|
||
<div class="g-head"><div class="eyebrow ember">06 · Published</div><h3>The log and the bench table</h3><p>Every number on this page has a row. Prototype numbers say so.</p></div>
|
||
<div class="feats">
|
||
<div class="feat"><b>Engineering log</b><p>Every benchmark and test the project has made, with the hardware and the commands. Newest at the bottom.</p><a class="src" href="/bench">/bench</a></div>
|
||
<div class="feat"><b>GPU bench table</b><p>One row per card, generator version and miner version: best MH/s, MH per watt where measured, the date and the log entry behind each number.</p><a class="src" href="/miners">/miners</a></div>
|
||
<div class="feat"><b>Your rows, from your machine</b><p>The app uploads its status lines once a minute under a per-install id. Rows marked "reported by the fleet" come from machines we do not own.</p></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="ahead">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>Why <span data-product="full">Igneum Ember</span> stays ahead</h2>
|
||
<p>Six levers, set on 4 October 2026. Each one is an idea in one line and a measured state. Nothing here claims fastest: the bench table says that, or it does not.</p>
|
||
</div>
|
||
<div class="tbl levers reveal"><table>
|
||
<thead><tr><th>Lever</th><th>The idea</th><th>Measured state</th></tr></thead>
|
||
<tbody>
|
||
<tr><td><b>1 · Race the compiler every hour</b></td><td>For each new program, five to ten kernel variants are compiled, benched for two seconds each, and the winner is kept for the hour.</td><td>Measured on the Mac's Metal worker: the winning variant +17.3% on the genesis seed and +21.2% on the hourly seed over the base compile, under load from other work. The RTX 5090 race is prepared and not yet run. <a href="/bench#4-october-2026-miner-performance-variant-racing-metal-worker-on-the-m5-max-the-rtx-5090-job-is-ready-not-run">Log, 4 Oct 2026</a></td></tr>
|
||
<tr><td><b>2 · Auto-tune that learns from the fleet</b></td><td>Apps report the race per card and program class, and every finished Ember Tune. The best settings come back down through the signed update manifest as defaults, so the miner gets faster and more efficient for everyone as the fleet grows.</td><td>Shipped. The fleet is still small, so no fleet table yet; the priors table on <a href="/miners#priors">/miners</a> fills as machines report.</td></tr>
|
||
<tr><td><b>3 · Hash per watt, not hash</b></td><td>Ember Tune: two knobs per card (power limit, core clock), the memory clock held, the point with the best MH per watt within 1% of the top rate kept and pinned. Miners pay for electricity; that is the number they compare.</td><td>Measured on PC 1, 6 Oct 2026: an RTX 5090 from 311.0 W to 226.8 W for 0.15% of its rate (0.411 to 0.563 MH/W); an RTX 4070 from 106.0 W to 75.6 W for none (0.271 to 0.381 MH/W). The chosen clocks are the ladder's floor, not the optimum. AMD through the app's own helper, no prompt; Apple silicon measures only. The <a href="#tuning">table above</a>.</td></tr>
|
||
<tr><td><b>4 · Template latency</b></td><td>Solo against the local node, a new template within 50 ms of a new tip, because a late block on a BlockDAG goes red and earns nothing.</td><td>Approximate, from the 0.3.6 release plan and not yet in the engineering log: switched p50 46 to 52 ms on a three-node CPU run, 5 Oct 2026. Ships in 0.3.6.</td></tr>
|
||
<tr><td><b>5 · Never lose a second</b></td><td>Zero-loss hourly program swaps, fault guards, automatic restart, a CPU re-check of every found hash, per-worker health.</td><td>Shipped. Swap 0.01 ms on Metal and 0.00 ms on CUDA with 0 rejected blocks; recoveries in the <a href="#reliability">table above</a>. <a href="/bench#4-october-2026-first-hourly-program-swap-on-the-live-devnet-compile-ahead-no-pause-two-cards">Log, 4 Oct 2026</a></td></tr>
|
||
<tr><td><b>6 · Prove it in public</b></td><td>The bench table per card, fed from the job channel. We claim fastest only when the table says so.</td><td>Live at <a href="/miners">/miners</a>, one row per card, generator version and miner version, each with its log entry.</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<p class="pt reveal" style="margin-top:16px">The dev fee is the software's 1%, visible and switchable. The protocol carries no fee. <a href="#fee" style="color:var(--ember)">The fee, in full view</a>.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="fee">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>The fee, in full view</h2>
|
||
<p>The protocol carries no fee: no dev fund, no fee to any team, foundation or fund. The software fee is the miner app's, like every other GPU miner's, and one flag turns it off.</p>
|
||
</div>
|
||
<div class="fee reveal">
|
||
<div class="card" style="display:flex;flex-direction:column;gap:16px">
|
||
<p style="font-size:15px;color:var(--ink-2)">The <span data-product="name">Ember</span> software takes a visible, switchable 1% dev fee, the norm for GPU miners. One block template in 100 is requested with the dev payout address instead of yours. The fee goes to Igneum Labs LTD, the company that ships the software. The choice is a template counter, never a random draw, so it is exactly 1 in 100 and anyone can audit it from the source or from the chain. A fee block still adds to your finality weight; the only thing that moves is who the execution layer pays for that one block.</p>
|
||
<div class="tbl"><table style="min-width:0">
|
||
<thead><tr><th>Where</th><th>Off with</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>The app, Earnings</td><td>the Dev fee switch under the money rows</td></tr>
|
||
<tr><td>The command line</td><td class="mono">--dev-fee 0</td></tr>
|
||
<tr><td>HiveOS, extra config</td><td class="mono">DEV_FEE=0</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
<p style="font-size:14px;color:var(--ash)">Measured on a test network, 4 Oct 2026: 9 fee blocks in the 785 blocks of two fee-paying miners (1.146%); the control miner at <span class="mono">--dev-fee 0</span> paid none; the miners' counters and both nodes agree. <a href="/bench#4-october-2026-evening-the-software-dev-fee-measured-on-a-test-network-9-fee-blocks-in-785-the-chain-and-the-miners-counters-agree" style="color:var(--ember)">The log entry</a>.</p>
|
||
</div>
|
||
<div style="display:flex;flex-direction:column;gap:14px">
|
||
<div class="card" style="display:flex;flex-direction:column;gap:10px">
|
||
<div class="eyebrow">Earnings, as the app shows it</div>
|
||
<div class="switch"><span class="track"></span><span>Dev fee: 1 block in 100 pays the miner software's author</span></div>
|
||
<p style="font-size:14px;color:var(--ash)">The miner software's fee, the same way every GPU miner takes one. The protocol takes none. This switch turns it off.</p>
|
||
</div>
|
||
<div class="card" style="display:flex;flex-direction:column;gap:10px">
|
||
<div class="eyebrow">What the miner prints at start</div>
|
||
<pre>dev fee 1% (1 block in 100) to 0x<address>; --dev-fee 0 turns it off</pre>
|
||
<pre>dev fee off (--dev-fee 0); the default is 1% (1 block in 100) to 0x<address></pre>
|
||
<p style="font-size:13px;color:var(--ash)">Each fee block is logged as it is accepted. <span class="mono">igneum-miner payouts</span> lists blocks per payout address over every block the node holds, with the dev address tagged.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="get">
|
||
<div class="wrap">
|
||
<div class="sec-head reveal">
|
||
<h2>Get the miner</h2>
|
||
<p>Download only from this domain. Nobody from Igneum will ask for your seed. Every file below is the one the app's signed manifest names, with its version and size.</p>
|
||
<p data-testnet-notice style="margin-top:10px;font-weight:600;color:var(--molten)">Public testnet: not yet open; the devnet build is here for people who want to look.</p>
|
||
<p data-devnet-notice style="margin-top:6px;font-weight:600;color:var(--molten)">Devnet: coins have no value and the chain may be reset.</p>
|
||
</div>
|
||
<div class="cta reveal" style="align-items:center">
|
||
<a data-dl="miner-windows" href="https://dl.igneum.network/public/igneum-miner-windows.exe" class="btn primary"><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M3 5.5l7.5-1v7H3zM11.5 4.3L21 3v8.5h-9.5zM3 12.5h7.5v7L3 18.5zM11.5 12.5H21V21l-9.5-1.3z"/></svg>Windows <span data-dl-meta="miner-windows" style="font-weight:400;opacity:.85">v0.3.14 · 45.4 MB</span></a>
|
||
<a data-dl="miner-mac" href="https://dl.igneum.network/public/igneum-miner-mac.dmg" class="btn primary"><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M16.4 12.6c0-2.3 1.9-3.4 2-3.5-1.1-1.6-2.8-1.8-3.4-1.8-1.4-.1-2.8.8-3.5.8-.7 0-1.8-.8-3-.8-1.5 0-3 .9-3.8 2.3-1.6 2.8-.4 7 1.2 9.3.8 1.1 1.7 2.4 2.9 2.3 1.2 0 1.6-.7 3-.7s1.8.7 3 .7c1.3 0 2-1.1 2.8-2.3.9-1.3 1.2-2.6 1.3-2.6-.1 0-2.5-.9-2.5-3.7zM14.1 5.8c.6-.8 1.1-1.9.9-3-.9 0-2 .6-2.7 1.4-.6.7-1.1 1.8-1 2.9 1.1.1 2.1-.5 2.8-1.3z"/></svg>macOS <span data-dl-meta="miner-mac" style="font-weight:400;opacity:.85">v0.3.14 · 41.9 MB</span></a>
|
||
<a data-dl="miner-hive" href="https://dl.igneum.network/public/igneum-miner-hive.tar.gz" class="btn"><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M12 2c-2.4 0-4 1.9-4 4.6 0 1.2.2 2 0 2.8-.6 1.4-2.1 2.9-2.6 4.9-.3 1.1-.1 2 .3 2.6-.6.4-1.3 1-1.1 1.7.3 1 2.1 1.2 3.2 1.8.7.4 1.5.6 2.1.1.6.2 1.3.3 2.1.3s1.5-.1 2.1-.3c.6.5 1.4.3 2.1-.1 1.1-.6 2.9-.8 3.2-1.8.2-.7-.5-1.3-1.1-1.7.4-.6.6-1.5.3-2.6-.5-2-2-3.5-2.6-4.9-.2-.8 0-1.6 0-2.8C16 3.9 14.4 2 12 2zm-1.4 4.2c.5 0 .8.5.8 1.2s-.3 1.2-.8 1.2-.8-.5-.8-1.2.3-1.2.8-1.2zm2.8 0c.5 0 .8.5.8 1.2s-.3 1.2-.8 1.2-.8-.5-.8-1.2.3-1.2.8-1.2zM12 9.3c.9 0 1.9.5 1.9 1s-1 1.2-1.9 1.2-1.9-.7-1.9-1.2 1-1 1.9-1zm0 3.4c2.2 0 3.6 2.6 3.6 4.4 0 1.5-1.6 2.3-3.6 2.3s-3.6-.8-3.6-2.3c0-1.8 1.4-4.4 3.6-4.4z"/></svg>Linux <span data-dl-meta="miner-hive" style="font-weight:400;opacity:.85">v0.3.14 · 24.7 MB</span></a>
|
||
<a data-dl="miner-hive" href="https://dl.igneum.network/public/igneum-miner-hive.tar.gz" class="btn"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" aria-hidden="true"><path d="M12 2.5l8.2 4.75v9.5L12 21.5l-8.2-4.75v-9.5z"/><path d="M12 7.5l4.3 2.5v5L12 17.5l-4.3-2.5v-5z"/></svg>HiveOS <span data-dl-meta="miner-hive" style="font-weight:400;opacity:.85">v0.3.14 · 24.7 MB</span></a>
|
||
</div>
|
||
<div class="card reveal" id="hive" style="margin-top:28px;overflow-wrap:anywhere;word-break:break-word;min-width:0">
|
||
<div class="eyebrow">HiveOS · Flight Sheet</div>
|
||
<h3 style="margin:8px 0 10px">Install on a Hive rig</h3>
|
||
<p style="font-size:15px;color:var(--ink-2)">Miner: <b>Custom</b>. Installation URL: <code data-dl-url="miner-hive">https://dl.igneum.network/dl/public/igneum-hive-0.3.14.tar.gz</code>. Miner name <code>igneum</code>, wallet and worker <code>0x<your 40-hex payout address>.%WORKER_NAME%</code>, pool URL <code>grpc://<your node>:26610</code> or <code>local</code> for the bundled node, extra config <code>DEV_FEE=1 IDENTITIES=8 WORKER=auto VOTE=1</code>. The Linux button above is the same archive: the Linux miner, node and both GPU workers. Hive itself is untested so far. Report what breaks.</p>
|
||
<p style="font-size:13px;color:var(--ash);margin-top:8px;overflow-wrap:anywhere">sha256 <span class="mono" data-dl-sha="miner-hive" style="word-break:break-all">c4699f2487580dcf06b5c22a36a2eb8383a3307b6137699c76c45eefebdd4c88</span></p>
|
||
</div>
|
||
<p class="pt reveal" style="margin-top:20px">Testnet coin for testing: <a href="/faucet" style="color:var(--ember)">the faucet</a> sends 10 IGN per address per day. Any 4 GB card at launch. The dataset starts at 2 GB and grows (the proposed schedule, fixed at the testnet genesis: 2 GB, doubling at years 4, 12 and 28), so a 4 GB card mines for about four years, approximate. Updates arrive signed; the app installs them itself. The <a href="/wallet" style="color:var(--ember)">wallet</a> reads this machine's node when the miner is installed.</p>
|
||
<a href="/litepaper#miners" class="lp reveal">Read more in the litepaper</a>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<div class="band">
|
||
<div class="wrap">
|
||
<div style="display:flex;flex-direction:column;gap:8px">
|
||
<h2>Every number here has a row.</h2>
|
||
<p>The engineering log holds the commands and the hardware behind each one. The bench table compares cards, not miners, because there is no other Igneum miner yet.</p>
|
||
</div>
|
||
<div class="cta"><a href="/bench" class="btn dark">Engineering log</a><a href="/miners" class="btn dark">Bench table</a></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- footer:start -->
|
||
<footer class="foot">
|
||
<div class="wrap">
|
||
<div class="foot-grid">
|
||
<div class="foot-brand">
|
||
<a href="/" class="brand" aria-label="Igneum home"><svg class="mark" viewBox="0 0 1024 1024" width="30" height="30" aria-hidden="true"><rect width="1024" height="1024" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span></a>
|
||
<p>Mined by GPUs. Proven by fire.</p>
|
||
</div>
|
||
<nav class="foot-col" aria-label="Read">
|
||
<div class="eyebrow">Read</div>
|
||
<a href="/litepaper">Litepaper</a>
|
||
<a href="/litepaper#limits">What Igneum does not claim</a>
|
||
<a href="/litepaper#randomx">Igneum vs RandomX</a>
|
||
<a href="/litepaper#shoulders">Built on the shoulders</a>
|
||
<a href="/bench">Engineering log</a>
|
||
<a href="/evidence">Evidence</a>
|
||
<a href="/ledger">Ledger: every criticism</a>
|
||
</nav>
|
||
<nav class="foot-col" aria-label="Run">
|
||
<div class="eyebrow">Run</div>
|
||
<a href="/miner">The miner</a>
|
||
<a href="/wallet">The wallet</a>
|
||
<a href="/miners">GPU bench table</a>
|
||
<a href="/miner#fee">The dev fee</a>
|
||
<a href="/faucet">Testnet faucet</a>
|
||
</nav>
|
||
<nav class="foot-col" aria-label="Follow">
|
||
<div class="eyebrow">Follow</div>
|
||
<a href="/live">Live devnet</a>
|
||
<a href="/explorer">Explorer</a>
|
||
<a href="/#journey">Journey</a>
|
||
<a href="/wallet">Add Igneum to MetaMask</a>
|
||
<a href="https://github.com/igneum-network/spec" rel="noopener"><svg viewBox="0 0 24 24" width="15" height="15" fill="currentColor" aria-hidden="true"><path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2.1c-3.2.7-3.9-1.4-3.9-1.4-.5-1.3-1.3-1.7-1.3-1.7-1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1 1.8 2.7 1.3 3.4 1 .1-.8.4-1.3.7-1.6-2.6-.3-5.3-1.3-5.3-5.7 0-1.3.5-2.3 1.2-3.1-.1-.3-.5-1.5.1-3.1 0 0 1-.3 3.2 1.2.9-.3 1.9-.4 2.9-.4s2 .1 2.9.4c2.2-1.5 3.2-1.2 3.2-1.2.6 1.6.2 2.8.1 3.1.8.8 1.2 1.8 1.2 3.1 0 4.4-2.7 5.4-5.3 5.7.4.4.8 1.1.8 2.2v3.2c0 .3.2.7.8.6 4.6-1.5 7.9-5.8 7.9-10.9C23.5 5.7 18.3.5 12 .5z"></path></svg>GitHub, spec and vectors</a>
|
||
<a href="/miner#get">Miner downloads: public testnet</a>
|
||
<a href="mailto:hello@igneum.network">Report a flaw: hello@igneum.network</a>
|
||
<a href="https://github.com/igneum-network/spec/issues" rel="noopener">Or open an issue on the spec</a>
|
||
</nav>
|
||
</div>
|
||
<div class="foot-base">
|
||
<span class="foot-imprint">Igneum Labs LTD · Unit IH-00-01-01-OF-01, Level 01, Innovation One, Dubai International Financial Centre · <a href="mailto:hello@igneum.network">hello@igneum.network</a></span>
|
||
<span>© 2026 Igneum. Nothing on this page is an offer to sell anything.</span>
|
||
<span class="mono">igneum.network</span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
<!-- footer:end -->
|
||
<script>
|
||
(function(){
|
||
var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('in');io.unobserve(e.target);}});},{threshold:.12});
|
||
document.querySelectorAll('.reveal').forEach(function(el){io.observe(el);});
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|