# Local Machine Config

## Second Brain — Obsidian Vault

Vault: `~/Library/Mobile Documents/iCloud~md~obsidian/Documents/VadymSamoilenko/`

| Папка | Содержит |
|-------|----------|
| `01 Projects/<name>/` | Tech stack, server, deploy command, URL, сессии |
| `wiki/` | Knowledge base: tech patterns, architecture, concepts |
| `02 Areas/` | Pending commands, homelab config |
| `99 Daily/` | Логи сессий |

---

## Email — Mailgun

Credentials: `source ~/.secrets/mailgun.env`. Добавлять в `.env`/`.env.example` автоматически. `.env` всегда в `.gitignore`. Base URL: `https://api.mailgun.net/v3`.

> **Gotcha:** домен должен быть `mg.oliver.solutions`, а не `oliver.solutions`. Неверный домен → Mailgun возвращает 404/401, Python-обёртка проглатывает ошибку и возвращает `False`, в итоге — generic 500.

---

## Oliver VPN

**Перед SSH / deploy на Oliver servers** (`optical-dev`, `optical-web-1`, `baic`, `box-cli`, `10.220.168.*`) — проверить Tunnelblick:

```bash
VPN_STATE=$(osascript -e 'tell application "Tunnelblick" to get state of first configuration where name contains "Oliver"' 2>/dev/null)
[ "$VPN_STATE" != "CONNECTED" ] && osascript -e 'tell application "Tunnelblick" to connect "Oliver VPN"' && sleep 5
```
