Files
nucleic/website/support.html
T
abkslmandnucleic 81ee1302c8 Add Section to HTML
Nucleic-Session: F3A1977C-920D-4846-8139-0C063BAB7EE2
Co-authored-by: Nucleic <[email protected]>
2026-07-07 22:17:57 -07:00

266 lines
13 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Support — Nucleic</title>
<meta name="description" content="Help and how-to guides for Nucleic: Nucleic Control, sandboxes, and macOS virtual machines — including setting up AX-based computer use for macOS VMs." />
<meta name="theme-color" content="#faf7f3" />
<meta name="robots" content="index, follow" />
<!-- atom mark, reused as favicon -->
<link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke-width='7'><ellipse cx='50' cy='50' rx='17' ry='40' transform='rotate(80 50 50)' stroke='%237AA7DD'/><ellipse cx='50' cy='50' rx='17' ry='40' transform='rotate(20 50 50)' stroke='%23DF619B'/><ellipse cx='50' cy='50' rx='17' ry='40' transform='rotate(140 50 50)' stroke='%23C5826F'/></g></svg>" />
<!-- Self-hosted fonts (latin subset). The woff2 binaries live in fonts/ and are
preloaded so they download in parallel with the HTML; @font-face is inlined
(no render-blocking stylesheet) and the page never contacts Google. -->
<link rel="preload" href="fonts/space-grotesk.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="fonts/jetbrains-mono.woff2" as="font" type="font/woff2" crossorigin />
<style>
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/space-grotesk.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:'JetBrains Mono';font-style:normal;font-weight:400 500;font-display:swap;src:url(fonts/jetbrains-mono.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}
</style>
<style>
:root{
--ink:#181520;
--ink-soft:#5b5560;
--ink-faint:#8b8590;
--paper:#faf7f3;
--panel:#fffdfb;
--panel-2:#f3ede6;
--line:#e6ded4;
--line-2:#efe9e1;
--blue:#5e9bd8;
--pink:#db5f97;
--magenta:#c264ad;
--rust:#c47e69;
--green:#5fa775;
--amber:#d7a23f;
--sans:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
--maxw:1080px;
--prose:760px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
margin:0;
overflow-x:clip;
font-family:var(--sans);
color:var(--ink);
background:var(--paper);
background-image:radial-gradient(var(--line) 1px, transparent 1px);
background-size:26px 26px;
background-position:-13px -13px;
-webkit-font-smoothing:antialiased;
line-height:1.5;
}
a{color:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.mono{font-family:var(--mono)}
.kicker{
font-family:var(--mono);
font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
color:var(--ink-faint);
}
/* ---------- top bar ---------- */
header{
position:sticky;top:0;z-index:20;
backdrop-filter:saturate(1.1) blur(8px);
background:color-mix(in srgb, var(--paper) 82%, transparent);
border-bottom:1px solid var(--line-2);
}
.bar{display:flex;align-items:center;justify-content:space-between;height:62px}
.brand{display:flex;align-items:center;gap:11px;font-weight:600;letter-spacing:-.01em;font-size:17px;text-decoration:none;color:var(--ink)}
.brand .mk{width:26px;height:26px;display:block}
.nav{display:flex;align-items:center;gap:22px;font-size:14px;color:var(--ink-soft)}
.nav a{text-decoration:none}
.nav .lk:hover{color:var(--ink)}
.btn{
font-family:var(--sans);font-size:14px;font-weight:500;
text-decoration:none;cursor:pointer;border:0;
padding:9px 16px;border-radius:10px;
color:#fff;background:var(--ink);
transition:transform .12s ease, opacity .12s ease;
white-space:nowrap;-webkit-tap-highlight-color:transparent;
}
.btn:link,.btn:visited,.btn:hover,.btn:focus,.btn:active{color:#fff}
.btn:hover{opacity:.9;transform:translateY(-1px)}
@media (max-width:600px){ .nav .lk{display:none} }
/* ---------- doc header ---------- */
.doc-hero{padding:60px 0 26px}
.doc-hero .wrap{max-width:var(--prose)}
.doc-hero h1{
font-size:clamp(32px,5vw,48px);line-height:1.04;letter-spacing:-.03em;
font-weight:600;margin:14px 0 0;
}
.doc-hero h1 .em{
background:linear-gradient(100deg,var(--rust),var(--pink) 45%,var(--magenta) 70%,var(--blue));
-webkit-background-clip:text;background-clip:text;color:transparent;
}
.doc-hero .lede{max-width:var(--prose);margin:16px 0 0;font-size:17px;color:var(--ink-soft);line-height:1.6}
/* ---------- support hub ---------- */
main{padding:10px 0 30px}
.hub{max-width:var(--prose);margin:0 auto}
.sup-group{padding:26px 0;border-top:1px solid var(--line-2)}
.sup-group:first-child{border-top:0}
.sup-group .g-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 4px}
.sup-group h2{font-size:21px;font-weight:600;letter-spacing:-.02em;margin:0}
.sup-group .g-sub{color:var(--ink-soft);font-size:15px;margin:6px 0 16px;line-height:1.6}
.art-grid{display:grid;gap:12px}
.art-card{
display:block;text-decoration:none;color:inherit;
border:1px solid var(--line);border-radius:14px;background:var(--panel);
padding:16px 18px;transition:border-color .14s ease, transform .14s ease, box-shadow .14s ease;
}
.art-card:hover{border-color:color-mix(in srgb,var(--magenta) 45%,var(--line));transform:translateY(-1px);box-shadow:0 6px 22px -14px rgba(24,21,32,.28)}
.art-card .t{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:600;letter-spacing:-.01em}
.art-card .t .arw{margin-left:auto;color:var(--ink-faint);transition:transform .14s ease, color .14s ease}
.art-card:hover .t .arw{transform:translateX(3px);color:var(--magenta)}
.art-card p{margin:7px 0 0;color:var(--ink-soft);font-size:14px;line-height:1.55}
.art-card .badge{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--magenta);border:1px solid color-mix(in srgb,var(--magenta) 40%,var(--line));border-radius:6px;padding:1px 6px}
.help-cta{
max-width:var(--prose);margin:18px auto 0;
border:1px solid var(--line);border-radius:16px;background:
radial-gradient(120% 140% at 0% 0%, color-mix(in srgb,var(--blue) 8%,transparent), transparent 44%),
radial-gradient(120% 140% at 100% 100%, color-mix(in srgb,var(--pink) 8%,transparent), transparent 44%),
var(--panel);
padding:20px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
}
.help-cta div{flex:1 1 260px}
.help-cta h2{margin:0 0 4px;font-size:16px;font-weight:600;letter-spacing:-.01em}
.help-cta p{margin:0;color:var(--ink-soft);font-size:14px;line-height:1.55}
.help-cta a{color:var(--ink);font-weight:500}
footer{border-top:1px solid var(--line-2);padding:30px 0 50px;margin-top:20px}
.foot{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;color:var(--ink-faint);font-size:13px}
.foot .mono{font-size:12px}
.foot-links{display:flex;gap:18px;flex-wrap:wrap}
.foot-links a{text-decoration:none;color:var(--ink-soft)}
.foot-links a:hover{color:var(--ink)}
.dotsep{color:var(--line)}
</style>
</head>
<body>
<!-- ===== top bar ===== -->
<header>
<div class="wrap bar">
<a class="brand" href="/">
<svg class="mk" viewBox="0 0 100 100" aria-hidden="true">
<g fill="none" stroke-width="7">
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(80 50 50)" stroke="#7AA7DD"/>
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(20 50 50)" stroke="#DF619B"/>
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(140 50 50)" stroke="#C5826F"/>
</g>
</svg>
Nucleic
</a>
<nav class="nav">
<a class="lk" href="/">Home</a>
<a class="btn" href="https://updates.nucleic.blakeslee.xyz/beta/latest" target="_blank" rel="noopener noreferrer">Download</a>
</nav>
</div>
</header>
<!-- ===== title ===== -->
<section class="doc-hero">
<div class="wrap">
<div class="kicker">Support</div>
<h1>Nucleic <span class="em">Help Center</span></h1>
<p class="lede">How-to guides for running agents safely — isolating them in Nucleic Control, sandboxing their work, and giving each one a whole macOS virtual machine of its own. Pick a topic below.</p>
</div>
</section>
<main>
<div class="wrap hub">
<div class="sup-group">
<div class="g-head"><h2>Nucleic Control</h2></div>
<p class="g-sub">The hardened path where Nucleic clones, sandboxes, and observes a project directly — the foundation for unattended work, Autoship, and Orchestra.</p>
<div class="art-grid">
<a class="art-card" href="/support/nucleic-control.html">
<div class="t">What is Nucleic Control?<span class="arw" aria-hidden="true">&rarr;</span></div>
<p>What Control does, how to turn on the container service, and what it unlocks — sandboxed sessions, certain git observation, Autoship, and Orchestra.</p>
</a>
</div>
</div>
<div class="sup-group">
<div class="g-head"><h2>Sandboxes</h2></div>
<p class="g-sub">Every sandboxed session runs in its own lightweight Linux VM, built on Apple's containerization framework — isolated from your host and from other sessions.</p>
<div class="art-grid">
<a class="art-card" href="/support/sandboxes.html">
<div class="t">How agent sandboxing works<span class="arw" aria-hidden="true">&rarr;</span></div>
<p>What the sandbox is, what it isolates, the per-project options (idle timeout, host&nbsp;exec, custom images), and why the Swift toolchain lives in a VM instead.</p>
</a>
</div>
</div>
<div class="sup-group">
<div class="g-head"><h2>Virtual Machines</h2></div>
<p class="g-sub">Give an agent a whole Mac of its own — a per-session macOS VM for Xcode, the simulators, and codesign, so parallel Mac builds never collide on your host.</p>
<div class="art-grid">
<a class="art-card" href="/support/virtual-machines.html">
<div class="t">macOS virtual machines: overview<span class="arw" aria-hidden="true">&rarr;</span></div>
<p>What macOS VMs are, the hardware and disk requirements, how per-session VMs are cloned and torn down, and how many run at once.</p>
</a>
<a class="art-card" href="/support/macos-vm-base-image.html">
<div class="t">Building the base image<span class="arw" aria-hidden="true">&rarr;</span></div>
<p>The one-time golden base install: what the build does, choosing a guest macOS version, and pointing at a prebuilt bundle or a specific restore image.</p>
</a>
<a class="art-card" href="/support/macos-vm-computer-use.html">
<div class="t">Computer use for macOS VMs<span class="arw" aria-hidden="true">&rarr;</span></div>
<p>Let an agent see and drive the VM's screen — clicks, keys, and scrolling. The default path runs host-side with no in-guest setup and no permissions.</p>
</a>
<a class="art-card" href="/support/macos-vm-ax-agent.html">
<div class="t">Setting up AX-based computer use<span class="badge">Advanced</span><span class="arw" aria-hidden="true">&rarr;</span></div>
<p>The optional in-guest agent for semantic control — act on a UI element by identity, and inspect an app's accessibility tree. Fully automated on macOS&nbsp;27.</p>
</a>
</div>
</div>
<div class="help-cta">
<div>
<h2>Can't find what you need?</h2>
<p>These guides grow alongside Nucleic. If something is missing or unclear, email <a href="mailto:[email protected]">[email protected]</a> and we'll help.</p>
</div>
</div>
</div>
</main>
<footer>
<div class="wrap foot">
<div class="brand" style="font-size:15px">
<svg class="mk" viewBox="0 0 100 100" aria-hidden="true">
<g fill="none" stroke-width="7">
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(80 50 50)" stroke="#7AA7DD"/>
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(20 50 50)" stroke="#DF619B"/>
<ellipse cx="50" cy="50" rx="17" ry="40" transform="rotate(140 50 50)" stroke="#C5826F"/>
</g>
</svg>
Nucleic
</div>
<div class="foot-links">
<a href="/">Home</a>
<a href="/support.html">Support</a>
<a href="/privacy.html">Privacy</a>
<a href="/terms.html">Terms</a>
</div>
<div class="mono">© 2026 Andrew Blakeslee&nbsp;Moore · Made with Nucleic</div>
</div>
</footer>
</body>
</html>