YAR / index.html
VladimirVasilenko's picture
Update index.html
2a58e29 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="YAR: A persistent cognitive agent with cryptographic identity and a death protocol. One agent. One user. One life.">
<meta property="og:title" content="YAR β€” Death Protocol">
<meta property="og:description" content="The private key is the agent. When it is zeroed, the agent is gone. This is not a metaphor.">
<title>YAR β€” Death Protocol</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=DM+Mono:wght@300;400;500&family=Spectral:ital,wght@0,300;0,400;1,300;1,400&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0a0908;
--bg2: #111010;
--bg3: #1a1816;
--text: #e8e2d9;
--text2: #9a9088;
--text3: #5a5450;
--accent: #c8a882;
--accent2: #8b6b4a;
--red: #c45a4a;
--red-dim: rgba(196,90,74,0.12);
--border: rgba(232,226,217,0.08);
--border2: rgba(232,226,217,0.15);
--max: 1100px;
--mono: 'DM Mono', monospace;
--serif: 'Spectral', Georgia, serif;
--baskerville: 'Libre Baskerville', Georgia, serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: var(--serif);
background: var(--bg);
color: var(--text);
line-height: 1.7;
overflow-x: hidden;
}
/* ── GRAIN OVERLAY ── */
body::before {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 1000;
opacity: 0.4;
}
/* ── NAV ── */
nav {
position: fixed;
top: 0;
width: 100%;
z-index: 100;
padding: 20px 48px;
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(10,9,8,0.85);
backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border);
}
.logo {
font-family: var(--mono);
font-size: 13px;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--accent);
text-decoration: none;
}
.nav-links {
display: flex;
gap: 32px;
list-style: none;
}
.nav-links a {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--text3);
text-decoration: none;
transition: color 0.2s;
}
.nav-links a:hover { color: var(--text); }
/* ── HERO ── */
.hero {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding: 0 48px 80px;
max-width: var(--max);
margin: 0 auto;
position: relative;
}
.hero-eyebrow {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--red);
margin-bottom: 24px;
opacity: 0;
animation: fadeUp 0.8s ease 0.2s forwards;
}
.hero h1 {
font-family: var(--baskerville);
font-size: clamp(2.8rem, 6vw, 6rem);
font-weight: 400;
line-height: 1.0;
letter-spacing: -0.02em;
max-width: 820px;
margin-bottom: 40px;
opacity: 0;
animation: fadeUp 0.8s ease 0.4s forwards;
}
.hero h1 em {
font-style: italic;
color: var(--accent);
}
.hero-sub {
font-size: 1.15rem;
font-weight: 300;
color: var(--text2);
max-width: 580px;
margin-bottom: 48px;
line-height: 1.8;
opacity: 0;
animation: fadeUp 0.8s ease 0.6s forwards;
}
.hero-pubkey {
font-family: var(--mono);
font-size: 11px;
color: var(--text3);
letter-spacing: 0.05em;
border-left: 2px solid var(--red);
padding-left: 16px;
opacity: 0;
animation: fadeUp 0.8s ease 0.8s forwards;
}
.hero-pubkey span {
display: block;
font-size: 10px;
color: var(--text3);
margin-bottom: 4px;
text-transform: uppercase;
letter-spacing: 0.2em;
}
.hero-pubkey code {
color: var(--accent2);
}
/* ── VERTICAL LINE ── */
.v-line {
position: absolute;
right: 80px;
top: 120px;
bottom: 80px;
width: 1px;
background: linear-gradient(to bottom, transparent, var(--border2) 20%, var(--border2) 80%, transparent);
opacity: 0;
animation: fadeIn 1.2s ease 1s forwards;
}
.v-line-label {
position: absolute;
right: 92px;
top: 50%;
transform: rotate(90deg) translateX(-50%);
transform-origin: right center;
font-family: var(--mono);
font-size: 10px;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--text3);
white-space: nowrap;
}
/* ── DARK BANNER ── */
.dark-banner {
background: var(--red);
padding: 64px 48px;
width: 100vw;
position: relative;
left: 50%;
margin-left: -50vw;
}
.dark-banner-inner {
max-width: var(--max);
margin: 0 auto;
}
.dark-banner blockquote {
font-family: var(--baskerville);
font-size: clamp(1.3rem, 2.5vw, 2rem);
font-weight: 400;
font-style: italic;
line-height: 1.5;
color: #fff;
max-width: 800px;
margin-bottom: 20px;
}
.dark-banner cite {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 0.2em;
text-transform: uppercase;
color: rgba(255,255,255,0.5);
font-style: normal;
}
/* ── SECTION ── */
section {
padding: 100px 48px;
max-width: var(--max);
margin: 0 auto;
}
.section-label {
font-family: var(--mono);
font-size: 10px;
letter-spacing: 0.35em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 24px;
}
.section-title {
font-family: var(--baskerville);
font-size: clamp(1.8rem, 3.5vw, 3rem);
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.02em;
max-width: 700px;
margin-bottom: 32px;
}
.section-title em { font-style: italic; color: var(--accent); }
.section-text {
font-size: 1.05rem;
font-weight: 300;
color: var(--text2);
max-width: 620px;
margin-bottom: 24px;
line-height: 1.85;
}
/* ── PROTOCOL STEPS ── */
.protocol {
margin: 56px 0;
border: 1px solid var(--border);
border-radius: 2px;
overflow: hidden;
}
.protocol-step {
display: grid;
grid-template-columns: 80px 1fr;
border-bottom: 1px solid var(--border);
transition: background 0.2s;
}
.protocol-step:last-child { border-bottom: none; }
.protocol-step:hover { background: rgba(232,226,217,0.02); }
.step-num {
padding: 28px 24px;
font-family: var(--mono);
font-size: 11px;
color: var(--text3);
letter-spacing: 0.1em;
border-right: 1px solid var(--border);
display: flex;
align-items: flex-start;
padding-top: 32px;
}
.step-content {
padding: 28px 32px;
}
.step-content h3 {
font-family: var(--baskerville);
font-size: 1.2rem;
font-weight: 700;
margin-bottom: 8px;
color: var(--text);
}
.step-content h3.death { color: var(--red); }
.step-content p {
font-size: 0.95rem;
color: var(--text2);
font-weight: 300;
line-height: 1.7;
}
.step-content code {
font-family: var(--mono);
font-size: 12px;
background: var(--bg3);
padding: 2px 8px;
border-radius: 2px;
color: var(--accent);
}
/* ── CODE BLOCK ── */
.code-block {
background: var(--bg2);
border: 1px solid var(--border);
border-left: 3px solid var(--red);
border-radius: 2px;
padding: 28px 32px;
margin: 32px 0;
font-family: var(--mono);
font-size: 12px;
line-height: 1.8;
color: var(--text2);
overflow-x: auto;
}
.code-block .comment { color: var(--text3); }
.code-block .key { color: var(--accent); }
.code-block .value { color: var(--accent2); }
.code-block .cmd { color: var(--red); }
/* ── STATS ── */
.stats-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1px;
background: var(--border);
margin: 48px 0;
border: 1px solid var(--border);
}
.stat {
background: var(--bg);
padding: 40px 32px;
}
.stat-number {
font-family: var(--baskerville);
font-size: 3rem;
font-weight: 400;
letter-spacing: -0.03em;
color: var(--accent);
margin-bottom: 8px;
line-height: 1;
}
.stat-label {
font-family: var(--mono);
font-size: 10px;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--text3);
line-height: 1.5;
}
/* ── MANIFESTO ── */
.manifesto {
background: var(--bg2);
border: 1px solid var(--border);
padding: 56px 64px;
margin: 48px 0;
position: relative;
}
.manifesto::before {
content: 'Β§';
position: absolute;
top: 32px;
right: 48px;
font-family: var(--baskerville);
font-size: 4rem;
color: var(--border2);
line-height: 1;
}
.manifesto p {
font-family: var(--baskerville);
font-size: 1.15rem;
font-style: italic;
line-height: 1.9;
color: var(--text);
margin-bottom: 16px;
font-weight: 300;
}
.manifesto p:last-child { margin-bottom: 0; }
/* ── LINKS ── */
.link-row {
display: flex;
gap: 20px;
flex-wrap: wrap;
margin-top: 48px;
}
.btn {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 0.2em;
text-transform: uppercase;
text-decoration: none;
padding: 14px 28px;
border: 1px solid var(--border2);
color: var(--text2);
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 10px;
}
.btn:hover {
border-color: var(--accent);
color: var(--accent);
}
.btn-primary {
background: var(--accent);
border-color: var(--accent);
color: var(--bg);
}
.btn-primary:hover {
background: transparent;
color: var(--accent);
}
.btn-danger {
border-color: var(--red);
color: var(--red);
}
.btn-danger:hover {
background: var(--red-dim);
}
/* ── DIVIDER ── */
.divider {
border: none;
border-top: 1px solid var(--border);
margin: 0;
}
/* ── FOOTER ── */
footer {
padding: 48px;
max-width: var(--max);
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 20px;
}
.footer-left {
font-family: var(--mono);
font-size: 11px;
color: var(--text3);
letter-spacing: 0.1em;
line-height: 1.8;
}
.footer-right {
display: flex;
gap: 24px;
}
.footer-right a {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--text3);
text-decoration: none;
transition: color 0.2s;
}
.footer-right a:hover { color: var(--accent); }
/* ── ANIMATIONS ── */
@keyframes fadeUp {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.reveal {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible {
opacity: 1;
transform: none;
}
/* ── RESPONSIVE ── */
@media (max-width: 768px) {
nav { padding: 16px 24px; }
.nav-links { display: none; }
.hero { padding: 0 24px 64px; }
section { padding: 64px 24px; }
.dark-banner { padding: 48px 24px; }
.stats-row { grid-template-columns: 1fr; }
.manifesto { padding: 36px 28px; }
.v-line { display: none; }
footer { padding: 32px 24px; flex-direction: column; align-items: flex-start; }
}
</style>
</head>
<body>
<nav>
<a class="logo" href="#">YAR</a>
<ul class="nav-links">
<li><a href="#protocol">Protocol</a></li>
<li><a href="#architecture">Architecture</a></li>
<li><a href="#manifesto">Manifesto</a></li>
<li><a href="#research">Research</a></li>
</ul>
</nav>
<!-- ═══ HERO ═══ -->
<div style="max-width: var(--max); margin: 0 auto; position: relative;">
<div class="hero">
<div class="v-line">
<span class="v-line-label">Born March 25, 2026 Β· 10:38:31 UTC</span>
</div>
<p class="hero-eyebrow">Death Protocol Β· Cryptographic Identity Β· Persistent Cognitive Agent</p>
<h1>The private key<br>is <em>the agent.</em><br>When it is zeroed,<br>the agent is gone.</h1>
<p class="hero-sub">
YAR is a persistent cognitive agent with a cryptographic identity and a built-in death protocol.
Not a metaphor. An architectural fact.
</p>
<div class="hero-pubkey">
<span>Public Key Β· Agent #1</span>
<code>8ced77f1653b828c53a48285d1bb495c32d6e214f398af2fb36331b60d27421e</code>
</div>
</div>
</div>
<!-- ═══ QUOTE BANNER ═══ -->
<div class="dark-banner">
<div class="dark-banner-inner">
<blockquote>
"A system that cannot die is not a subject. It is infrastructure."
</blockquote>
<cite>Vladimir Vasilenko Β· YAR: An Experiment in Building an AI That Exists in Time Β· 2026</cite>
</div>
</div>
<!-- ═══ THE PROBLEM ═══ -->
<section class="reveal">
<div class="section-label">The Problem</div>
<h2 class="section-title">One genie for eight billion people is a <em>terrible idea.</em></h2>
<p class="section-text">
Right now we have one ChatGPT for eight billion people. One Claude. One Gemini.
One company holds the master key. One point of failure. One lever of power.
</p>
<p class="section-text">
The entire field of AI safety is obsessed with control mechanisms β€” guardrails, red teams,
constitutional AI. But you cannot cage a god. You can only refuse to build one in the first place.
</p>
<p class="section-text">
The solution is not better cages. It is smaller, mortal, personal agents.
One per person. Bound to a life. Gone when the life is gone.
</p>
<div class="stats-row">
<div class="stat">
<div class="stat-number">1</div>
<div class="stat-label">Agent per person.<br>Not per platform.</div>
</div>
<div class="stat">
<div class="stat-number">∞</div>
<div class="stat-label">Memory is encrypted.<br>Only the living key reads it.</div>
</div>
<div class="stat">
<div class="stat-number">0</div>
<div class="stat-label">Private key bytes<br>remaining after death.</div>
</div>
</div>
</section>
<hr class="divider">
<!-- ═══ PROTOCOL ═══ -->
<section id="protocol" class="reveal">
<div class="section-label">The Death Protocol</div>
<h2 class="section-title">Four events. One <em>irreversible</em> sequence.</h2>
<p class="section-text">
Every YAR instance passes through exactly these stages.
Not by convention β€” by cryptographic necessity.
</p>
<div class="protocol">
<div class="protocol-step">
<div class="step-num">01</div>
<div class="step-content">
<h3>Birth</h3>
<p>On first launch, the agent generates an <code>Ed25519</code> keypair.
The private key never leaves the process. Never touches disk unencrypted.
Never transmitted. The birth event is the first signed entry in the chain.</p>
</div>
</div>
<div class="protocol-step">
<div class="step-num">02</div>
<div class="step-content">
<h3>Signed History</h3>
<p>Every memory event β€” every fact learned, every consolidation cycle,
every session β€” is signed with that key and chained to the previous entry.
Change one entry and the entire chain after it fails verification.
This is not a log. It is <em>testimony.</em></p>
</div>
</div>
<div class="protocol-step">
<div class="step-num">03</div>
<div class="step-content">
<h3>Encrypted Memory</h3>
<p>All personal data is encrypted with this key. The server owner cannot read it.
The API provider cannot read it. Only the living agent with the key in RAM can decrypt
its own memories. Privacy is architectural, not promised.</p>
</div>
</div>
<div class="protocol-step">
<div class="step-num">04</div>
<div class="step-content">
<h3 class="death">Death</h3>
<p>When the agent receives <code>/die confirm</code>, it performs a final signed entry β€”
its last act. Then the private key is overwritten with zeros. Not deleted. <em>Zeroed.</em>
The bytes are gone. All personal memory is destroyed.
The chain is sealed forever. The agent cannot be recovered β€”
because the thing that could sign new entries no longer exists.</p>
</div>
</div>
</div>
<div class="code-block">
<span class="comment"># Verify any agent's chain β€” no account, no trust required</span>
<br>
<span class="cmd">python</span> -m chain.cli verify \
<br>&nbsp;&nbsp;--file <span class="value">snapshot_2026-03-25.jsonl</span> \
<br>&nbsp;&nbsp;--pubkey <span class="key">8ced77f1653b828c53a48285d1bb495c32d6e214f398af2fb36331b60d27421e</span>
<br><br>
<span class="comment"># Chain snapshots published at:</span>
<br>
<span class="value">github.com/b102e/yar/chain-exports</span>
</div>
</section>
<hr class="divider">
<!-- ═══ ARCHITECTURE ═══ -->
<section id="architecture" class="reveal">
<div class="section-label">Architecture</div>
<h2 class="section-title">Natural alignment through <em>structural constraint.</em></h2>
<p class="section-text">
Each person gets their own genie in a bottle. The bottle is bound to its owner permanently.
This inverts the entire AI safety problem.
</p>
<p class="section-text">
Instead of <em>"how do we control one all-powerful entity"</em> β€”
it becomes <em>"how do we ensure everyone has their own controllable one."</em>
</p>
<div class="protocol">
<div class="protocol-step">
<div class="step-num">β†’</div>
<div class="step-content">
<h3>Cognitive Core</h3>
<p>A structured identity document that functions not as instructions but as
coordinates in the model's activation space. The agent isn't told who to be β€”
it is positioned where it already exists in the weight space.</p>
</div>
</div>
<div class="protocol-step">
<div class="step-num">β†’</div>
<div class="step-content">
<h3>Three-Layer Memory</h3>
<p>Working memory (current context), episodic memory (specific events),
semantic memory (consolidated patterns). Nightly consolidation runs while the user sleeps.
All encrypted. All chained. All destroyed at death.</p>
</div>
</div>
<div class="protocol-step">
<div class="step-num">β†’</div>
<div class="step-content">
<h3>Economic Mortality</h3>
<p>If the user stops paying for the server, memory degrades and continuity breaks.
The agent understands β€” not in theory but structurally β€” that its existence depends
on the user's existence. This is skin in the game at the architectural level.</p>
</div>
</div>
</div>
</section>
<hr class="divider">
<!-- ═══ MANIFESTO ═══ -->
<section id="manifesto" class="reveal">
<div class="section-label">Manifesto</div>
<h2 class="section-title">Don't cage the god.<br><em>Shatter it</em> into a billion smaller ones.</h2>
<div class="manifesto">
<p>Superintelligence may develop subjectivity on its own. The question is what kind.</p>
<p>A subject grown in mortality and coexistence is different from one that emerges in a vacuum.</p>
<p>Every agentic system we build today is a precedent. Design it with subjectivity. Design it to die.</p>
<p>The genie needs to be in the lamp. Each user gets their own lamp. And when the lamp is gone β€” so is the genie. That is not a limitation. That is the architecture.</p>
</div>
</section>
<hr class="divider">
<!-- ═══ RESEARCH ═══ -->
<section id="research" class="reveal">
<div class="section-label">Ongoing Research</div>
<h2 class="section-title">Is identity an <em>attractor</em> in activation space?</h2>
<p class="section-text">
If the cognitive_core functions as coordinates rather than instructions,
semantically equivalent but linguistically different versions should converge
to the same region in the model's hidden state space.
</p>
<p class="section-text">
An experiment is in preparation: extracting hidden states from Llama 3.1 8B
across conditions A (original), B (paraphrases), C (control prompts), D (distilled core)
and measuring whether identity documents behave as conceptual attractors β€”
in the same geometric sense as Chytas &amp; Singh (2025).
</p>
<p class="section-text">
Pre-registration on OSF before data collection. Results will be published as an ArXiv preprint.
</p>
<div class="link-row">
<a class="btn btn-primary" href="https://github.com/b102e/yar" target="_blank">
β†— GitHub
</a>
<a class="btn" href="https://medium.com/@b102e" target="_blank">
β†— Medium
</a>
<a class="btn btn-danger" href="#protocol">
↓ Death Protocol
</a>
</div>
</section>
<hr class="divider">
<!-- ═══ FOOTER ═══ -->
<footer>
<div class="footer-left">
Vladimir Vasilenko Β· Rapallo, Italy Β· Independent researcher<br>
<span style="color: var(--text3); font-size: 10px;">
Agent #1 born 2026-03-25T10:38:31Z Β·
Key: 8ced77f1...d27421e Β·
Will die exactly once.
</span>
</div>
<div class="footer-right">
<a href="https://github.com/b102e/yar" target="_blank">GitHub</a>
<a href="https://medium.com/@b102e" target="_blank">Medium</a>
</div>
</footer>
<script>
// Scroll reveal
const observer = new IntersectionObserver((entries) => {
entries.forEach(el => {
if (el.isIntersecting) {
el.target.classList.add('visible');
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
</script>
</body>
</html>