# 2026-02-17 ## Password Manager Migration: Proton Pass → Vaultwarden - Leaving Proton ecosystem (mail → Stalwart) means losing Proton Pass too - **Decision: migrate to Vaultwarden** (already running at vault.inou.com) - **Steps:** 1. Johan creates account at https://vault.inou.com 2. Export from Proton Pass (Settings → Export → CSV or JSON) 3. Import into Vaultwarden (compatible with Bitwarden import format) 4. Disable signups after account created (set SIGNUPS_ALLOWED=false in docker-compose) 5. Install Bitwarden app on iPhone, Mac, browser extension — point server to https://vault.inou.com - **TODO:** Set up rclone backup to GDrive (needs OAuth browser auth on Zurich) - Fish Audio API key and other secrets should move here from plaintext files ## Domain Registrar Migration Plan - OpenProvider has ~€80 credits remaining - As domains come up for renewal, transfer to Cloudflare Registrar instead - **URGENT: jongsma.me expires 2026-02-28** — transfer to CF before auto-renewal - stpetersburgaquatics.com expires 2026-03-13 - Full renewal schedule: zavtra(May), inou(Jun), unbelievable(Jul), x4(Aug), e-consultants(Sep), muskepo.nl(Sep), busel(Oct), localbackup(Oct), johanjongsma(Nov), 851brightwaters(Dec), flourishevents(Jan27), muskepo.com(Jan27), harryhaasjes(Feb27) ## DNS Migration - Changed NS to Cloudflare for ALL 10 remaining domains via OpenProvider API - OpenProvider API creds: `~/.config/openprovider.env` - Cloudflare activation checks triggered, cron job at 4:55 AM to check + add remaining 6 ## Email Migration - Added Tanya to Proton Bridge (account #2, pw: dxk6YlYpRgr3Z7fw3BhXDQ) - Stalwart: all users recreated with `"roles":["user"]` — needed for IMAP auth - imapsync working via SSH tunnel (localhost:9930 → zurich:993) - Tanya sync running in background (/tmp/imapsync_tanya.log) - K2.5 subagent spawned for Tanya inbox cleanup (envelope metadata only) ## Stalwart Fixes - Self-signed cert added but Stalwart not loading it (ACME override issue) - SSH tunnel workaround for imapsync (bypasses TLS + firewall) - UFW on Zurich: allowed all Tailscale traffic (`ufw allow in on tailscale0`) ## AgenticMail - Discovered: github.com/agenticmail/agenticmail — MCP layer on Stalwart for AI agents - 3 days old, 7 stars — too new for production. Bookmarked for later. - Interesting: SMS/Google Voice integration, outbound PII scanning ## BlueBubbles / iMessage - Mac Mini M4 (2025) is Johan's daily driver, BYO network - Can run BlueBubbles today — no need to wait for M4 Max laptop - Setup deferred to tomorrow ## M365 → Fully Tablet Alerts (afternoon session) - **Pipeline working**: MC detects emails/Teams → K2.5 summarizes → POSTs to Fully dashboard - **K2.5 chat API is broken for formatting** — thinking model narrates "The user wants..." instead of following instructions - **K2.5 completions API works perfectly** — few-shot prompt with `\nAlert:` completion pattern, `stop:["\n"]` - **Johan's messages filtered out** — fixed DisplayName check (was checking URL field before) - **Conversation-aware**: Johan's replies auto-clear Fully alerts for that Teams conversation - **Group coloring**: Teams messages from same conversation share background color (hue from conv ID hash) - **Fireworks API key mismatch fixed**: MC had stale key `fw_TGADpSki7zak4K9JxPzbXU`, updated to working `fw_RVcDe4c6mN4utKLsgA7hTm` - **OC m365 hook removed**: Agent was unreliable (localhost web_fetch blocked), MC handles everything directly now - HTML entity stripping added ( , &, etc.) ## Fully Dashboard Improvements - **Budget pace indicator**: `usage% / time%` — shows how fast we're burning weekly Anthropic budget - Week runs Sat 2pm → Sat 2pm ET - >100% = red (overspending), 90-100% = white (on pace), <90% = green - Shows as `⚡ 108%` with color - **Claude usage fixed**: James dashboard API returns object not array — was showing "undefined" - **News streams**: Each topic (markets, ai, nabl, news, netherlands) gets its own bar below alerts - Fetches from James dashboard /api/news, grouped by topic field ## News System - Added `topic` field to James dashboard news API - Topics section on James dashboard groups news by topic with emoji headers - **Cron job**: Grok 4.1 Fast runs every 4h (2,6,10,14,18,22 ET) for news scan - **Philosophy**: X/Twitter is radar (what's happening), then go to PRIMARY SOURCE (Anthropic blog, SEC filings, whitehouse.gov, etc.). Never cite middlemen (CNBC, Guardian) when source exists. - Johan wants raw signal, not editorial filter ## Key Corrections - **"Best over fast, always"** — Johan doesn't want fastest approach, wants best - **Don't bypass, fix root cause** — removing LLM summarization was lazy; fix the prompt instead - **Test with curl before deploying** — always get "curl proof" before pushing code changes - **Fireworks guarantees privacy; Grok (xAI) does not** — use Fireworks for anything touching private data (emails, Teams). Grok OK for public news scanning. - **Claude Sonnet 4.6 released today** — 1M context (beta), adaptive thinking, context compaction (beta), $3/$15 per M tokens ## Sophia - Blood draw at 12:00 PM, Health Link, 851 Brightwater Blvd NE, $65 (Karina)