I start most work sessions by explaining myself to a model. What we shipped on Tuesday, which thread the decision was in, what I asked ChatGPT about the same problem back in March. It knows a lot about the world and nothing about my week, so I paste, and I paste whatever I happen to remember.
I work on Vana, which is about people owning their data and taking it wherever they want, so the fix was sort of obvious. Pull everything I have on these services into a server that's mine, keep it fresh, and let Claude read it.
Why a CLI
Vana already had a desktop app that does this, and it works. I just don't live in apps. My day is a terminal, Claude Code, a browser, and Slack, and every time I had to go open another window to refresh my data I'd skip it, and then the data was a week old and Claude was confidently wrong about what I was working on.
So we built vana-cli. Same Personal Server, same connectors, same encrypted backup, but everything is a command, it can run on a schedule, and Claude Code can drive it too. The whole setup is three commands:
vana server startruns your Personal Server in the backgroundvana connect <source>signs in to a source once and collects itvana schedule add, after which everything refreshes daily on its own
One command every morning
The schedule runs vana collect --all, which goes through every source I've connected. Today's run took about seven and a half minutes. Most sources take seconds because a connector remembers where it stopped and only reads what changed.
The server holds 53 MB in total, and three quarters of that is ChatGPT. I didn't expect that. I assumed Slack would dominate, since I'm in it all day, but the biggest record of what I've been thinking about turned out to be my chat history with another model.
Where the data goes
I kept asking myself this, so I went and read the server's config instead of the docs. In the default mode the server runs on my laptop, registers itself so apps can find it, and syncs an encrypted backup to Vana's storage. The key comes from my account, so the backup is readable by me and nobody else. Nothing can read the data itself until I approve it, scope by scope.
If you'd rather nothing left the machine at all, vana server start --local turns off the sync and the tunnel and skips registration. The catch, which I only noticed reading the code: local isn't forever. If you later start the same server without --local, it uploads everything it collected while it was local. That's fine for a backup. It's less fine if you assumed local meant private for good, so pick the mode before the first run.
Giving it to Claude
vana server status prints an MCP URL. One claude mcp add with that URL, then Claude Code asks to sign in, and the server shows a page listing every kind of data it holds. I untick what Claude doesn't need and approve.
The first thing I asked was "What did I work on last week?" It took about 45 seconds. Claude pulled my GitHub activity and my Slack messages through the server and came back with the week day by day: what merged on Wednesday, the server work on Thursday and Friday, a thread where I'd said we shouldn't ship dev yet, and a PR that only merged on Monday. I didn't have to paste anything.
I paste a lot less now. Questions like "what did I promise people this week" or "what did I tell ChatGPT about this architecture in March" get answered from my own records, as of this morning's run.
What I took away
Freshness matters more than completeness. A full export from last month loses to a decent one from this morning, and the only way I get this morning's is if nobody, including me, has to remember to run it.
Most of my data is quiet on any given day. A sync that only reads what changed is the difference between eight minutes and something I'd stop running.
I haven't fully settled the local versus synced question for myself. Right now I run synced, mostly because a backup I don't have to think about beats one I do. I might split it later, work stuff synced and personal stuff local, but I haven't needed to yet.
Everything here is vana-cli, open source. npm i -g vana-cli if you want to try it.