Tailnet Resource Widget

私人 Tailscale tailnet(私有網路)資源監控工具:mac mini collector(收集器)每 5 分鐘拉取 Windows/macOS agent(代理),Android Widget(小工具)顯示設備摘要並支援手動 refresh(刷新)。

v1 Capability(第一版能力)

Collector Pull(收集器拉取)mac mini 每 5 分鐘透過 Tailscale IP/MagicDNS(魔法 DNS)拉取 `/metrics`。
Android Widget(Android 小工具)WorkManager(背景工作管理器)嘗試 15 分鐘級自動更新,refresh button(刷新按鈕)立即抓 snapshot(快照)。
SQLite Housekeeping(資料清理)raw samples(原始樣本)保留 7 天,每次 poll cleanup(清理),每日 `VACUUM`。

Architecture Flow(架構流程)

1Windows/macOS agent(代理)只讀 CPU/RAM/Disk。
2mac mini collector(收集器)透過 tailnet(私有網路)輪詢。
3SQLite 保存 latest snapshot(最新快照)與 7 天 history(歷史)。
4Android app/Widget(應用/小工具)讀 `/api/v1/snapshot`。

Interfaces(介面)

ComponentEndpointPurpose
Agent(代理)GET /health設備 agent health check(健康檢查)。
Agent(代理)GET /metricsCPU/RAM/Disk/Network optional(網路可選)摘要。
Collector(收集器)GET /api/v1/snapshotWidget(小工具)摘要資料。
Collector(收集器)GET /api/v1/devices/{id}/history?range=24hApp(應用程式)詳細歷史資料。

Usage(使用方式)

Collector quick start(收集器快速啟動)

Copy-Item config\devices.example.json config\devices.json
Copy-Item .env.example .env
python -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
$env:MONITOR_TOKEN="change-this-shared-token"
$env:COLLECTOR_DEVICES_FILE=".\config\devices.json"
$env:COLLECTOR_AUTO_POLL="true"
uvicorn app.main:app --host 0.0.0.0 --port 8787

Agent handoff(代理交接)

prompts/windows-agent-handoff.mdprompts/macos-agent-handoff.md 貼給各設備上的 Codex。

Safety Boundary(安全邊界)

Allowed(允許):CPU、RAM、Disk、Network optional(網路可選)、online/offline(在線/離線)、last updated(最後更新)。

Blocked(禁止):Funnel(公開入口)、Tailscale Admin API key(管理 API 金鑰)放 Android、讀取使用者檔案、提交 SQLite runtime DB(執行資料庫)。

Verification(驗證)

.\scripts\verify.ps1

此 showcase(展示頁)是 static project showcase(靜態專案展示),不讀取任何真實設備資料。