-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
269 lines (254 loc) · 18.3 KB
/
Copy pathindex.html
File metadata and controls
269 lines (254 loc) · 18.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#050914" />
<meta name="description" content="Hullwork builds open, self-hosted infrastructure for dependable AI agents: secure execution with Sandbox, verified delivery with Site, and GitOps package validation with Infra." />
<meta property="og:title" content="Hullwork — Infrastructure for dependable AI agents" />
<meta property="og:description" content="Sandbox for execution. Site for verified delivery. Infra for reviewed GitOps package changes." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://hullwork.github.io/" />
<meta property="og:image" content="https://hullwork.github.io/og.png" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="canonical" href="https://hullwork.github.io/" />
<link rel="icon" href="./favicon.svg" type="image/svg+xml" />
<link rel="stylesheet" href="./styles.css" />
<script>document.documentElement.classList.add("js")</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Hullwork",
"url": "https://hullwork.github.io/",
"logo": "https://hullwork.github.io/og.png",
"description": "Open, self-hosted infrastructure for dependable AI agents.",
"sameAs": ["https://github.com/hullwork"]
}
</script>
<title>Hullwork — Infrastructure for dependable AI agents</title>
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<div class="ambient ambient-a" aria-hidden="true"></div>
<div class="ambient ambient-b" aria-hidden="true"></div>
<header class="nav-shell">
<nav class="nav wrap" aria-label="Primary navigation">
<a class="brand" href="#top" aria-label="Hullwork home">
<svg viewBox="0 0 48 48" aria-hidden="true">
<path class="brand-hull" d="M24 3 42 13v22L24 45 6 35V13Z" />
<path class="brand-h" d="M15 14v20M33 14v20M15 24h18" />
<circle cx="24" cy="24" r="3.4" />
</svg>
<span>Hullwork</span>
</a>
<div class="nav-links">
<a href="#platform">Platform</a>
<a href="#projects">Projects</a>
<a href="#principles">Principles</a>
<a href="#start">Start</a>
</div>
<a class="github-button" href="https://github.com/hullwork" target="_blank" rel="noreferrer" aria-label="Hullwork on GitHub">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .8a11.4 11.4 0 0 0-3.6 22.2c.6.1.8-.2.8-.6v-2.2c-3.3.7-4-1.4-4-1.4-.6-1.4-1.4-1.8-1.4-1.8-1.1-.8.1-.8.1-.8 1.2.1 1.9 1.3 1.9 1.3 1.1 1.9 2.9 1.4 3.6 1 .1-.8.4-1.4.8-1.7-2.7-.3-5.5-1.3-5.5-5.7 0-1.3.5-2.3 1.2-3.1-.1-.3-.5-1.6.1-3.1 0 0 1-.3 3.1 1.2a10.8 10.8 0 0 1 5.7 0C14.4 5 15.4 5.3 15.4 5.3c.6 1.5.2 2.8.1 3.1.8.8 1.2 1.8 1.2 3.1 0 4.4-2.8 5.4-5.5 5.7.4.4.8 1.1.8 2.2v3c0 .4.2.7.8.6A11.4 11.4 0 0 0 12 .8Z" /></svg>
<span>GitHub</span>
</a>
</nav>
</header>
<main id="main">
<section class="hero wrap" id="top">
<div class="hero-copy reveal">
<div class="eyebrow"><span></span> Open infrastructure for dependable AI agents</div>
<h1>Build the boundary.<br /><em>Measure the result.</em></h1>
<p class="hero-lead">Run agent code with Sandbox. Verify website delivery with Site. Review Kubernetes package changes with Infra. Three independent open-source projects, built for operators who want explicit boundaries and inspectable results.</p>
<div class="hero-actions">
<a class="button primary" href="#projects">Explore the systems <span>↓</span></a>
<a class="button secondary" href="https://github.com/hullwork" target="_blank" rel="noreferrer">Read the source <span>↗</span></a>
</div>
<a class="release-link" href="#infra">New: Infra Public Alpha — explore the GitOps compiler <span>↗</span></a>
<div class="trust-row" aria-label="Platform qualities">
<span>Self-hosted</span><span>Kubernetes native</span><span>Independently usable</span><span>MIT licensed</span>
</div>
</div>
<div class="hero-system reveal delay-one" aria-label="Hullwork system overview">
<div class="system-orbit orbit-one"></div><div class="system-orbit orbit-two"></div>
<div class="system-console">
<div class="console-top"><i></i><i></i><i></i><span>hullwork / control path</span><b>● LIVE</b></div>
<div class="console-body">
<div class="console-title"><small>AGENT WORKLOAD</small><strong>Run → Ship → Verify</strong></div>
<div class="console-route">
<div class="route-node request"><span>01</span><b>Intent</b><small>HTTP · CLI · MCP</small></div>
<i></i>
<div class="route-node sandbox"><span>02</span><b>Sandbox</b><small>gVisor runtime</small></div>
<i></i>
<div class="route-node site"><span>03</span><b>Site</b><small>Kubernetes delivery</small></div>
<i></i>
<div class="route-node evidence"><span>04</span><b>Evidence</b><small>HTTP 200 · SHA-256</small></div>
</div>
<div class="console-status"><span><i></i> boundary enforced</span><span><i></i> deployment measured</span></div>
</div>
</div>
<div class="float-chip chip-runtime"><small>RUNTIME</small><b>gVisor</b><span>isolated</span></div>
<div class="float-chip chip-proof"><strong>✓</strong><div><b>Proof recorded</b><small>status + body digest</small></div></div>
</div>
</section>
<section class="signal-strip" aria-label="Platform signals">
<div class="wrap signal-grid">
<div><strong>01</strong><span>Execution boundary</span><small>One gVisor Pod per runtime</small></div>
<div><strong>02</strong><span>Credential boundary</span><small>Tenant identity from the key</small></div>
<div><strong>03</strong><span>Delivery evidence</span><small>Real HTTP status + body digest</small></div>
<div><strong>04</strong><span>Operator ownership</span><small>Your cluster, state, and credentials</small></div>
</div>
</section>
<section class="platform section wrap" id="platform">
<div class="section-heading reveal">
<div class="eyebrow"><span></span> One dependable path</div>
<h2>From agent intent<br />to observable evidence.</h2>
<p>Models propose. Hullwork makes the surrounding system explicit: who is asking, where code runs, what gets deployed, and how success is proven.</p>
</div>
<div class="platform-map reveal delay-one">
<div class="map-rail" aria-hidden="true"></div>
<article><span class="map-index">01</span><div class="map-icon intent-icon"><i></i><i></i><i></i></div><h3>Agent intent</h3><p>A narrow request enters through HTTP, CLI, SDK, or MCP.</p><code>authenticated request</code></article>
<article><span class="map-index">02</span><div class="map-icon shield-icon"><i></i></div><h3>Secure runtime</h3><p>Untrusted work executes inside a tenant-scoped gVisor Pod.</p><code>fail closed</code></article>
<article><span class="map-index">03</span><div class="map-icon window-icon"><i></i></div><h3>Verified delivery</h3><p>The workload converges through Kubernetes and becomes reachable.</p><code>desired → observed</code></article>
<article><span class="map-index">04</span><div class="map-icon check-icon"><i></i></div><h3>Evidence</h3><p>The live address is fetched and bounded proof is recorded.</p><code>status + sha256</code></article>
</div>
</section>
<section class="products section" id="projects">
<div class="wrap">
<div class="section-heading reveal">
<div class="eyebrow"><span></span> Public systems</div>
<h2>Three focused projects.<br />Start where you need one.</h2>
<p>Adopt each project independently. Infra works with external packages and an existing Argo CD installation; it is not a prerequisite for Sandbox or Site.</p>
</div>
<article class="product-card sandbox-card reveal">
<div class="product-copy">
<div class="product-label"><span>01</span> Secure execution plane</div>
<h3>Sandbox</h3>
<p>Run an agent's shell and file operations inside its own Kubernetes gVisor Pod. Durable workspaces outlive disposable runtimes. Missing dependencies never become permission to execute on the host.</p>
<ul><li>gVisor RuntimeClass</li><li>Tenant-scoped credentials</li><li>Durable workspaces</li><li>Python SDK · CLI · MCP</li></ul>
<div class="product-actions"><a class="button product-primary" href="https://hullwork.github.io/sandbox/">Open Sandbox site <span>↗</span></a><a class="text-link" href="https://github.com/hullwork/sandbox">Source on GitHub <span>↗</span></a></div>
</div>
<div class="product-visual terminal-visual" aria-label="Sandbox quickstart output">
<div class="mini-window-bar"><i></i><i></i><i></i><span>sandbox — quickstart</span></div>
<pre><code><span>$</span> make quickstart
<i>[1/5]</i> checking host prerequisites
<b>✓</b> kubeadm cluster ready
<b>✓</b> gVisor kernel verified
<b>✓</b> workspace survived restart
<b>✓</b> host fallback blocked
<strong>sandbox-ready</strong><em></em></code></pre>
<div class="mini-window-foot"><span>runtime / gvisor</span><b>● HEALTHY</b></div>
</div>
</article>
<article class="product-card site-card reveal">
<div class="product-copy">
<div class="product-label"><span>02</span> Verified delivery plane</div>
<h3>Site</h3>
<p>Turn an agent request into a real Kubernetes deployment. Site handles admission, builds, workloads, ingress, observability, and scale-to-zero—then proves the address serves traffic.</p>
<ul><li>HTTP verification</li><li>Status + SHA-256 evidence</li><li>Multi-tenant admission</li><li>HTTP · CLI · MCP · Console</li></ul>
<div class="product-actions"><a class="button product-primary" href="https://hullwork.github.io/site/">Open Site website <span>↗</span></a><a class="text-link" href="https://github.com/hullwork/site">Source on GitHub <span>↗</span></a></div>
</div>
<div class="product-visual deploy-visual" aria-label="Site deployment verification preview">
<div class="mini-window-bar"><i></i><i></i><i></i><span>site / run details</span><b>● LIVE</b></div>
<div class="deploy-body">
<div class="deploy-head"><div><small>APPLICATION</small><strong>hello-site</strong></div><span>RUNNING</span></div>
<div class="deploy-grid"><div><small>REVISION</small><b>rev-18a42c</b></div><div><small>REPLICAS</small><b>1 / 1</b></div><div><small>ROUTE</small><b>READY</b></div></div>
<div class="proof-box"><div class="proof-mark">✓</div><div><small>TRAFFIC VERIFIED</small><strong>HTTP 200</strong><code>5e7f06f9…12178242</code></div></div>
<div class="deploy-line"><span>desired state</span><i></i><span>workload ready</span><i></i><span>response measured</span></div>
</div>
</div>
</article>
<article class="product-card infra-card reveal" id="infra">
<div class="product-copy">
<div class="product-label"><span>03</span> GitOps package compiler · Public Alpha</div>
<h3>Infra</h3>
<p>Catch invalid package combinations before deployment. Infra validates declared capabilities and artifact locks, then compiles your records into deterministic Argo CD YAML for review.</p>
<ul><li>Offline validation</li><li>Per-cluster capability checks</li><li>Explicit artifact locks</li><li>No controller to install</li></ul>
<div class="product-actions"><a class="button product-primary" href="https://github.com/hullwork/infra/tree/main/examples/hello">Try the working example <span>↗</span></a><a class="text-link" href="https://github.com/hullwork/infra">Source on GitHub <span>↗</span></a></div>
<p class="product-note">Use your existing Argo CD; no companion repository or Lima management cluster required. Static checks validate your records, not live cluster readiness.</p>
<div class="product-actions"><a class="text-link" href="https://github.com/hullwork/infra/releases/tag/v0.1.0-alpha.3">Alpha release ↗</a><a class="text-link" href="https://github.com/hullwork/infra/blob/main/docs/RELEASE_READINESS.md">Tested scope & limitations ↗</a></div>
</div>
<div class="product-visual terminal-visual infra-visual" aria-label="Infra compilation workflow">
<div class="mini-window-bar"><i></i><i></i><i></i><span>infra / reviewed configuration</span></div>
<pre><code><strong>Package catalog + Stack</strong>
<strong>ClusterProfile + VersionLock</strong>
↓
<span>Validate contracts & capabilities</span>
↓
<span>Compile Argo CD YAML</span>
↓
<span>Review and commit to Git</span>
↓
<strong>Existing Argo CD reconciles</strong></code></pre>
<div class="mini-window-foot"><span>same inputs → same YAML</span><b>OFFLINE COMPILER</b></div>
</div>
</article>
</div>
</section>
<section class="principles section wrap" id="principles">
<div class="section-heading reveal">
<div class="eyebrow"><span></span> Engineering posture</div>
<h2>Trust is an output.<br />Not an input.</h2>
</div>
<div class="principle-grid">
<article class="reveal"><span>01</span><h3>Boundaries over promises</h3><p>Identity, runtime, resource, and network boundaries are concrete architecture—not prose around a model call.</p><code>tenant ≠ request field</code></article>
<article class="reveal delay-one"><span>02</span><h3>Evidence over labels</h3><p>A green API response proves admission. Hullwork follows the system until the running result can be measured.</p><code>deployed → fetch → record</code></article>
<article class="reveal"><span>03</span><h3>Fail closed</h3><p>If isolation, control, or runtime dependencies disappear, the operation stops. There is no convenient local escape hatch.</p><code>fallback_to_host = false</code></article>
<article class="reveal delay-one"><span>04</span><h3>Operator owned</h3><p>Workspaces, credentials, control-plane state, and the Kubernetes substrate stay in the environment you operate.</p><code>your infra · your data</code></article>
</div>
</section>
<section class="start section" id="start">
<div class="wrap start-grid">
<div class="start-copy reveal">
<div class="eyebrow"><span></span> Start from source</div>
<h2>Pick the boundary<br />you need first.</h2>
<p>All three projects are independent and MIT-licensed. Sandbox and Site offer local deployment quickstarts. Infra starts with offline validation; its working example takes you through deployment with Argo CD.</p>
</div>
<div class="start-commands">
<article class="command-card reveal">
<div><span>Infra</span><small>validate & render offline</small></div>
<pre><code>git clone https://github.com/hullwork/infra.git
cd infra
python3 -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
make validate
make render-applications</code></pre>
<button type="button" data-copy="git clone https://github.com/hullwork/infra.git
cd infra
python3 -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
make validate
make render-applications">Copy</button>
<p class="command-note">This demo renders a placeholder package. Use the <a href="https://github.com/hullwork/infra/tree/main/examples/hello">hello walkthrough ↗</a> for a real deployment.</p>
</article>
<article class="command-card reveal">
<div><span>Sandbox</span><small>secure execution</small></div>
<pre><code>git clone https://github.com/hullwork/sandbox.git
cd sandbox
make quickstart</code></pre>
<button type="button" data-copy="git clone https://github.com/hullwork/sandbox.git\ncd sandbox\nmake quickstart">Copy</button>
</article>
<article class="command-card reveal delay-one">
<div><span>Site</span><small>verified delivery</small></div>
<pre><code>git clone https://github.com/hullwork/site.git
cd site
make quickstart</code></pre>
<button type="button" data-copy="git clone https://github.com/hullwork/site.git\ncd site\nmake quickstart">Copy</button>
</article>
</div>
</div>
</section>
<section class="closing wrap reveal">
<div class="closing-mark" aria-hidden="true"><svg viewBox="0 0 48 48"><path d="M24 3 42 13v22L24 45 6 35V13Z"/><path d="M15 14v20M33 14v20M15 24h18"/><circle cx="24" cy="24" r="3.4"/></svg></div>
<div><div class="eyebrow"><span></span> Hullwork on GitHub</div><h2>Build the boundary.<br />Measure the result.</h2><p>Bring a real workload. Help improve package examples, first-run docs, and validation errors, or contribute reproducible OCI and remote-cluster checks for Infra.</p></div>
<a class="button closing-button" href="https://github.com/hullwork/infra/blob/main/CONTRIBUTING.md" target="_blank" rel="noreferrer">Build with us <span>↗</span></a>
</section>
</main>
<footer class="wrap">
<a class="brand" href="#top"><svg viewBox="0 0 48 48" aria-hidden="true"><path class="brand-hull" d="M24 3 42 13v22L24 45 6 35V13Z"/><path class="brand-h" d="M15 14v20M33 14v20M15 24h18"/><circle cx="24" cy="24" r="3.4"/></svg><span>Hullwork</span></a>
<p>Open infrastructure for dependable AI agents.</p>
<span>MIT · Self-hosted · Built in public</span>
</footer>
<script src="./app.js" defer></script>
</body>
</html>