Skip to content

Commit 0ebbbd0

Browse files
committed
update web page
1 parent a55b957 commit 0ebbbd0

2 files changed

Lines changed: 115 additions & 42 deletions

File tree

app/globals.css

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,49 @@ body {
3232
0%, 100% { box-shadow: 0 0 0 0 rgba(59,130,246,0); }
3333
50% { box-shadow: 0 0 20px 2px rgba(59,130,246,0.15); }
3434
}
35-
.animate-slide-in { animation: slide-in 0.25s ease-out forwards; }
36-
.animate-pulse-once { animation: pulse-once 1.2s ease-in-out; }
37-
.animate-fade-up { animation: fade-up 0.5s ease-out forwards; }
38-
.animate-shimmer { animation: shimmer 3s linear infinite; }
35+
@keyframes float {
36+
0%, 100% { transform: translateY(0px); }
37+
50% { transform: translateY(-8px); }
38+
}
39+
@keyframes aurora {
40+
0% { opacity: 0.5; transform: scale(1) rotate(0deg); }
41+
50% { opacity: 0.8; transform: scale(1.1) rotate(180deg); }
42+
100% { opacity: 0.5; transform: scale(1) rotate(360deg); }
43+
}
44+
@keyframes glow-pulse {
45+
0%, 100% { box-shadow: 0 0 30px rgba(168,85,247,0.2), 0 0 60px rgba(168,85,247,0.1); }
46+
50% { box-shadow: 0 0 50px rgba(168,85,247,0.35), 0 0 90px rgba(236,72,153,0.15); }
47+
}
48+
.animate-slide-in { animation: slide-in 0.25s ease-out forwards; }
49+
.animate-pulse-once { animation: pulse-once 1.2s ease-in-out; }
50+
.animate-fade-up { animation: fade-up 0.5s ease-out forwards; }
51+
.animate-shimmer { animation: shimmer 3s linear infinite; }
3952
.animate-border-glow { animation: border-glow 3s ease-in-out infinite; }
53+
.animate-float { animation: float 6s ease-in-out infinite; }
54+
.animate-aurora { animation: aurora 12s linear infinite; }
55+
.animate-glow-pulse { animation: glow-pulse 3s ease-in-out infinite; }
56+
57+
/* gradient divider */
58+
.gradient-divider {
59+
height: 1px;
60+
background: linear-gradient(90deg, transparent 0%, rgba(168,85,247,0.25) 30%, rgba(236,72,153,0.2) 60%, transparent 100%);
61+
border: none;
62+
}
63+
64+
/* gradient border card */
65+
.card-gradient-border {
66+
position: relative;
67+
border-radius: 1rem;
68+
}
69+
.card-gradient-border::before {
70+
content: '';
71+
position: absolute;
72+
inset: -1px;
73+
border-radius: calc(1rem + 1px);
74+
background: linear-gradient(135deg, rgba(168,85,247,0.45), rgba(236,72,153,0.25), rgba(249,115,22,0.15));
75+
z-index: 0;
76+
}
77+
.card-gradient-border > * { position: relative; z-index: 1; }
4078

4179
/* scrollbar */
4280
::-webkit-scrollbar { width: 4px; height: 4px; }

app/page.tsx

