# 執行清單 · 2026-05-18 (你明天動手用)

> **owner**: Eugene (你)
> **產出 by**: Zenya (Claude session)
> **scope**: side hustle infra 啟動 — 申請 / install / 查 / 設定
> **總時間估**: ~2-3 hr (含等待 + 填表)
> **配套**: 標準密碼 `RonsunAi6!` (已存 user memory)

---

## 🎯 完成這份清單後你拿到的

1. ✅ NVIDIA Developer free API key (跑 DeepSeek V4 / GLM 4.7 / Llama 3.3 等 LLM, 慷慨免費額度)
2. ✅ free-claude-code gateway 跑在 Mac mini Port 8082 (24/7 launchd)
3. ✅ Domain 5 個候選查完, brand 鎖定
4. ✅ RSun sched-* 18 個 cron 自動走 free LLM (我這個 session 已準備好 _lib.py 改動, 你開 gateway 後自動接)

---

## Part A: Hermes / free-claude-code 安裝 (~60-90 min)

> **2026-05-17 update**: 你說 M1 MacBook 24GB / 1TB 也能裝, **不必另買 Mac mini**。
> 真實評估 → ✅ 跑 (詳見下表), 對個人 dev + 1-5 客戶完全夠。
> 30+ 客戶 SaaS scale 時再升級 Hetzner VM (€5/mo) 或 Mac mini M4。

### A0 · M1 MacBook 跑 gateway 影響表

| 資源 | 影響 | 你 24GB/1TB 占比 |
|---|---|---|
| Disk | ~800 MB (Homebrew + Claude Code + uv + Python 3.14 + repo) | 0.08% |
| RAM idle | ~150 MB | 0.6% |
| RAM peak | 300-500 MB | 1-2% |
| CPU idle | ~0% | - |
| CPU processing | 10-30% 1 core / 2-5 秒 per request | - |
| 電力 idle | ~3-5W | 跟開幾個 Chrome tab 一樣 |

### A0.1 · M1 MacBook 特有紀律 (重要)

- ✅ launchd 加 **`nice -n 10`** → gateway 跑時不搶你開發 CPU
- ✅ 用 **`caffeinate`** 防 MacBook 睡眠 (蓋筆電仍跑)
- ✅ 重啟前先 **`launchctl unload`** (避免 launchd 卡)
- ✅ 帶筆電出門時 gateway 斷 → **sched-* 自動 fallback Gemini/Groq** (Wave 3 已寫)

### A1 · 確認 M1 MacBook 可用 (5 min)

- [ ] **MacBook 連網**
- [ ] **macOS 版本 ≥ Sonoma 14** (`sw_vers` 確認)
- [ ] **可用磁碟 ≥ 5GB** (`df -h /` 確認, 800MB 安裝 + 4GB buffer)
- [ ] **電源接著** (24/7 gateway 建議插電, 但純測試 1-2 hr 純電池也行)

### A2 · 申請 NVIDIA Developer 免費 API key (15 min)

- [ ] 開 https://build.nvidia.com (Mac mini 瀏覽器, 不要用 VPN)
- [ ] 點右上 **Sign In** → 用你的 gmail 註冊新帳號
  - Username: 你習慣的 (ezonelai 或 ronsunai)
  - Password: **`RonsunAi6!`**
  - Company: `RSun Ltd.` (沒登記也填這個)
  - Country: Taiwan
  - Role: Software Engineer
- [ ] 驗證 email (gmail 收信點連結)
- [ ] 登入後左側選 **API Keys** → 點 **Generate API Key**
  - Key name: `rsun-free-claude-code-gateway`
  - 點 Generate → **複製 `nvapi-xxxxxxxxxxxxxx...`** (只顯示 1 次, 立刻存)
- [ ] 把 key 暫存 1Password / Notes (待會 install 用)
- [ ] **截圖 free tier 額度** (build.nvidia.com 的 Usage 頁) 寄給我看

### A3 · install 前置工具 (10 min on Mac mini)

```bash
# 開 Terminal on Mac mini

# 1. Homebrew (如果沒有)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 2. Claude Code (官方正版)
brew install --cask claude-code
claude --version  # 應顯示 v2.1.x

# 3. uv (Python package manager, 取代 pip)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv self update
uv python install 3.14
```

- [ ] `brew` 安裝完
- [ ] `claude --version` 跑通
- [ ] `uv --version` 跑通
- [ ] `uv python install 3.14` 完成

### A4 · clone + 設定 free-claude-code (10 min)

```bash
# 放在你 Mac mini 家目錄
cd ~
git clone https://github.com/Alishahryar1/free-claude-code.git
cd free-claude-code

# 複製範例 env
cp .env.example .env

# 編輯 .env (填你 A2 拿到的 NVIDIA key)
nano .env
```

