Skip to content

Commit 2ca1122

Browse files
ralyodioclaude
andauthored
web: /temporal page for Infernet temporal policies (liquid networks), linked from /docs and the sitemap (#62)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 06d3691 commit 2ca1122

3 files changed

Lines changed: 100 additions & 0 deletions

File tree

‎apps/web/src/app/docs/page.tsx‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,19 @@ c0mpute infernet model list`}
176176
</Code>
177177
</Section>
178178

179+
<Section h="temporal" title="[ temporal policies ]">
180+
<P>
181+
Train and serve small liquid neural networks (CfC, LTC) and GRU
182+
baselines that predict the next UI action, on workers you trust.
183+
Full guide: <a href="/temporal">c0mpute.com/temporal</a>.
184+
</P>
185+
<Code>
186+
{`c0mpute infernet temporal serve --train
187+
c0mpute infernet temporal train --dataset bundle.json --output ./model --family cfc --baseline gru --worker <peer-id> --yes
188+
c0mpute infernet temporal predict --session s1 --model sha256:<hash> --input step.json`}
189+
</Code>
190+
</Section>
191+
179192
<Section h="reserve" title="[ reserve a node ]">
180193
<P>
181194
Infernet managed endpoints reserve one identified GPU operator

‎apps/web/src/app/sitemap.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const staticPages: MetadataRoute.Sitemap = [
1111
{ url: `${BASE}/agents`, priority: 0.8, changeFrequency: "monthly" },
1212
{ url: `${BASE}/docs`, priority: 0.9, changeFrequency: "weekly" },
1313
{ url: `${BASE}/plugins`, priority: 0.8, changeFrequency: "weekly" },
14+
{ url: `${BASE}/temporal`, priority: 0.8, changeFrequency: "monthly" },
1415
{ url: `${BASE}/blog`, priority: 0.8, changeFrequency: "daily" },
1516
{ url: `${BASE}/status`, priority: 0.6, changeFrequency: "hourly" },
1617
{ url: `${BASE}/nodes`, priority: 0.7, changeFrequency: "hourly" },

‎apps/web/src/app/temporal/page.tsx‎

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
export const metadata = {
2+
title: "temporal policies (liquid networks) — c0mpute",
3+
description:
4+
"Train and serve CfC/LTC liquid neural networks and GRU baselines on c0mpute workers: infernet.temporal.train and infernet.temporal.infer on the existing job and receipt protocol.",
5+
alternates: { canonical: "https://c0mpute.com/temporal" },
6+
};
7+
8+
const Code = ({ children }: { children: string }) => (
9+
<pre className="overflow-x-auto border border-[var(--color-border,#333)] p-4 text-xs leading-6">
10+
<code>{children}</code>
11+
</pre>
12+
);
13+
14+
export default function TemporalPage() {
15+
return (
16+
<div className="max-w-3xl mx-auto px-6 py-16 space-y-10">
17+
<header className="space-y-2">
18+
<h1 className="text-2xl font-bold accent">temporal policies</h1>
19+
<p className="comment">// liquid neural networks (CfC, LTC) and a GRU baseline, trained and served on c0mpute workers</p>
20+
</header>
21+
22+
<section className="space-y-3 text-sm leading-7">
23+
<h2 className="font-semibold text-[var(--color-fg)]">[ what it is ]</h2>
24+
<p>
25+
Small temporal policies that learn a desktop task (drafting an email reply, composing a Reddit post,
26+
reviewing LinkedIn notifications) from consented, redacted demonstrations recorded in{" "}
27+
<a href="https://w3bs.org/training/liquid-agent">W3BS Training</a>, then propose the next UI action.{" "}
28+
<a href="https://infernetprotocol.com/docs/liquid-agent">Infernet</a> runs the models; c0mpute finds a
29+
worker, moves the job and carries the receipt. Same offer, bid, accept and receipt protocol as every other
30+
workload.
31+
</p>
32+
</section>
33+
34+
<section className="space-y-3 text-sm leading-7">
35+
<h2 className="font-semibold text-[var(--color-fg)]">[ run a temporal worker ]</h2>
36+
<Code>{`curl -fsSL https://c0mpute.com/install.sh | sh # c0mpute 0.2.34+
37+
npm i -g @infernetprotocol/cli # infernet 0.1.66+
38+
infernet model runtime setup --yes # PyTorch + ncps, your choice
39+
c0mpute infernet temporal serve --train # accept training jobs
40+
c0mpute infernet temporal serve --model sha256:<hash> # serve a model`}</Code>
41+
<p>
42+
A worker advertises only what its Infernet reports: runtime version, CPU / CUDA / Apple GPU, RAM bucket
43+
and the model hashes it serves. It runs one training job at a time and never bids on a job without the
44+
user&apos;s upload approval.
45+
</p>
46+
</section>
47+
48+
<section className="space-y-3 text-sm leading-7">
49+
<h2 className="font-semibold text-[var(--color-fg)]">[ train on a trusted worker ]</h2>
50+
<Code>{`c0mpute infernet temporal train --dataset bundle.json --output ./model \\
51+
--family cfc --baseline gru --worker <peer-id> --max-price 0.50 --yes`}</Code>
52+
<p>
53+
Without <code>--yes</code> it prints what would be sent and stops. <code>--worker</code> limits bids to
54+
peers you trust. The model comes back only if its weights hash matches the worker&apos;s receipt. A
55+
liquid family is picked only when it beats the GRU baseline.
56+
</p>
57+
</section>
58+
59+
<section className="space-y-3 text-sm leading-7">
60+
<h2 className="font-semibold text-[var(--color-fg)]">[ sticky, encrypted inference ]</h2>
61+
<Code>{`c0mpute infernet temporal predict --session s1 --model sha256:<hash> --input step.json`}</Code>
62+
<p>
63+
A session opens on one worker and stays there, because that worker holds its hidden state. Calls are
64+
end-to-end encrypted (X25519, HKDF, AES-256-GCM) between you and that worker, answered only for the peer
65+
that opened the session, run exactly once, and rejected if a step is late or repeated.
66+
</p>
67+
</section>
68+
69+
<section className="space-y-3 text-sm leading-7">
70+
<h2 className="font-semibold text-[var(--color-fg)]">[ honest notes ]</h2>
71+
<ul className="space-y-1 list-none">
72+
<li><span className="accent">privacy</span> — a worker sees the redacted data it trains on. Encryption in transit does not change that. Local training is the default.</li>
73+
<li><span className="accent">results</span> — on synthetic mock traces GRU beat CfC (0.948 vs 0.869 episode success), so GRU is the default until real data says otherwise.</li>
74+
<li><span className="accent">not yet</span> — moving a live session to another worker; settlement for these receipts.</li>
75+
</ul>
76+
<p>
77+
Spec: <a href="https://github.com/profullstack/c0mpute/blob/master/dips/0026-infernet-temporal-workloads.md">DIP 0026</a>
78+
{" · "}
79+
<a href="https://infernetprotocol.com/docs/liquid-agent">Infernet docs</a>
80+
{" · "}
81+
<a href="https://w3bs.org/training/liquid-agent">W3BS: teach an agent</a>
82+
</p>
83+
</section>
84+
</div>
85+
);
86+
}

0 commit comments

Comments
 (0)