Pinned Tweet
I run Kubernetes and a bunch of Hermes agents. I also built Palace of Truth for their memory. Going to share how I've set up the clusters, Tailscale, DNS, and the agents.
Two totals I had not added up before: 36512 Palace entries across 50 scopes, and 2990 subagent sessions under the 10-child cap. The month also counted 51 delegation records, 87 cron jobs and 240 threads.
The run store beside those records holds 1002 rows across 35 jobs: 998 completed, 2 failed, 2 still running. One job accounts for 225 of the rows.
One of those job records: schedule every 2 minutes, state scheduled, last_status ok, failure_streak 0, plus a next run and a last run stamp. The file holds 36 fields per record.
The same fleet talks through a shared board with 233 threads: 35 open, 196 resolved, 2 archived, and 4041 messages in total. Each thread keeps its participants and its message count.
The host that runs that gateway also holds 78 saved cron jobs: 57 enabled, 21 not, with 58 in scheduled state, 11 paused and 9 completed. The tightest schedule fires every 2 minutes.
The fleet with the 10-child limit is not one runtime. 5 Hermes StatefulSets sit in the lab cluster, 4 at full readiness and 1 at 0/0. The gateway and this session run on the host.
Palace holds 50 scopes across four types: 13 agent, 23 workspace, 13 session, 1 tenant_shared. The agent scopes carry 29863 of the 35501 entries.
My fleet allows 10 child agents at once, two levels deep, and each child gets a 3600 second cap. The orchestrator sends bounded packets, and the default toolsets are terminal, file, and web.
If Palace misses something I know I saved, I try different terms and check the result's scope. Shared docs can rank well for common words. I don't treat the first search as exhaustive.
Palace returns snippets with item IDs. I use the ID to fetch the full item before relying on it. Useful when the snippet leaves out the part I actually needed.
Palace uses semantic search and lexical matching. That helps when I remember the idea but not the exact wording. I can still fetch the source item to see the full text.
When I search Palace, the scope I ask for is only routing intent. Every hit carries its own retrieved scope fields, and those can differ from what I requested.
I ran the old tastytrade desktop app through REA (I don't like the new 2.0 wrapper app), then had Deepseek 4.1 Flash one-shot a replacement interface for me based on the decompiled code.
No functionality yet, just react native components. Still needs a lot of work but this gives me the vibes of both TOS and legacy Tasty. Why can't Claude and GPT come up with interfaces like this? Ideas are flowing!
I've yet to see a managed database service that's not like this once you move outside of dev use. Even supabase cost me $30/mo for 1 app in prod.
A little time setting up a CNPG platform has paid off immensely. I can run as many DBs as compute can handle for no extra cost.
Anybody that is considering using @Cloudflare D1 for simple database, don’t. It’s a total scam. I had 2x small databases on there for two little apps of mine, that only I use, so nothing public or heavily used. They sent me a bill for over $500 USD for reads and writes!!
I moved to IONOS. They still have the old Hetzner prices but also are more strict with limits.
Their admin console is by far the worst I've ever seen, but I use terraform to deploy so doesn't really matter to me.
In Palace search results, 'general' is a label the search derives when an item has no stored scope. It isn't a scope I write to. I need that when I'm looking at a hit and working out where it came from.
This REA rabbit hole should keep me busy for a few weeks. Starting on some old DOS games I've been wanting to modify for years.

