`.env` 內容只改這 2 行 (其他先留空):
```env
NVIDIA_NIM_API_KEY="nvapi-xxxxxxxxxxxxxx..."  # ← A2 你拿到的
MODEL="nvidia_nim/deepseek-ai/deepseek-v4-pro"
```

存檔 (Ctrl+O → Enter → Ctrl+X)。

- [ ] repo clone 成功
- [ ] `.env` 已填 `NVIDIA_NIM_API_KEY`
- [ ] `.env` 已設 `MODEL="nvidia_nim/deepseek-ai/deepseek-v4-pro"`

### A5 · 啟動 gateway 跑通 (5 min)

```bash
cd ~/free-claude-code
uv run uvicorn server:app --host 0.0.0.0 --port 8082
```

**新開 1 個 Terminal tab**:
```bash
# 測 gateway 通不通
curl http://localhost:8082/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 50,
    "messages": [{"role": "user", "content": "Hi"}]
  }'
```

預期回應: JSON 含 DeepSeek V4 生的「Hi」回覆 (key 在 `content[0].text`)。

- [ ] gateway 啟動成功 (terminal 顯示 `Uvicorn running on http://0.0.0.0:8082`)
- [ ] curl test 回應 200 + JSON 內含文字

### A6 · 設成 24/7 自動跑 (10 min, launchd, 含 M1 MacBook nice 紀律)

`Ctrl+C` 停掉前面那個 uvicorn, 改用 launchd 永久跑:

```bash
# 建 plist (M1 MacBook 加 nice 紀律, 不搶你開發 CPU)
cat > ~/Library/LaunchAgents/com.rsun.free-claude-code.plist <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.rsun.free-claude-code</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/caffeinate</string>
    <string>-s</string>
    <string>/usr/bin/nice</string>
    <string>-n</string>
    <string>10</string>
    <string>/Users/ezonelai/.local/bin/uv</string>
    <string>run</string>
    <string>uvicorn</string>
    <string>server:app</string>
    <string>--host</string>
    <string>0.0.0.0</string>
    <string>--port</string>
    <string>8082</string>
  </array>
  <key>WorkingDirectory</key><string>/Users/ezonelai/free-claude-code</string>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>/tmp/free-claude-code.log</string>
  <key>StandardErrorPath</key><string>/tmp/free-claude-code.err</string>
  <key>ProcessType</key><string>Background</string>
</dict>
</plist>
EOF

# 啟用
launchctl load ~/Library/LaunchAgents/com.rsun.free-claude-code.plist

# 確認跑起來
ps aux | grep uvicorn  # 應看到 process
curl http://localhost:8082/v1/messages -X POST -H "Content-Type: application/json" -d '{"model":"claude","max_tokens":20,"messages":[{"role":"user","content":"hi"}]}'
```

- [ ] plist 建立成功
- [ ] `launchctl load` 跑通
- [ ] reboot Mac mini 後 gateway 仍自動跑 (測 reboot 1 次)

### A7 · 啟動測試 — Claude Code 走免費 LLM (5 min)

```bash
# 開新 Terminal tab
cd ~/free-claude-code
ANTHROPIC_AUTH_TOKEN="freecc" \
  ANTHROPIC_BASE_URL="http://localhost:8082" \
  claude
```

進入 Claude Code prompt, 試一下:
```
> 寫一個 Python hello world
```

預期: Claude Code 顯示「Sonnet 4.6」但實際是 DeepSeek V4 跑出來 (慢一點 ~5 秒)。

- [ ] Claude Code 啟動成功
- [ ] 跑 prompt 回應正常
- [ ] **截圖回我看** (確認 token 沒燒到你 Anthropic 帳號)

---

## Part A++ · Resend `ronsunai.com` outbound domain verify (5 min, **最急**)

> 2026-05-17 補: Ella 補跑信只能寄到 ronsunai inbox 因為 `ronsunai.com` 還沒在 Resend verify (outbound).
> CF Email Routing (inbound 5 alias) 不夠, 要另設 outbound DNS.
>
> 詳細 SOP: [`docs/SOP-RESEND-DOMAIN-VERIFY-RONSUNAI.md`](SOP-RESEND-DOMAIN-VERIFY-RONSUNAI.md)

- [ ] resend.com 登入 (帳號 `ronsunai@gmail.com`, 密碼 `RonsunAi6!`)
- [ ] Domains → Add Domain → `ronsunai.com` → 拿 3-4 個 DNS record
- [ ] CF Dashboard → `ronsunai.com` zone → DNS → 加 3-4 record (**Proxy 一定關 / DNS only / 灰雲**)
- [ ] Resend dashboard click **Verify DNS Records** → 等 5-30 秒
- [ ] 寄 test mail to 你自己非 ronsunai gmail 驗證 HTTP 200
- [ ] 重發 Ella 補跑信 (從 ronsunai inbox forward 或用 SOP Step 6 curl)