Lines changed: 73 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -326,28 +326,39 @@ export default function Landing() {
326326
</nav>
327327

328328
{/* ── Hero ────────────────────────────────────────────── */}
329-
<section className="pt-28 pb-20 px-6 relative" style={{
329+
<section className="pt-28 pb-20 px-6 relative overflow-hidden" style={{
330330
backgroundImage: `
331-
radial-gradient(ellipse 70% 50% at 50% -10%, rgba(168,85,247,0.18) 0%, transparent 65%),
332-
radial-gradient(ellipse 40% 30% at 80% 20%, rgba(251,146,60,0.08) 0%, transparent 60%),
333-
linear-gradient(rgba(255,255,255,0.015) 1px, transparent 1px),
334-
linear-gradient(90deg, rgba(255,255,255,0.015) 1px, transparent 1px)
331+
radial-gradient(ellipse 80% 60% at 50% -5%, rgba(168,85,247,0.28) 0%, transparent 65%),
332+
radial-gradient(ellipse 50% 40% at 85% 15%, rgba(236,72,153,0.12) 0%, transparent 55%),
333+
radial-gradient(ellipse 40% 30% at 10% 80%, rgba(249,115,22,0.08) 0%, transparent 55%),
334+
linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
335+
linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px)
335336
`,
336-
backgroundSize: 'auto, auto, 52px 52px, 52px 52px',
337+
backgroundSize: 'auto, auto, auto, 52px 52px, 52px 52px',
337338
}}>
338-
<div className="max-w-4xl mx-auto text-center">
339+
{/* Aurora blob */}
340+
<div className="absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full pointer-events-none animate-aurora"
341+
style={{ background: 'radial-gradient(circle, rgba(168,85,247,0.07) 0%, rgba(236,72,153,0.04) 40%, transparent 70%)' }} />
339342

340-
{/* Logo mark */}
341-
<div className="flex justify-center mb-6">
342-
<Image src={`${process.env.NEXT_PUBLIC_BASE_PATH ?? ''}/logo.png`} alt="Agentnetes" width={90} height={90} priority className="rounded-2xl" />
343+
<div className="max-w-4xl mx-auto text-center relative">
344+
345+
{/* Logo mark with glow */}
346+
<div className="flex justify-center mb-8 relative">
347+
<div className="absolute inset-0 flex items-center justify-center pointer-events-none">
348+
<div className="w-52 h-52 rounded-full blur-3xl opacity-40"
349+
style={{ background: 'radial-gradient(circle, rgba(168,85,247,0.6) 0%, rgba(236,72,153,0.3) 50%, transparent 70%)' }} />
350+
</div>
351+
<Image src={`${process.env.NEXT_PUBLIC_BASE_PATH ?? ''}/logo.png`} alt="Agentnetes" width={100} height={100} priority
352+
className="rounded-2xl relative animate-float shadow-2xl"
353+
style={{ boxShadow: '0 20px 60px rgba(168,85,247,0.3), 0 4px 20px rgba(0,0,0,0.5)' }} />
343354
</div>
344355

345-
{/* Hackathon badge */}
346-
<div className="inline-flex items-center gap-2 border border-white/10 rounded-full px-4 py-1.5 text-[11px] font-mono mb-8 bg-white/[0.03]">
347-
<span className="w-1.5 h-1.5 bg-emerald-400 rounded-full animate-pulse" />
348-
<span className="text-white/70">Zero to Agent London</span>
349-
<span className="text-white/50 mx-1">|</span>
350-
<span className="text-white/65">Google DeepMind x Vercel</span>
356+
{/* Kicker */}
357+
<div className="inline-flex items-center gap-2 rounded-full px-4 py-1.5 text-[11px] font-mono mb-6 border border-white/10"
358+
style={{ background: 'var(--bg-subtle)' }}>
359+
<span className="text-white/40">Kubernetes for AI agents</span>
360+
<span className="text-white/20"></span>
361+
<span className="text-white/65">dynamic teams, not static YAML</span>
351362
</div>
352363

353364
{/* Headline */}
@@ -364,17 +375,32 @@ export default function Landing() {
364375
<span className="text-white/65"> On Demand.</span>
365376
</h1>
366377

367-
<p className="text-white/70 text-lg mb-3 max-w-2xl mx-auto leading-relaxed font-medium">
368-
Zero to Agent? We are taking it further.
378+
<p className="text-white/75 text-lg mb-4 max-w-2xl mx-auto leading-relaxed font-medium">
379+
Agentnetes is a self-organizing, recursively expanding system of sandboxed AI agents that explore, execute, and coordinate to solve complex problems.
369380
</p>
370-
<p className="text-white/65 text-base mb-12 max-w-xl mx-auto leading-relaxed">
371-
Type a goal. Agentnetes assembles a team of specialist AI agents,
372-
each running in its own Firecracker microVM, that explore,
373-
implement, test, and deliver together.
381+
<p className="text-white/55 text-base mb-10 max-w-xl mx-auto leading-relaxed">
382+
Type a goal. A swarm of specialist agents assembles, each in its own isolated sandbox, exploring your codebase, writing code, running tests, and delivering together.
374383
</p>
375384

385+
{/* Motivation pills */}
386+
<div className="flex flex-wrap items-center justify-center gap-2 mb-10">
387+
{[
388+
{ label: 'RLM Pattern', sub: 'MIT CSAIL', color: '#60a5fa' },
389+
{ label: 'AutoResearch Loop', sub: 'Karpathy', color: '#a78bfa' },
390+
{ label: 'Two-Tool MCP', sub: 'search() + execute()', color: '#f472b6' },
391+
].map(({ label, sub, color }) => (
392+
<div key={label} className="flex items-center gap-2 rounded-full border border-white/10 px-4 py-1.5 text-xs font-mono"
393+
style={{ background: 'var(--bg-subtle)' }}>
394+
<span className="w-1.5 h-1.5 rounded-full shrink-0" style={{ background: color }} />
395+
<span className="text-white/80 font-semibold">{label}</span>
396+
<span className="text-white/35">{sub}</span>
397+
</div>
398+
))}
399+
</div>
400+
376401
{/* Typing prompt */}
377-
<div className="inline-flex items-center gap-3 border border-white/10 rounded-2xl px-5 py-3.5 mb-10 text-sm font-mono max-w-full shadow-xl shadow-black/50" style={{ background: 'var(--bg-subtle)' }}>
402+
<div className="inline-flex items-center gap-3 rounded-2xl px-5 py-3.5 mb-10 text-sm font-mono max-w-full"
403+
style={{ background: 'var(--bg-subtle)', boxShadow: '0 0 0 1px rgba(168,85,247,0.2), 0 8px 32px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.04)' }}>
378404
<span className="text-white/50 shrink-0">$</span>
379405
<span className="text-white/75 shrink-0">agentnetes run</span>
380406
<TypingPrompt />
@@ -383,8 +409,8 @@ export default function Landing() {
383409
{/* CTAs */}
384410
<div className="flex flex-col sm:flex-row items-center justify-center gap-3 mb-16">
385411
<Link href="/demo"
386-
className="flex items-center gap-2 font-semibold px-7 py-3 rounded-xl text-base shadow-lg transition-all hover:opacity-90 hover:scale-[1.02]"
387-
style={{ background: 'linear-gradient(135deg, #a855f7, #ec4899, #f97316)', color: '#fff' }}>
412+
className="flex items-center gap-2 font-semibold px-7 py-3 rounded-xl text-base transition-all hover:opacity-90 hover:scale-[1.02] animate-glow-pulse"
413+
style={{ background: 'linear-gradient(135deg, #a855f7, #ec4899, #f97316)', color: '#fff', boxShadow: '0 0 40px rgba(168,85,247,0.35), 0 8px 32px rgba(0,0,0,0.4)' }}>
388414
<Zap size={14} />
389415
Try Simulation
390416
</Link>
@@ -427,15 +453,16 @@ export default function Landing() {
427453
</div>
428454

429455
{/* Stats */}
430-
<div className="grid grid-cols-2 sm:grid-cols-4 gap-px rounded-2xl overflow-hidden border border-white/[0.08]">
456+
<div className="grid grid-cols-2 sm:grid-cols-4 gap-px rounded-2xl overflow-hidden"
457+
style={{ boxShadow: '0 0 0 1px rgba(168,85,247,0.15)' }}>
431458
{[
432-
{ n: 6, s: '+', label: 'parallel agents' },
433-
{ n: 2, s: ' tools', label: 'per agent (MCP)' },
434-
{ n: 100, s: 'K+', label: 'lines explored' },
435-
{ n: 1, s: ' goal', label: 'to a full team' },
436-
].map(({ n, s, label }) => (
459+
{ n: 6, s: '+', label: 'parallel agents', color: '#c084fc' },
460+
{ n: 2, s: ' tools', label: 'per agent (MCP)', color: '#f472b6' },
461+
{ n: 100, s: 'K+', label: 'lines explored', color: '#fb923c' },
462+
{ n: 1, s: ' goal', label: 'to a full team', color: '#a78bfa' },
463+
].map(({ n, s, label, color }) => (
437464
<div key={label} className="py-5 px-4 text-center" style={{ background: 'var(--bg-subtle)' }}>
438-
<div className="text-2xl font-bold text-white mb-0.5 font-mono">
465+
<div className="text-2xl font-bold mb-0.5 font-mono" style={{ color }}>
439466
<Counter to={n} suffix={s} />
440467
</div>
441468
<div className="text-[11px] text-white/65 font-mono">{label}</div>
@@ -446,7 +473,8 @@ export default function Landing() {
446473
</section>
447474

448475
{/* ── Problem ──────────────────────────────────────────── */}
449-
<section className="py-24 px-6 border-t border-white/[0.05]">
476+
<section className="py-24 px-6">
477+
<div className="max-w-5xl mx-auto mb-0"><hr className="gradient-divider" /></div>
450478
<div className="max-w-5xl mx-auto">
451479
<div className="text-center mb-14">
452480
<div className="text-xs font-mono text-white/65 uppercase tracking-widest mb-3">The Problem</div>
@@ -481,7 +509,8 @@ export default function Landing() {
481509
</section>
482510

483511
{/* ── Who is this for ───────────────────────────────────── */}
484-
<section className="py-20 px-6 border-t border-white/[0.05]">
512+
<section className="py-20 px-6">
513+
<div className="max-w-5xl mx-auto mb-0"><hr className="gradient-divider" /></div>
485514
<div className="max-w-5xl mx-auto">
486515
<div className="text-center mb-12">
487516
<div className="text-xs font-mono text-white/65 uppercase tracking-widest mb-3">Who Is This For</div>
@@ -505,7 +534,8 @@ export default function Landing() {
505534
</section>
506535

507536
{/* ── What makes it different ───────────────────────────── */}
508-
<section className="py-20 px-6 border-t border-white/[0.05]">
537+
<section className="py-20 px-6">
538+
<div className="max-w-5xl mx-auto mb-0"><hr className="gradient-divider" /></div>
509539
<div className="max-w-5xl mx-auto">
510540
<div className="text-center mb-12">
511541
<div className="text-xs font-mono text-white/65 uppercase tracking-widest mb-3">Differentiation</div>
@@ -521,7 +551,10 @@ export default function Landing() {
521551
{ n: '05', title: 'Context stays external', body: 'Files never enter the prompt. Agents write code to explore the codebase — grep, find, cat. Proven by the MIT CSAIL RLM paper to outperform context-stuffing 2×.' },
522552
{ n: '06', title: 'Agents fix each other', body: 'When the Tester finds a bug, it routes back to the Engineer automatically. The swarm has a built-in try → test → fix loop that runs until tests pass.' },
523553
].map(({ n, title, body }) => (
524-
<div key={n} className="rounded-2xl border border-white/[0.08] p-6 hover:border-white/15 transition-colors" style={{ background: 'var(--bg-card)' }}>
554+
<div key={n} className="rounded-2xl border border-white/[0.08] p-6 transition-all duration-300 hover:border-purple-500/30 group"
555+
style={{ background: 'var(--bg-card)' }}
556+
onMouseEnter={e => (e.currentTarget.style.boxShadow = '0 0 30px rgba(168,85,247,0.1), inset 0 1px 0 rgba(168,85,247,0.05)')}
557+
onMouseLeave={e => (e.currentTarget.style.boxShadow = 'none')}>
525558
<div className="text-xs font-mono mb-3" style={{ color: '#a855f7' }}>{n}</div>
526559
<div className="text-white font-semibold text-base mb-2">{title}</div>
527560
<div className="text-white/60 text-sm leading-relaxed">{body}</div>
@@ -532,7 +565,8 @@ export default function Landing() {
532565
</section>
533566

534567
{/* ── Architecture ─────────────────────────────────────── */}
535-
<section className="py-24 px-6 border-t border-white/[0.05]">
568+
<section className="py-24 px-6">
569+
<div className="max-w-5xl mx-auto mb-0"><hr className="gradient-divider" /></div>
536570
<div className="max-w-5xl mx-auto">
537571
<div className="text-center mb-12">
538572
<div className="text-xs font-mono text-white/65 uppercase tracking-widest mb-3">Architecture</div>
@@ -598,7 +632,8 @@ export default function Landing() {
598632
</section>
599633

600634
{/* ── Four foundations ──────────────────────────────────── */}
601-
<section className="py-24 px-6 border-t border-white/[0.05]">
635+
<section className="py-24 px-6">
636+
<div className="max-w-6xl mx-auto mb-0"><hr className="gradient-divider" /></div>
602637
<div className="max-w-6xl mx-auto">
603638
<div className="text-center mb-14">
604639
<div className="text-xs font-mono text-white/65 uppercase tracking-widest mb-3">Research Foundations</div>

0 commit comments

Comments
 (0)