Solaris: your brain has no backups
You have 47 AI chats, 93 browser tabs, six notes called final-final-REAL.md, and one PDF you have been “about to read” since the previous government.
This is not a knowledge system.
This is a digital crime scene with autocomplete.
Solaris arrived after the post-mortem.
<style>
*{box-sizing:border-box}body{margin:0;color:var(--color-text);font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.screen{position:relative;min-height:620px;overflow:hidden;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg)}
canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.28}
.scan{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0,transparent 3px,color-mix(in srgb,var(--color-border) 20%,transparent) 4px)}
.wrap{position:relative;z-index:2;display:flex;min-height:620px;flex-direction:column;padding:clamp(20px,5vw,54px)}
.top{display:flex;justify-content:space-between;gap:16px;font-size:11px;color:var(--color-text-secondary)}
.status{color:var(--color-error)}
.hero{max-width:840px;margin:auto 0}.kicker{margin-bottom:16px;color:var(--color-error);font-size:12px;font-weight:800}
h2{max-width:820px;margin:0;font-family:ui-sans-serif,system-ui,sans-serif;font-size:clamp(40px,8vw,88px);line-height:.92;letter-spacing:0;text-transform:uppercase}
.sub{max-width:700px;margin:22px 0 0;color:var(--color-text-secondary);font:clamp(14px,2vw,18px)/1.65 ui-sans-serif,system-ui,sans-serif}
.terminal{display:none;max-width:800px;margin:28px 0 0;padding:16px;border-left:3px solid var(--color-error);background:color-mix(in srgb,var(--color-bg-alt) 84%,transparent);font-size:12px;line-height:1.75}
.terminal.on{display:block}.bad{color:var(--color-error)}.good{color:var(--color-success)}
.action{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px}
button{min-height:44px;padding:0 16px;border:1px solid var(--color-error);border-radius:4px;background:var(--color-error);color:var(--color-bg);font:800 12px ui-monospace,monospace;cursor:pointer;text-transform:uppercase}
button:hover{background:transparent;color:var(--color-error)}.note{font-size:10px;color:var(--color-text-secondary)}
.footer{display:flex;justify-content:space-between;gap:12px;margin-top:auto;padding-top:28px;font-size:10px;color:var(--color-text-secondary)}
@media(max-width:560px){.wrap{padding:20px}.top span:last-child,.footer span:last-child{display:none}.hero{margin-top:80px}h2{font-size:42px}.screen,.wrap{min-height:600px}}
</style>
<section class="screen" id="screen"><canvas id="rain"></canvas><div class="scan"></div><div class="wrap">
<div class="top"><span>SOLARIS INCIDENT RESPONSE</span><span class="status">SEVERITY: ENTIRELY PREVENTABLE</span></div>
<div class="hero"><div class="kicker">INCIDENT #0001: THE USER THOUGHT THEY WOULD REMEMBER</div><h2>Your memory has left the chat.</h2><p class="sub">Solaris is a Markdown vault, an AI agent, and a runtime for interactive notes. Mostly, it is what happens after denial stops scaling.</p>
<div class="terminal" id="terminal"><span>$ inspecting current knowledge architecture...</span><br><span class="bad">FAIL: 63 isolated AI conversations, each buried with full honours</span><br><span class="bad">FAIL: 19 screenshots preserving information for nobody</span><br><span class="bad">FAIL: one productivity dashboard monitoring the neglect of another</span><br><span class="bad">FAIL: user still lists “memory” as a storage provider</span><br><span class="good">RECOVERY OPTION: put the knowledge in files and give Future You one fewer corpse to identify</span></div>
<div class="action"><button id="autopsy">Begin digital autopsy</button><span class="note">Warning: diagnosis may contain facts.</span></div>
</div>
<div class="footer"><span>NO THOUGHTS WERE BACKED UP DURING THIS INCIDENT</span><span id="clock"></span></div>
</div></section>
<script>
const c=document.getElementById('rain'),ctx=c.getContext('2d'),box=document.getElementById('screen');let w,h,dpr,drops=[];
function size(){dpr=Math.min(devicePixelRatio||1,2);w=box.clientWidth;h=box.clientHeight;c.width=w*dpr;c.height=h*dpr;ctx.setTransform(dpr,0,0,dpr,0,0);drops=Array.from({length:Math.ceil(w/18)},(_,i)=>({x:i*18,y:Math.random()*h,s:1+Math.random()*3}))}
function draw(){ctx.clearRect(0,0,w,h);ctx.fillStyle=getComputedStyle(document.body).getPropertyValue('--color-accent');ctx.font='11px monospace';drops.forEach(d=>{ctx.globalAlpha=.15+Math.random()*.35;ctx.fillText(Math.random()>.5?'0':'1',d.x,d.y);d.y+=d.s;if(d.y>h)d.y=-10});ctx.globalAlpha=1;requestAnimationFrame(draw)}
new ResizeObserver(size).observe(box);size();draw();
const terminal=document.getElementById('terminal'),btn=document.getElementById('autopsy');btn.onclick=()=>{const on=terminal.classList.toggle('on');btn.textContent=on?'Hide evidence':'Begin digital autopsy';store.set('autopsy',on)};if(store.get('autopsy',false)){terminal.classList.add('on');btn.textContent='Hide evidence'}
function clock(){document.getElementById('clock').textContent='UPTIME SINCE LAST ORGANIZED THOUGHT: '+Math.floor((Date.now()/1000)%86400)+'s'}clock();setInterval(clock,1000);
</script>
The diagnosis
Solaris is where notes go when their decorative career is finally terminated.
The files are Markdown. The agent can search them, read them, edit them, connect them, and build things inside them. A paragraph may remain a paragraph if it has done nothing wrong. It may also become a chart, quiz, calculator, simulation, dashboard, or small application with the rare professional courtesy of remembering what happened.
You can keep a note private, expose it by link, or publish it for strangers to misunderstand at scale. Compatible AI clients can work with the vault through MCP, which saves you from explaining the same project to a fresh machine every morning like a widow identifying personal effects.
In corporate language, this is “an integrated knowledge workspace,” a phrase produced by people who charge by the syllable.
In honest language, it is one filing cabinet for the burning paperwork inside your skull.
Department of abandoned information
Please identify the body.
<style>
*{box-sizing:border-box}body{margin:0;color:var(--color-text);font-family:ui-sans-serif,system-ui,sans-serif}.morgue{overflow:hidden;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg)}
.head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--color-border);font:700 11px ui-monospace,monospace;color:var(--color-text-secondary)}
.drawer{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);min-height:480px}.scene{position:relative;display:flex;align-items:center;justify-content:center;min-height:480px;overflow:hidden;padding:30px;border-right:1px solid var(--color-border);background:var(--color-bg-alt)}
.copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(22px,4vw,42px)}.case{font:700 11px ui-monospace,monospace;color:var(--color-error)}h3{margin:14px 0 12px;font-size:clamp(26px,4.5vw,48px);line-height:1;letter-spacing:0;text-transform:uppercase}.copy p{margin:0;color:var(--color-text-secondary);font-size:14px;line-height:1.6}
.nav{display:flex;gap:8px;margin-top:28px}.nav button{width:42px;height:42px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg);color:var(--color-text);font-size:20px;cursor:pointer}.nav button:hover{border-color:var(--color-accent);color:var(--color-accent)}
.window{width:min(440px,100%);border:2px solid var(--color-border);background:var(--color-bg);box-shadow:13px 13px 0 var(--color-border)}.bar{display:flex;gap:5px;padding:8px;border-bottom:1px solid var(--color-border)}.bar i{width:8px;height:8px;border:1px solid var(--color-border);border-radius:50%}.log{padding:20px;font:12px/1.8 ui-monospace,monospace}.err{color:var(--color-error)}.ok{color:var(--color-success)}
.tabs{position:relative;width:min(430px,100%);height:300px}.tab{position:absolute;width:78%;height:46px;padding:13px;border:1px solid var(--color-border);background:var(--color-bg);font:11px ui-monospace,monospace;white-space:nowrap;overflow:hidden}.tab:nth-child(1){top:8px;left:4%}.tab:nth-child(2){top:54px;left:13%}.tab:nth-child(3){top:100px;left:7%}.tab:nth-child(4){top:146px;left:17%}.tab:nth-child(5){top:192px;left:2%}.tab:nth-child(6){top:238px;left:20%;border-color:var(--color-error);color:var(--color-error)}
.grave{position:relative;width:min(430px,100%);height:320px}.moon{position:absolute;right:10%;top:0;width:58px;height:58px;border-radius:50%;background:var(--color-text);opacity:.7}.stone{position:absolute;left:25%;bottom:24px;width:50%;height:230px;padding:70px 12px 0;border:2px solid var(--color-border);border-radius:46% 46% 3px 3px;background:var(--color-bg);text-align:center;font:700 13px/1.7 ui-monospace,monospace}.ground{position:absolute;left:4%;right:4%;bottom:22px;border-top:2px solid var(--color-border)}
.graph{position:relative;width:min(430px,100%);height:330px}.node{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 13px var(--color-accent)}.line{position:absolute;height:1px;background:var(--color-border);transform-origin:left}.label{position:absolute;left:18%;right:18%;bottom:15px;padding:12px;border:1px solid var(--color-border);background:var(--color-bg);text-align:center;font:11px ui-monospace,monospace;color:var(--color-text-secondary)}
.dash{display:grid;width:min(450px,100%);grid-template-columns:repeat(3,1fr);gap:8px}.tile{height:90px;padding:10px;border:1px solid var(--color-border);background:var(--color-bg);font:10px ui-monospace,monospace}.tile b{display:block;margin-top:13px;font-size:22px;color:var(--color-accent)}.tile.dead{grid-column:1/-1;height:100px;border-color:var(--color-error);color:var(--color-error)}
@media(max-width:720px){.drawer{grid-template-columns:1fr}.scene{min-height:330px;border-right:0;border-bottom:1px solid var(--color-border)}.copy{min-height:300px}.morgue{min-height:650px}.tabs{height:280px}.grave{height:300px}}
</style>
<div class="morgue"><div class="head"><span>DEPARTMENT OF ABANDONED INFORMATION</span><span id="num"></span></div><div class="drawer"><div class="scene" id="scene"></div><div class="copy"><span class="case" id="case"></span><h3 id="title"></h3><p id="body"></p><div class="nav"><button id="back" title="Previous case"><</button><button id="next" title="Next case">></button></div></div></div></div>
<script>
const cases=[
{title:'AI memory',body:'It remembers every detail until the conversation ends. Then it looks at you with the serene innocence of the man who deleted the evidence.',scene:'<div class="window"><div class="bar"><i></i><i></i><i></i></div><div class="log">USER: Continue the project from yesterday.<br><br>AI: <span class="err">What project?</span><br><br>USER: We spent six hours on it.<br><br>AI: <span class="ok">That sounds exciting!</span></div></div>'},
{title:'Tab necromancy',body:'You are not doing research. You are keeping 93 tiny hostages because closing one might kill the imaginary person who intended to read it.',scene:'<div class="tabs"><div class="tab">important research paper</div><div class="tab">important research paper (2)</div><div class="tab">how to focus</div><div class="tab">productivity system 2026</div><div class="tab">why computer slow</div><div class="tab">MEMORY USAGE: DIVINE PUNISHMENT</div></div>'},
{title:'PDF optimism',body:'Three hundred pages entered the downloads folder. Nothing was learned. The ceremony was tasteful.',scene:'<div class="grave"><div class="moon"></div><div class="stone">HERE LIES<br>AN IMPORTANT PDF<br><br>DOWNLOADED<br>NEVER OPENED</div><div class="ground"></div></div>'},
{title:'Graph delusion',body:'The graph view contains 800 glowing connections and still cannot tell you where the useful note is. Beautiful. Completely unemployable.',scene:'<div class="graph" id="graph"><div class="label">THE CONSTELLATION OF THINGS YOU FORGOT</div></div>'},
{title:'Dashboard disease',body:'You built a dashboard to monitor the dashboard that tracks the tasks you avoid by building dashboards.',scene:'<div class="dash"><div class="tile">FOCUS<b>0%</b></div><div class="tile">SYSTEMS<b>14</b></div><div class="tile">OUTPUT<b>?</b></div><div class="tile dead">CRITICAL METRIC<br><b>TIME SPENT CONFIGURING THIS SCREEN</b></div></div>'},
{title:'Public knowledge',body:'At last, your unfinished thought can escape containment and disappoint strangers in several time zones.',scene:'<div class="window"><div class="bar"><i></i><i></i><i></i></div><div class="log">PUBLISHING NOTE... <span class="ok">DONE</span><br>READERS: 3<br>UNDERSTOOD IT: 1<br>ARGUING IN COMMENTS: 11<br><br><span class="err">CONGRATULATIONS ON YOUR REACH</span></div></div>'}
];
let i=store.get('morgue-case',0)%cases.length;const scene=document.getElementById('scene');
function render(){const c=cases[i];scene.innerHTML=c.scene;document.getElementById('title').textContent=c.title;document.getElementById('body').textContent=c.body;document.getElementById('case').textContent='CASE FILE '+String(i+1).padStart(2,'0');document.getElementById('num').textContent=(i+1)+' / '+cases.length;store.set('morgue-case',i);if(c.title==='Graph delusion')graph()}
function graph(){const g=document.getElementById('graph');if(!g)return;const pts=Array.from({length:20},()=>({x:8+Math.random()*84,y:8+Math.random()*67}));pts.forEach((p,n)=>{if(n){const q=pts[Math.floor(Math.random()*n)],dx=q.x-p.x,dy=q.y-p.y,l=Math.hypot(dx,dy),a=Math.atan2(dy,dx)*180/Math.PI;g.insertAdjacentHTML('beforeend','<i class="line" style="left:'+p.x+'%;top:'+p.y+'%;width:'+l+'%;transform:rotate('+a+'deg)"></i>')}g.insertAdjacentHTML('beforeend','<i class="node" style="left:'+p.x+'%;top:'+p.y+'%"></i>')})}
document.getElementById('back').onclick=()=>{i=(i-1+cases.length)%cases.length;render()};document.getElementById('next').onclick=()=>{i=(i+1)%cases.length;render()};render();
</script>
Select the failure mode
Solaris cannot fix you. The engineering estimate was obscene.
It can stop your information from dying alone in seventeen incompatible places, which is the sort of modest victory civilization now celebrates.
<style>
*{box-sizing:border-box}body{margin:0;color:var(--color-text);font-family:ui-sans-serif,system-ui,sans-serif}.lab{overflow:hidden;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg)}.head{padding:18px;border-bottom:1px solid var(--color-border);background:var(--color-bg-alt)}.head h3{margin:0;font-size:21px;letter-spacing:0}.head p{margin:6px 0 0;color:var(--color-text-secondary);font-size:12px}
.grid{display:grid;grid-template-columns:220px 1fr;min-height:410px}.menu{display:grid;align-content:start;gap:1px;padding:10px;background:var(--color-border)}button{min-height:54px;padding:0 13px;border:0;background:var(--color-bg);color:var(--color-text-secondary);font:700 11px ui-monospace,monospace;text-align:left;cursor:pointer}button:hover,button.on{background:var(--color-bg-alt);color:var(--color-error)}.report{display:flex;flex-direction:column;justify-content:center;padding:clamp(24px,6vw,58px)}.stamp{align-self:flex-start;padding:7px 9px;border:2px solid var(--color-error);color:var(--color-error);font:800 11px ui-monospace,monospace;transform:rotate(-2deg)}h4{margin:22px 0 10px;font-size:clamp(28px,5vw,48px);line-height:1;letter-spacing:0}.report p{max-width:650px;margin:0;color:var(--color-text-secondary);font-size:14px;line-height:1.65}.rx{margin-top:24px;padding:14px;border-left:3px solid var(--color-success);background:var(--color-bg-alt);font-size:13px}.rx b{color:var(--color-success)}
@media(max-width:620px){.grid{grid-template-columns:1fr}.menu{grid-template-columns:repeat(2,1fr)}.report{min-height:330px}.lab{min-height:570px}}
</style>
<div class="lab"><div class="head"><h3>Knowledge pathology lab</h3><p>Select the symptom currently destroying your life.</p></div><div class="grid"><div class="menu"><button data-k="amnesia">AI amnesia</button><button data-k="files">File landfill</button><button data-k="static">Static-note coma</button><button data-k="sharing">Website avoidance</button><button data-k="agents">Agent identity crisis</button><button data-k="later">Terminal “later”</button></div><div class="report"><span class="stamp">PROGNOSIS: SURVIVABLE</span><h4 id="diagnosis"></h4><p id="explain"></p><div class="rx" id="rx"></div></div></div></div>
<script>
const data={
amnesia:['Contextual amputation','Every new AI chat wakes up in an empty room and asks what your project is. Again. It is not curious. It has brain damage by product design.','Put the project in a vault the agent can search and read. The memory becomes files, not a hostage situation inside one chat.'],
files:['Acute information landfill','The note exists. The screenshot exists. The PDF exists. The useful fact exists. Their location is known only to a vengeful god.','Search the whole vault. Read uploaded documents. Keep sources and conclusions close enough to recognize each other at the funeral.'],
static:['Terminal document boredom','The note explains the graph. The graph is in another app. The calculator is in another tab. Your attention was pronounced dead during the commute.','Put interactive widgets inside the Markdown. The explanation, controls, state, and result remain one file.'],
sharing:['Chronic website avoidance','You want to publish one useful page, but the internet demands a framework, a build pipeline, analytics consent, and a newsletter popup with the emotional texture of wet bread.','Make the note public. Solaris gives it a clean page while you continue refusing to become a frontend department.'],
agents:['Multiple-agent personality fracture','One agent knows your code. Another knows your notes. A third knows your calendar. None of them know why the first two are crying.','Use MCP to give compatible agents controlled tools for the same vault. One cabinet, several robots, fewer ritual explanations.'],
later:['Advanced postponement with delusions of recall','You keep saying “later” as if Later is a competent employee. Later has missed every deadline and still receives no performance review.','Write the thought now. Link it. Let search recover it when Future You arrives confused and underdressed.']
};
const buttons=[...document.querySelectorAll('[data-k]')];let key=store.get('pathology','amnesia');function show(k){key=k;store.set('pathology',k);buttons.forEach(b=>b.classList.toggle('on',b.dataset.k===k));const d=data[k];document.getElementById('diagnosis').textContent=d[0];document.getElementById('explain').textContent=d[1];document.getElementById('rx').innerHTML='<b>PRESCRIPTION:</b> '+d[2]}buttons.forEach(b=>b.onclick=()=>show(b.dataset.k));show(key);
</script>
What survived
The system has five functioning organs. This is more than can be said for most productivity software.
Markdown files
Your writing remains readable text instead of being embalmed inside a proprietary block format and displayed at an investor conference. The revolutionary technology is called a file. Computer science briefly regains consciousness.
An agent that can use the vault
It can search, read, create, and edit notes. It can work with uploaded documents. It can build widgets and manage information instead of producing another answer that vanishes into chat history before the body is cold.
Widgets inside notes
Charts, calculators, simulations, quizzes, dashboards, and small tools live inside fenced Markdown blocks. Apparently the paragraph needed a physics engine. Management approved it without reading the report.
Public, hidden, or private
Publish a note. Share it by link. Lock it down. Give selected people access. The visibility control exists because “everything public forever” is an excellent model for humiliation and a poor model for a brain.
MCP access
Compatible AI clients can use explicit Solaris tools to work with the vault. The robots can finally rummage through the same filing cabinet where you buried the project, although unlike your colleagues they may actually find it.
Likely victims
- Students whose revision system is panic wearing expensive stationery.
- Researchers who download papers as a substitute for reading them.
- Developers with more context windows than context.
- Teachers who suspect an explanation should occasionally survive contact with a student.
- Writers who want to publish without entering a civil partnership with a deployment pipeline.
- Anyone whose “second brain” is a cemetery with excellent search potential.
Last rites
Your knowledge does not need another beautiful mausoleum.
It needs somewhere to live, connect, answer questions, run code, become interactive, and occasionally escape into public before you lose interest and call that a strategy.
Solaris is that place. It will not make you clever. It simply removes several of the excuses currently protecting the alternative.
Or it is an elaborate coping mechanism with Markdown support.
The distinction stopped mattering several tabs ago.
Enter Solaris before the next tab becomes part of the estate
SOLARIS
Because “I will remember” has already caused enough casualties.