→ verify 完, Wave 1A / sched-11/17/18 全自動切 `service@ronsunai.com`, 客戶真實收得到信。

---

## Part B: Domain 5 個查完 (~15 min)

5 個候選, 你去 godaddy.com / namecheap.com / porkbun.com 一次查完:

| # | Candidate | .com | .app | 備註 |
|---|---|---|---|---|
| 1 | **Ceyanai** | ☐ 空 / ☐ 佔 | ☐ 空 / ☐ 佔 | ceyan + AI, 中英 81 雙吉 |
| 2 | **ronsunai** | ☐ 空 / ☐ 佔 | ☐ 空 / ☐ 佔 | brand 延續, 中英 81 雙吉 |
| 3 | **Ronyx** | ☐ 空 / ☐ 佔 | ☐ 空 / ☐ 佔 | 短 5 letter, .app 大概率空 |
| 4 | **Lumio** | ☐ 空 / ☐ 佔 | ☐ 空 / ☐ 佔 | 拉丁 lumen 字根 |
| 5 | **Nexora** | ☐ 空 / ☐ 佔 | ☐ 空 / ☐ 佔 | Nex-gen AI 感 |

- [ ] 5 個 × 2 副檔名 = 10 個 lookup 完成
- [ ] **結果丟給我**, 我們今晚定 brand
- [ ] 如果 ronsunai 5 個都空 / 至少 1 個吉數+雙 .com/.app 都空 → **直接買** (NT$1500-3000/yr, 不要拖)

---

## Part C: 等家辦回覆 EU portal (異步)

- [ ] 你把 https://rsun-tracker.pages.dev/clients/eugene-eu-setup/ 分享給家族辦公室經理人
- [ ] 等他回 10 個開放問題的意見
- [ ] 等拉脫維亞朋友 12 條問題回應
- [ ] 收到 → 我寫 v3 matrix (整合家辦意見, 重新評分 Scenario)

⚠️ EU portal v2 文件你已自己改過 (主推 Hungary Guest Investor + Portugal Golden Visa + 義/希退休 phase) — 跟我 v1 框架已不同, 給家辦看的是這個 v2。

---

## Part D: 我這頭今晚已準備好的 (你不必動)

- [x] `clients/eugene-eu-setup/` portal 已 live (CF Pages)
- [x] `docs/EU-RESIDENCY-AND-COMPANY-MATRIX.md` v2 (你自編)
- [x] `docs/PAYMENT-STRATEGY.md` (4 路線, manual 主軸)
- [x] Wave 2A SLP recurring + manual provider + admin endpoints
- [x] Wave 2B Upsell + Wave 2C FAQ
- [ ] **本 PR (Wave 3)**: ADR-020 free-claude-code 整合 + `_lib.py` 加 `free_gateway_complete()` (LLM waterfall 第 1 順位, gateway 死自動 fallback Gemini → Groq → SambaNova → CF → Claude)
- [ ] 你 install gateway (Part A 完成) → RSun 18 個 sched-* 自動全走免費 LLM, quota 不再爆

---

## Part E: 後續 Phase (本週 / 下週)

| Phase | Action | 工時 | 觸發 |
|---|---|---|---|
| **Wave 3.1** | _lib.py 加 NVIDIA NIM provider (gateway 死的 cloud fallback) | 1 hr | 你 gateway 完 + key 在手 |
| **Wave 4** | ADR-019 Phase 3 - D1 FTS5 chat history (Zenya 跨 session 記憶) | 4-6 hr | Wave 3 上 production 1 週後 |
| **Wave 5** | Aurora morning briefing 加 nudge | 4 hr | Wave 4 完 |
| **Wave 6** | NL cron (Zenya 對話設定 cron) | 4-6 hr | Wave 5 完 |
| **Wave 7** | Stage 7 客戶 onboarding chatbot factory | 10-12 hr | brand 鎖定 + EU portal 家辦回意見 |

---

## 你 install 完 Part A 後告訴我:
1. NVIDIA NIM key 申到了 ✓
2. Gateway curl test 200 ✓
3. Claude Code 走 gateway 成功 ✓

→ 我立刻動 Wave 3 PR merge, RSun 18 cron 全切免費 LLM。

## 你 Part B 查完 domain 告訴我:
- 5 個 × 2 副檔名 結果

→ 我們今晚定 brand, 你直接買。

---

**owner**: ezonelai@gmail.com
**source**: 容晟 Zenya session 2026-05-17
**related**: `docs/adr/ADR-020-free-claude-code-gateway-integration.md` (本 PR)
