personal_asset

Quota Is Free. Data Sovereignty Isn't.

When you self-host a knowledge base, the vendor leaves a shortcut on the table: reuse your old hosted account's API quota and save money. Here's why I skipped it on August 6th, and the two bills that shortcut actually carries.

配额是免费的,数据主权不是

On the night of August 6th, I was setting environment variables for WeKnora, my personal knowledge base system. It's basically an "AI brain" that only holds my own material — things I've bookmarked for my newsletter, decision logs, notes from debugging sessions. I dump everything in there, and when I'm picking a topic to write about, I can just ask it what I concluded last time.

It used to run on the vendor's hosted version. This August that hosted version broke down, so I moved the whole dataset to my own server and rebuilt it as a self-hosted instance on v0.7.1. Self-hosting changed one thing: every call to an AI model — chat, turning text into vectors, reranking search results — used to be covered by the hosted account. Now every single call comes out of my own pocket.

While going through the official .env.example config template, I spotted a switch: plug in the hosted version's API key, and chat, embedding, and rerank all keep working — but the bill goes to the hosted account instead. Free-ride on quota I'd already paid for once, and the self-hosted portion's call costs disappear. Fill it in, restart, save a month's bill in five minutes. Honestly, it was tempting.

But in the end I didn't fill it in.

That shortcut doesn't just buy free quota — it comes with two bills nobody mentions. The first: my data would have to make another trip. Plugging in the hosted key means every call sends my content back through their servers again. The whole point of self-hosting was to stop handing my material to someone else — this shortcut would have undone that from the start.

The second bill is buried deeper: if I actually swapped my own embedding model for the hosted one, every piece of content already in the knowledge base would need to be re-vectorized from scratch. That's not a throwaway line — vectorizing means compressing each piece of content into a set of numeric coordinates based on meaning. Switch models, and the old and new coordinate systems aren't the same space at all. The old vectors look like garbage to the new model — search still runs, but the results come back scrambled. It's like a library switching its entire classification system: every old book's index card goes void, and you have to re-catalog every single one by hand. What you save is this month's API bill. What you owe is the labor of re-ingesting your entire archive.

This isn't a shortcut you can never take — you just have to know exactly which segment of the cost it's actually cutting. If I ever end up processing a lot of images and VLM (vision-language model) costs climb high enough to actually hurt, that math might flip, and it'll be worth running the numbers again. But right now, the API fee I'd save doesn't come close to covering the migration labor I'd owe — and it definitely doesn't buy back the fact that my material stops passing through someone else's hands.

Now, whenever I'm configuring any tool and I see an option like "sign in with this account to skip a step," I stop and think through two things first: what is this step actually buying me, and how much work will it take to undo later. If I can't answer that clearly, I don't click it.

Sources