app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
← Commit history
Publish 0.1.0
7 files changed
+88−14
README.md+3−3@@ -1,4 +1,4 @@-# Codex in Adom Hydrogen+# Codex Codex gets a practical home in the Adom ecosystem: a dependable setup entry point, a dock dashboard, and recorded engineering demonstrations. @@ -19,13 +19,13 @@ The videos below are real KiCad window recordings. Astra runs in the Adom Hydrog ### Six nets: the first trace-routing demo -<video controls playsinline preload="metadata" src="videos/01-astra-live-routing-3x.mp4" style="width:100%;max-width:1100px"></video>+<video controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/01-astra-live-routing-3x.mp4" style="width:100%;max-width:1100px"></video> [Download the 23-second video](videos/01-astra-live-routing-3x.mp4). Six nets, 13 pads, 20 trace segments and two vias. KiCad measured zero DRC errors and zero unconnected items; three warnings identify synthetic footprint libraries. ### 24-net crossover: calculated paths and branches -<video controls playsinline preload="metadata" src="videos/02-astra-crossbar-24-3x.mp4" style="width:100%;max-width:1100px"></video>+<video controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/02-astra-crossbar-24-3x.mp4" style="width:100%;max-width:1100px"></video> [Download the 31-second video](videos/02-astra-crossbar-24-3x.mp4). A permutation maps each input to an output column. Horizontal front-layer traces cross vertical back-layer traces, and each net branches to a third pad. Result: 72 pads, 120 segments, 48 vias, zero DRC errors, zero unconnected items, and three synthetic-library warnings.
adom_codex.py+4−1@@ -47,7 +47,10 @@ def main(): log=Path.home()/'.local/state/adom/codex';log.mkdir(parents=True,exist_ok=True) with (log/'dashboard.log').open('ab') as out:subprocess.Popen([sys.executable,str(Path(__file__).resolve()),'_serve','--port',str(a.port)],stdout=out,stderr=out,start_new_session=True) for _ in range(50):- try:json.load(urllib.request.urlopen(url+'api/status',timeout=.5));break+ try:+ ready=json.load(urllib.request.urlopen(url+'api/status',timeout=.5))+ if ready.get('app')!='adom/codex' or ready.get('version')!=VERSION:raise RuntimeError('Port is occupied by a different service')+ break except Exception:time.sleep(.1) else:raise RuntimeError('Dashboard failed to start; inspect '+str(log/'dashboard.log')) print(url,flush=True)
dashboard/index.html+3−3@@ -1,9 +1,9 @@ <!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Codex in Hydrogen</title><link rel="icon" href="/dashboard/icon.svg"><style>-:root{color-scheme:dark;--bg:#0d1117;--card:#161b22;--text:#e6edf3;--muted:#8b949e;--line:#30363d;--teal:#00b8b1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px 'Familjen Grotesk',system-ui,sans-serif}header{height:44px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 16px}header img{width:18px;height:18px}header strong{font-size:15px}header span{color:var(--muted);font-size:13px}.spacer{flex:1}button,a{touch-action:manipulation}button{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 12px;cursor:pointer}button:hover,button:focus-visible{border-color:var(--teal)}main{max-width:1200px;margin:auto;padding:20px}h1{font-size:30px;margin:0 0 8px}h2{font-size:19px}p{line-height:1.6;color:var(--muted)}a{color:var(--teal)}.pills{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.pill{border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:12px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.card{padding:22px;background:var(--card);border:1px solid var(--line);border-radius:12px}.card button{margin-right:8px}video{width:100%;max-height:70vh;background:#000}dialog{width:min(1100px,95vw);background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px}dialog::backdrop{background:#0008}pre{white-space:pre-wrap;word-break:break-word}.close{float:right}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--card);padding:12px;border:1px solid var(--teal);border-radius:8px;display:none}@media(max-width:720px){.grid{grid-template-columns:1fr}header span{display:none}main{padding:12px}}-</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration 0.1.0">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex#bootstrap" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Next: human reference versus algorithmic routing on copies of Adom toolboards. Baseline findings and planning limits will be reported with each run.</p><a href="https://wiki.adom.inc/adom/codex#astra" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex#desktop" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Live KiCad routing</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script>+:root{color-scheme:dark;--bg:#0d1117;--card:#161b22;--text:#e6edf3;--muted:#8b949e;--line:#30363d;--teal:#00b8b1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px 'Familjen Grotesk',system-ui,sans-serif}header{height:44px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 16px}header img{width:18px;height:18px}header strong{font-size:15px}header span{color:var(--muted);font-size:13px}.spacer{flex:1}button,a{touch-action:manipulation}button{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 12px;cursor:pointer}button:hover,button:focus-visible{border-color:var(--teal)}main{margin:auto;padding:16px}h1{font-size:30px;margin:0 0 8px}h2{font-size:19px}p{line-height:1.6;color:var(--muted)}a{color:var(--teal)}.pills{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.pill{border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:12px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.card{padding:22px;background:var(--card);border:1px solid var(--line);border-radius:12px}.card button{margin-right:8px}video{width:100%;max-height:70vh;background:#000}dialog{width:min(1100px,95vw);background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px}dialog::backdrop{background:#0008}pre{white-space:pre-wrap;word-break:break-word}.close{float:right}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--card);padding:12px;border:1px solid var(--teal);border-radius:8px;display:none}@media(max-width:720px){.grid{grid-template-columns:1fr}header span{display:none}main{padding:16px}}+</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration 0.1.0">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex/render/docs/BOOTSTRAP.md" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Next: human reference versus algorithmic routing on copies of Adom toolboards. Baseline findings and planning limits will be reported with each run.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/ASTRA-KICAD.md" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/DESKTOP-BRIDGE.md" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Live KiCad routing</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script> const $=s=>document.querySelector(s);function toast(s){$('#toast').textContent=s;$('#toast').style.display='block';setTimeout(()=>$('#toast').style.display='none',4000)} function play(file){$('#video').src='/videos/'+file;$('#player').showModal();$('#video').play().catch(()=>toast('Press Play to start the video.'))}-const panel=AdomNewbiePanel.mount({mount:'#newbie',app:'codex',appName:'Codex',slug:'codex',toggleButton:'#help',demo:{label:'Watch the routing demo',meta:'24 nets, 31 seconds',onPlay:()=>play('02-astra-crossbar-24-3x.mp4')},phrases:['With codex, explain this Adom workspace and its Bridge targets','With codex, make a copy of my KiCad board and inspect its unrouted nets','With codex, record a live KiCad routing demo and caption the results']});+const panel=AdomNewbiePanel.mount({mount:'#newbie',app:'codex',appName:'Codex',slug:'codex',toggleButton:'#help',demo:{label:'Watch the routing demo',meta:'24 nets, 31 seconds',onPlay:()=>play('02-astra-crossbar-24-3x.mp4')},phrases:['Codex, inspect this workspace','Codex, inspect my KiCad board','Codex, show the routing demo']}); async function inspect(){try{const r=await fetch('/api/status');if(!r.ok)throw Error('Context unavailable');const s=await r.json();$('#context').textContent=JSON.stringify(s,null,2);$('#details').showModal()}catch(e){toast(e.message)}} $('#inspect').onclick=inspect;$('#settings').onclick=inspect;$('#close-details').onclick=()=>$('#details').close();$('#close-video').onclick=()=>$('#player').close();$('#player').addEventListener('close',()=>$('#video').pause());document.querySelectorAll('[data-demo]').forEach(b=>b.onclick=()=>play(b.dataset.demo)); function status(s){$('#machine').textContent=s.container.hostname;$('#status').replaceChildren(...['Entry point: '+(s.instructionsInstalled?'installed':'not installed'),'Bridge CLI: '+(s.tools['adom-bridge']?'available':'missing'),'Host target: select in Bridge'].map(t=>{let e=document.createElement('span');e.className='pill';e.textContent=t;return e}))}
docs/codex-conversation.pngadded⋯ 1 unchanged line ⋯
docs/hero.pngadded⋯ 1 unchanged line ⋯
package.json+26−1@@ -33,5 +33,30 @@ "codex bootstrap", "astra kicad routing", "codex hydrogen setup"+ ],+ "tags": [+ "codex",+ "hydrogen",+ "astra",+ "kicad",+ "developer-tools"+ ],+ "hero": {+ "path": "docs/hero.png"+ },+ "discovery_pitch": "Use Codex in Adom Hydrogen with ecosystem instructions, a dock dashboard and live CAD demonstrations.",+ "sample_prompts": [+ {+ "label": "Set up Codex",+ "prompt": "Set up Codex to work in my Adom Hydrogen workspace."+ },+ {+ "label": "Watch live routing",+ "prompt": "Show me the captioned Astra KiCad routing demonstrations."+ },+ {+ "label": "Inspect my workspace",+ "prompt": "Use Codex to inspect my Adom workspace and identify the connected desktop before taking action."+ } ]-}+}
page.json+52−6@@ -3,7 +3,7 @@ "slug": "codex", "type": "app", "title": "Codex",- "brief": "Codex in Adom Hydrogen: ecosystem setup, a dock dashboard, and live engineering demonstrations.",+ "brief": "Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.", "version": "0.1.0", "hero": { "type": "billboard",@@ -14,14 +14,38 @@ "name": "John Lauer", "email": "[email protected]" },- "tags": [],+ "tags": [+ "codex",+ "hydrogen",+ "astra",+ "kicad",+ "developer-tools"+ ], "license": "proprietary", "visibility": { "public": true },- "sample_prompts": [],- "discovery_triggers": [],- "discovery_pitch": null,+ "sample_prompts": [+ {+ "label": "Set up Codex",+ "prompt": "Set up Codex to work in my Adom Hydrogen workspace."+ },+ {+ "label": "Watch live routing",+ "prompt": "Show me the captioned Astra KiCad routing demonstrations."+ },+ {+ "label": "Inspect my workspace",+ "prompt": "Use Codex to inspect my Adom workspace and identify the connected desktop before taking action."+ }+ ],+ "discovery_triggers": [+ "codex",+ "codex bootstrap",+ "astra kicad routing",+ "codex hydrogen setup"+ ],+ "discovery_pitch": "Use Codex in Adom Hydrogen with ecosystem instructions, a dock dashboard and live CAD demonstrations.", "metadata": {}, "created_at": "2026-09-05T20:17:45.180Z", "updated_at": "2026-09-05T20:17:45.180Z",@@ -32,5 +56,27 @@ "version_cmd": "" }, "skills": [],- "org": "adom"+ "org": "adom",+ "description": "Adom ecosystem setup and a Hydrogen dashboard for Codex. Installs a managed instruction entry point and context helper, mounts the shared newbie panel, and presents verified Astra KiCad routing demonstrations. Codex Desktop bridge is planned.",+ "needs_sudo": false,+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "dependencies": {+ "adom/core": "^4.9.0"+ },+ "files": [+ "package.json",+ "install.sh",+ "install.py",+ "adom_codex.py",+ "dashboard/**",+ "skills/**",+ "docs/**",+ "videos/**",+ "README.md",+ "dockbar.json",+ "uninstall.sh"+ ] }