Your self-hosted “second brain.” Saved 2026-05-26, overnight. Open this to pick the chat back up.
notion-8ymgdd), with source links.no-store rule on config.js (verified: header is live).~/.claude/decisions/airweave-query.ts now hits the always-on public URL first (gate-authed via the embed cookie, kept out of logs), falls back to localhost. Survives the hermes move. Verified returning results.GET localhost:8001/api-keys). Handled as a secret, never logged or committed.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.
DO dashboard → your droplet → Snapshots → take one (safety net).
Droplet → Resize → choose the “CPU + RAM + Disk” option → pick ~16GB RAM / ~160–200GB disk → Resize. The box reboots; your services come back automatically.
Paste the resume prompt below into a fresh chat. I'll run the rest.
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.
Plug Airweave into Claude Code as native tools so I can query your brain in any session.
Wire @airweave/sdk (TypeScript) so you can build tools against the brain in code.
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.
I did not push — on purpose, and it's the right call:
origin is the upstream airweave-ai/airweave, not your fork — no push access.LOCAL-PATCHES.md; a git pull reverts them by design).Caddyfile holds secrets (your gate token + passcode hash) and .env is gitignored — pushing either would leak credentials, which your own rules forbid.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.
AIRWEAVE_API_URL=/aw-api — that's what broke Collections. It must stay absolute (https://airweave.dreythomas.com/aw-api).no-store rule on config.js must be replicated in hermes's Caddy after the move (it ships in the repo Caddyfile, so the rsync carries it — just don't drop it).CEREBRAS_API_KEY + LLM_FALLBACK_CHAIN=cerebras:gpt-oss-120b in .env) — already set; the .env rides along in the rsync.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.