# Tessera 隱私權政策

_最後更新：2026 年 8 月 18 日_

Tessera 是一款適用於 iPhone 和 iPad 的 SSH、Mosh 和 tmux 終端機。本政策說明
Tessera 會處理哪些資料。簡短版本：**Tessera 不收集任何個人資料。**

## 不收集任何資料

Tessera 沒有後端伺服器、沒有分析、沒有追蹤、沒有廣告，也沒有第三方資料收集
SDK。開發者不會收到任何關於你、或關於你如何使用這款 App 的資訊。

## 儲存在你裝置上的資料

你輸入或建立的一切都留在你的裝置上（若你有啟用，也會存在你自己的裝置備份或
iCloud 備份中）：

- 你輸入的主機連線資訊（位址、連接埠、使用者名稱）。
- 你產生或輸入的 SSH 金鑰。金鑰儲存在 iOS 鑰匙圈中。以 Secure Enclave 保管的
  金鑰絕不會離開裝置。
- 已知主機的指紋、App 偏好設定，以及各主機的個別設定。

這些資料絕不會傳送給開發者。SSH 和 Mosh 連線是從你的裝置**直接**連到你指定的
伺服器 —— 中間沒有任何 Tessera 的基礎設施，因為根本不存在。

## 網路連線

Tessera 只會連到你所設定的伺服器，而且是直接連線。你的憑證、按鍵和工作階段
資料，不會經由任何 Tessera 營運的服務轉送。

跨裝置功能也是同樣的做法。**鄰近設定**會透過你的區域網路，在你自己的裝置之間
直接傳輸設定，並在螢幕上比對代碼之後進行端到端加密；密碼和私密金鑰絕不會被
傳輸，過程中也不涉及任何雲端或中繼。**接續互通**透過 Apple 的接續互通機制
分享指向某個工作階段的指標 —— 絕不包含憑證。選用的**智慧體狀態掛鉤**只會把
狀態中繼資料（提供者、生命週期事件、狀態、原因、工作階段／回合識別碼、通知
類型、權限模式、時間戳記，以及本機行程 ID）從你自己的伺服器回報到你的裝置 ——
絕不包含提示詞、回應、原始碼或憑證。

## Tessera 可能要求的權限

- **本機網路** —— 用來連到你區域網路上的 SSH／Mosh 伺服器、把本機連接埠
  轉發到它們，以及在鄰近設定期間尋找你的另一台裝置。
- **Face ID / 生物辨識** —— 用來解鎖受生物辨識保護的 SSH 金鑰以及 App 鎖定。
  由 iOS 在裝置上完成判定；Tessera 絕不會看到你的生物辨識資料。
- **麥克風與語音辨識**（選用）—— 只有在你啟用向終端機輸入的裝置端聽寫時才會
  使用。語音在裝置上處理；音訊不會傳送給開發者或任何第三方。
- **通知**（選用）—— 用於終端機響鈴／回合完成訊號的本機通知，在裝置上產生。

## 購買

Tessera 選用的一次性購買，完全由 Apple 透過 App Store 處理。Tessera 只會從
Apple 的 StoreKit 收到隨之而來的權限 —— 不會收到付款資訊，也不會建立任何
帳戶。請見[免費與無限主機](https://bambouville.com/docs/zh-hant/unlimited-hosts/)。

## 診斷日誌

Tessera 可以寫入本機診斷日誌（設定 → 診斷），以協助排除問題。這份日誌經過遮蔽
（憑證、位址和端點都會被去除），並儲存在你的裝置上。它只會因為你自己採取的
動作而離開裝置：透過系統分享工作表輸出、上傳到你自己的某台伺服器，或選擇
**傳送給開發者** —— 這會在你的郵件 App 中撰寫一封寄給 dev@bambouville.com 的
郵件並附上日誌，只有在你檢視內容並點下傳送後才會寄出。Tessera 絕不會自動上傳
日誌，開發者也只有在你選擇寄出時才會收到。

## 資料保留與刪除

Tessera 處理的所有資料都只存在於你的裝置上，因此保留與刪除完全由你掌控：

- 主機、身分、偏好設定、已知主機指紋和診斷日誌會保留在裝置上，直到你在 App 中
  刪除它們（或刪除整個 App）。
- **SSH 金鑰儲存在 iOS 鑰匙圈中。** 即使 App 已被解除安裝，iOS 仍可能保留
  鑰匙圈項目，而且（對非 Secure Enclave 的金鑰而言）它們可能被帶進加密的裝置
  備份中。若要徹底移除金鑰，請在解除安裝 Tessera **之前**，先在 App 中
  （金鑰頁面）刪除它們。
- 不可能、也不需要向開發者提出刪除請求：開發者手上沒有任何關於你的資料。

## 兒童隱私

Tessera 不會從任何人身上收集資料，兒童也不例外。

## 本政策的變更

本政策如有變更，更新後的版本會張貼在本頁面。

## 聯絡方式

對本政策有疑問嗎？請在 <https://github.com/bambouville/tessera/issues> 開一個
issue。
