85 lines
5.1 KiB
Markdown
85 lines
5.1 KiB
Markdown
# 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)
|