Airweave — Session Handoff

Your self-hosted “second brain.” Saved 2026-05-26, overnight. Open this to pick the chat back up.

30-second version: Your brain is live and answering questions — it's wired and queryable today. The only thing left is moving it off your laptop so it's always-on, and that's blocked on one action only you can do: resize your DigitalOcean droplet. Do that, paste the resume prompt at the bottom into a new chat, and everything else runs in ~15 min.

What works right now live

The one blocker needs you

Resize your DigitalOcean droplet “hermes” (dreys-vps). It's 93% full of services you're keeping (Postiz/1BB, Cap, gitnexus, yeet, your agent dashboard), so Airweave won't fit until it's bigger. I can't do this for you — it's your billing, it powers the box off, and a disk resize is permanent.

1
Snapshot first.

DO dashboard → your droplet → Snapshots → take one (safety net).

2
Resize.

Droplet → Resize → choose the “CPU + RAM + Disk” option → pick ~16GB RAM / ~160–200GB disk → Resize. The box reboots; your services come back automatically.

3
Come back here.

Paste the resume prompt below into a fresh chat. I'll run the rest.

What runs automatically once you've resized

1
Move Airweave to hermes.

rsync the repo (keeping the 5 local patches + .env), bring the stack up, verify it's reachable with your laptop closed. That's the whole point — always-on.

2
MCP.

Plug Airweave into Claude Code as native tools so I can query your brain in any session.

3
SDK.

Wire @airweave/sdk (TypeScript) so you can build tools against the brain in code.

4
CLI.

pip install airweave-cli in a venv, to manage it from the terminal.

Known step (flagged so it's not a surprise): those tools log in with the API key, but your gate also wants its own pass — I'll feed them the embed cookie or add a gate rule that waves through valid API keys.

About “push your changes”

I did not push — on purpose, and it's the right call:

Everything is backed up locally (Caddyfile.bak-nocache-20260526, airweave-query.ts.bak-20260525) and fully documented in memory (project_airweave_selfhosted.md). Morning to-do: add the new config.js no-store rule to LOCAL-PATCHES.md as Patch #6 so a future git pull re-apply keeps it.

Don't-break notes

Resume prompt — paste into a fresh chat

Resume the Airweave → hermes migration (see memory project_airweave_selfhosted.md).

State: Airweave runs on my Mac via Docker; brain is live + queryable
(Notion + 10 GitHub repos, collection notion-8ymgdd). Collections UI bug
is fixed (Caddy no-store on /config.js). Query helper airweave-query.ts
is hardened to the public URL. I have now RESIZED my DigitalOcean droplet
"hermes" (ssh: dreys-vps).

Run the migration end to end:
1. Verify hermes disk grew + all containers auto-restarted.
2. rsync ~/My Apps/airweave to hermes — KEEP the 5 local patches
   (LOCAL-PATCHES.md) AND .env (has CEREBRAS_API_KEY) — then
   docker compose --env-file .env -f docker/docker-compose.yml up -d.
3. Move the airweave.dreythomas.com cloudflared tunnel + Caddy gate off
   my Mac onto hermes (replicate the config.js no-store rule). Verify
   airweave.dreythomas.com returns 200 with my laptop closed.
4. Wire the Airweave MCP (repo mcp/) into Claude Code, @airweave/sdk (TS),
   and airweave-cli (py venv). Handle gate-auth: the API key must also
   pass the Caddy basic-auth gate (embed cookie, or a Caddy rule that
   passes valid x-api-key/Bearer requests).

Retrieve the API key yourself via GET localhost:8001/api-keys (don't ask
me to paste it). Check 14-day package age before any install.

Generated overnight by Claude Code. Full detail lives in ~/.claude/projects/-Users-andrethomas/memory/project_airweave_selfhosted.md. No secrets are included on this page.