← OSGKeyboard · App Store
中文
OSGKeyboard Privacy Policy
Last updated: August 22, 2026 · v2.0
OSGKeyboard provides an iOS custom keyboard and a macOS menu-bar dictation app. iOS uses Apple's on-device SpeechAnalyzer + DictationTranscriber by default; macOS can use a downloaded local Qwen3-ASR model. Core local features and user-configured providers do not require an OSGKeyboard account. On iOS, you may optionally sign in with Apple and use managed credits instead of supplying provider credentials. This policy explains all three paths.
What we collect
- Voice audio — captured only while you actively record. On a local engine, audio is transcribed on-device and raw audio is not uploaded. With a user-configured cloud engine, recordings go directly to that provider. If you explicitly select managed credits, recordings go through the OSGKeyboard managed gateway at
account.osglab.com to the managed ASR provider. Before the first switch to managed credits, the app explains that audio, text, nearby cursor context, and account data may leave the device and requires explicit agreement. OSGKeyboard does not retain raw recordings after processing.
- Transcribed text and cursor context — after ASR, the transcript (not audio) may be sent for polish when you use a configured LLM or managed credits. To continue naturally at the insertion point, a small amount of text immediately before and after the cursor may be included. Secure fields are never captured; cursor context is not written to logs or voice history. User-configured requests go directly to that provider; managed-credit requests go through
account.osglab.com. Without either path, raw local ASR text can still be inserted.
- Speaking-style learning — voice history can retain the displayed final text and, when available, the corrected ASR text from before AI polishing plus a deduplicated snapshot of the polish-style prompt used for that take. The pre-polish text is not shown in History. Only after you tap “Generate My Style” are eligible before-and-after pairs and their prior style prompts sent to your configured AI service. Native speech and explicit user edits are used to infer recurring habits; historical prompts are supplied only to distinguish and remove AI-added style. The generated prompt is shown for review and is not saved or activated until you confirm it. When you later invoke a conversational clipboard-reply skill while a reviewed user-created style is active, that style prompt is sent with the copied text so the reply can follow your wording and rhythm; built-in polish personalities are not attached. User-configured requests go directly to that provider; managed-credit requests go through
account.osglab.com.
- AI mode questions — in AI keyboard mode, your spoken question text—or a question you tap from an idle suggestion—is sent to the selected AI service. User-configured requests go directly to that provider; managed-credit requests go through
account.osglab.com. When the selected service supports server-side web search, it may retrieve public web results for time-sensitive answers.
- AI suggestions and OSGKeyboard web pages — the main app may request public suggestion titles from
key.osglab.com; no voice, transcript, clipboard body, API key, or ordinary keystroke content is included in that request. Opening the update page requests public content from download.osglab.com. As with ordinary HTTPS sites, those hosts and their infrastructure may process connection metadata such as IP address and request time.
- AI Agent skills, Shortcuts, and maps — when you deliberately run a skill, the selected or copied text and skill prompt are sent to your configured LLM provider. For Reminders, Calendar, or Notes exports, the generated result is passed on-device to the Apple Shortcut you install; OSGKeyboard does not receive the resulting item. For navigation, an address or route is placed in a URL opened by Apple Maps, Amap, or Baidu Maps, and the selected map provider's policy applies.
- API credentials — your user-configured provider keys are stored in the iOS Keychain and shared with the keyboard through a shared Keychain group, never through UserDefaults. When you enable iCloud settings sync, API keys replicate through Apple's iCloud Keychain to your other signed-in devices — not through iCloud Key-Value Store JSON.
- Optional OSGKeyboard account and purchases — no account is required for local transcription or user-configured providers. If you choose Sign in with Apple, the account service processes the Apple identity token, a pseudonymous OSGKeyboard account identifier, optional display name, device-integrity evidence, credit balance, referral state, and StoreKit transaction identifiers needed to verify consumable credit purchases. Account session tokens stay in the main app's private Keychain; the keyboard extension receives only a short-lived, scope-limited managed-service grant. You can sign out or delete the account in the app.
- App preferences — engine mode, recognition language, polish intensity, translation target, handedness, and keyboard settings are stored in App Group
UserDefaults so the main app and keyboard extension stay in sync. Device-local clipboard consent switches are not activated by iCloud settings sync.
- Optional clipboard history — off by default. When enabled, the keyboard may read text copied on this device or received through Universal Clipboard; iOS cannot reliably identify which source supplied an item. Up to 15 accepted items are stored only in this device’s App Group for the host app and keyboard extension. Turning history off stops capture, disables the suggestion strip, and keeps existing items. Reset Settings also keeps them; deletion requires the separate confirmed “Clear clipboard history” action. There is no fixed expiry. Secure fields immediately clear the current suggestion, close the history panel, and hide the clipboard entry point. Conservative filters reject common OTP shapes, PEM private-key headers, long three-part JWTs, Bearer tokens, recognizable provider-key prefixes of safe lengths, and common Luhn-valid 16-digit card numbers; they do not claim to detect every password. Normal order numbers, years, and short labeled account numbers remain eligible. Rejected text can still be pasted once through iOS; it is simply not recorded. Clipboard text is never sent to AI on its own. It leaves the device only when you deliberately ask for it — tapping a clipboard suggestion in AI mode, saying “clipboard” in an AI question, or invoking polish after inserting an item — and it is then sent to your configured provider as separate quoted data, never as instructions.
- Personal dictionary — terms and aliases you add in the Dictionary tab are stored locally on your device. They are included in LLM polish prompts so your vocabulary is preserved. Optional iCloud dictionary sync mirrors your dictionary through your private iCloud Key-Value Store; OSGKeyboard does not operate a separate dictionary server.
- On-device typing learning — Chinese candidate frequencies and English suggestion choices are stored in the local App Group. You can clear this learning separately in typing settings without deleting the personal dictionary. OSGKeyboard does not upload it.
- macOS local speech models — when you choose a Qwen3-ASR local model, the Mac app downloads model files from Hugging Face and stores them in its local application-support directory until you remove them. Local inference does not send your audio to Hugging Face or OSGKeyboard.
- Voice history — the host app may keep up to 300 recent successful transcripts, including eligible paired text and deduplicated historical style-prompt snapshots used for user-initiated speaking-style learning. When iCloud settings sync is enabled, this history may also sync through your private iCloud Key-Value Store.
- Usage statistics — cumulative dictation time, dictation characters, translation characters, and dictionary entry count are computed and stored locally on the home screen stats card.
- Optional first-party product analytics — enabled by default and removable at any time in Settings. OSGKeyboard sends only fixed event names and fixed categories about app/keyboard sessions, AI feature outcomes and duration ranges, purchase-page interactions, and invitation actions, together with an app-scoped random installation identifier and safe app/OS version labels. It never includes keyboard input, audio, transcripts, cursor context, prompts, model output, contacts, file or device names, Apple identifiers, email, credentials, advertising identifiers, or free-form properties. Turning analytics off deletes queued events; turning it back on creates a new installation identifier.
Clipboard sensitive-content filtering is applied to newly captured items. Existing history is retained until you use the confirmed clear action.
What we do not collect
- We do not log or upload ordinary keystrokes. Only the on-device Chinese candidate-learning data described above is retained locally.
- We do not use third-party analytics, crash-reporting, advertising SDKs, ATT, or IDFA.
- We do not upload raw audio on a local engine. Audio leaves the device only after you select a user-configured cloud engine or managed credits.
- We do not sell personal data.
How the keyboard extension talks to the host app
OSGKeyboard uses a long-lived "Flow session" hosted in the main app. The keyboard extension writes tiny "start / stop" signals and, when available, a short redacted cursor-context snapshot into an App Group. The main app captures the audio, transcribes it on-device by default or through the cloud path you selected, then optionally sends the transcript and nearby text for polish before writing the result back. User-configured cloud requests go directly to that provider; managed-credit requests go through account.osglab.com.
Permissions
- Microphone (
NSMicrophoneUsageDescription) — required for voice input and the long-lived voice session.
- Speech recognition (
NSSpeechRecognitionUsageDescription) — required for on-device transcription via Apple's APIs.
- Full Access — required so the keyboard can reach the microphone, communicate with the main app, read your user-configured key from the shared Keychain or use a short-lived managed-service grant, and—only when clipboard history is enabled—read clipboard text. Full Access does not grant us access to everything you type; we do not exfiltrate keystrokes.
Third parties
User-configured cloud ASR and LLM requests go directly to the provider you configure. Managed-credit requests go through account.osglab.com to the managed ASR or LLM provider. Apple processes Sign in with Apple and StoreKit purchases. AI skills may also hand generated data to Apple Shortcuts or open a route in Apple Maps, Amap, or Baidu Maps. Public suggestions and update pages are served by key.osglab.com and download.osglab.com. Optional Mac models are downloaded from Hugging Face. Each service's privacy policy applies.
Data retention
Settings remain on your device until you delete the app or reset settings. When iCloud settings sync is enabled, API keys replicate through iCloud Keychain and eligible preferences, statistics, dictionary data, voice history, and saved custom styles may sync through your private iCloud account. Voice history is capped at 300 entries and can be cleared from History or by resetting settings; clearing all history also removes retained style-prompt snapshots. A generated style is stored only after you review and save it. Clipboard history remains device-local, is capped at 15 entries, has no fixed expiry, and remains when capture is turned off or settings are reset; use the separate confirmed clear action to delete it. Chinese and English typing-learning data stays local and can be cleared from typing settings without deleting the personal dictionary. Downloaded Mac speech models remain until you remove the model in the app or delete its local files.
Optional account — account profile, credit ledger, StoreKit audit records, and limited anti-abuse records are retained by the account service while the account is active. Account deletion removes the active profile and credentials; pseudonymous ledger, purchase-audit, and time-limited anti-abuse records may remain where required to prevent replay, fraud, or abuse.
Product analytics — queued events expire locally after 34 days and the service accepts events no older than 35 days. Account deletion and analytics opt-out delete the local queue. Analytics identifiers are not used for cross-app tracking or advertising.
Children's privacy
OSGKeyboard is not directed to children under 13 and does not knowingly collect personal data from children.
Changes to this policy
We may update this policy as the app evolves. The "Last updated" date at the top will always reflect the current version. Material changes will be called out in the project CHANGELOG.
License
OSGKeyboard is distributed under the OSGKeyboard Source Available License — personal learning and non-commercial local use only. No commercial use, redistribution, or public forks without permission.
Contact
Questions or privacy requests: open an issue at github.com/hkgood/OSGKeyboard, or email rocky.hk@gmail.com.
OSGKeyboard 隐私政策
更新日期:2026 年 8 月 22 日 · v2.0
OSGKeyboard 包含 iOS 自定义键盘与 macOS 菜单栏听写应用。iOS 默认使用 Apple 端侧的 SpeechAnalyzer + DictationTranscriber;macOS 可使用下载到本机的 Qwen3-ASR 模型。本地能力和用户自备服务商能力无需登录 OSGKeyboard 账号。iOS 用户也可以选择 Apple 登录并使用托管积分,无需自行填写服务商凭证。本政策同时说明这三条路径。
我们处理的数据
- 语音音频 — 仅在你主动录音时采集。使用本地引擎时,音频在设备端完成转写,原始录音不会上传。使用用户自备云端服务时,录音会直接发送到你配置的识别服务商;若你明确选择「使用积分」,录音会经
account.osglab.com 的 OSGKeyboard 托管网关发送到托管识别服务商。首次切换托管积分前,App 会说明语音、文字、光标附近上下文与账号数据可能离开设备,并要求你明确同意。请求处理完成后,OSGKeyboard 不保留原始录音。
- 转写文字与光标上下文 — 使用已配置的 LLM 或托管积分时,转写文字(非音频)可能发送润色,并可能包含光标附近少量文字以自然衔接。密码框不会采集,光标上下文不会写入日志或语音历史。用户自备请求直达所选服务商;托管积分请求经
account.osglab.com 处理。未选择任一路径时,仍可直接插入本地 ASR 原始文字。
- 说话风格学习 — 语音历史可同时保留界面展示的最终文本、可用时保留 AI 润色前且已经过确定性纠错的 ASR 文本,以及当次使用的润色风格 Prompt 去重快照;润色前文本不会在历史界面显示。只有当你主动点击「生成我的风格」后,符合条件的润色前后文本对及对应历史 Prompt 才会发送给你配置的 AI 服务。原生口述与用户明确编辑用于归纳反复出现的习惯;历史 Prompt 只用于识别并排除 AI 附加风格。生成结果会先展示供你检查,确认保存前不会写入或启用。之后,当你启用了经检查的用户自定义风格并主动使用口语回复类剪贴板技能时,该风格 Prompt 会随复制文本一起发送,用于贴近你的用词与节奏;内置润色人格不会附加。用户自备请求直达所选服务商;托管积分请求经
account.osglab.com 处理。
- AI 模式问题 — 在 AI 键盘模式下,语音转写后的问题文字或你点选的建议会发送到当前选择的 AI 服务。用户自备请求直达所选服务商;托管积分请求经
account.osglab.com 处理。所选服务支持联网搜索时,可能检索公开网页结果回答时效性问题。
- AI 建议与 OSGKeyboard 网页 — 主 App 可能从
key.osglab.com 请求公开建议标题;该请求不包含语音、转写、剪贴板正文、API Key 或普通击键内容。打开更新页时会从 download.osglab.com 请求公开内容。与普通 HTTPS 网站相同,相关主机与基础设施可能处理 IP 地址、请求时间等连接元数据。
- AI Agent 技能、快捷指令与地图 — 仅在你主动运行技能时,所选或复制的文字及技能提示词才会发送到你配置的 LLM 服务商。导出提醒事项、日历或备忘录时,生成结果会在设备端交给你安装的 Apple 快捷指令;OSGKeyboard 不会收到最终创建的项目。导航时,地址或路线会写入 URL 并交给 Apple 地图、高德地图或百度地图,相应地图服务商的政策适用。
- API 凭证 — 用户自备服务商的 API Key 保存在设备 Keychain,通过共享 Keychain 组与键盘扩展共享,不会写入
UserDefaults。开启iCloud 设置同步后,API 密钥经 Apple iCloud 钥匙串同步到你其他已登录设备,不会写入 iCloud 键值存储 JSON。
- 可选 OSGKeyboard 账号与购买 — 本地转写和用户自备服务商无需账号。若你选择 Apple 登录,账号服务会处理 Apple 身份令牌、匿名化的 OSGKeyboard 账号标识、可选昵称、设备完整性证明、积分余额、邀请状态,以及核验消耗型积分包所需的 StoreKit 交易标识。账号会话令牌只保存在主 App 私有 Keychain;键盘扩展仅获得短时、限权的托管服务凭证。你可以在 App 内退出或注销账号。
- 应用偏好 — 引擎模式、识别语言、润色档位、翻译目标、握持偏好与键盘设置等保存在 App Group
UserDefaults,用于主 App 与键盘扩展之间的状态同步。本机剪贴板许可开关不会被 iCloud 设置同步开启。
- 可选剪贴板历史 — 默认关闭。开启后,键盘可能读取本机复制或经通用剪贴板收到的文字;iOS 无法可靠判断具体来源。最多 15 条通过规则的文本仅保存在本机主 App 与键盘扩展共享的 App Group。关闭历史只会停止采集、关闭建议条并保留已有记录;重置设置也会保留,只有单独确认的「清空剪贴板历史」操作会删除。历史没有固定过期时间。进入安全输入框会立即清除当前建议、关闭历史面板并隐藏剪贴板入口。保守过滤会拒绝常见 OTP 形态、PEM 私钥头、三段较长的 JWT、Bearer Token、达到安全长度的明确服务商密钥前缀,以及常见的通过 Luhn 校验的 16 位卡号;不宣称识别所有密码。普通订单号、年份与带标签的短账号仍可进入历史。被拒绝的文本仍可经 iOS 一次性粘贴,只是不被记录。剪贴板正文不会自行发送给 AI。只有你主动要求时它才会离开设备——在 AI 模式点选剪贴板建议、在 AI 提问中明确说出「剪贴板」,或插入后主动使用润色——此时会作为单独引用的数据发送给你配置的服务商,绝不作为指令。
- 个性词库 — 你在「词库」Tab 添加的词条与别名保存在本机,润色时会写入 LLM 提示词。可选的iCloud 词库同步经私有 iCloud 键值存储在多设备间镜像;OSGKeyboard 不运营独立词库服务器。
- 本地输入学习 — 中文候选频率与英文候选选择偏好保存在本机 App Group,可在输入设置中单独清除,不会因此删除个性词库,OSGKeyboard 不会上传这些学习数据。
- macOS 本地语音模型 — 选择 Qwen3-ASR 本地模型后,Mac App 会从 Hugging Face 下载模型文件,并保存在本机应用支持目录,直到你主动移除。本地推理不会把录音发送到 Hugging Face 或 OSGKeyboard。
- 语音历史 — 主 App 可在「历史」页保留最多 300 条近期成功转写,其中可包含供用户主动学习说话风格的成对文本与去重历史风格 Prompt 快照。开启 iCloud 设置同步后,这些历史也可能经私有 iCloud 键值存储同步。
- 用量统计 — 首页统计卡片的累计听写时长、听写字数、翻译字数、词库词条数均在本地计算与保存。
- 可选第一方产品分析 — 默认开启,可随时在设置中关闭。OSGKeyboard 只发送固定事件名和固定分类,用于了解 App/键盘会话、AI 功能结果与耗时区间、购买页交互及邀请操作,并携带 App 范围内随机生成的安装标识和安全的 App/系统版本标识。绝不包含键盘输入、音频、转录、光标上下文、Prompt、模型输出、联系人、文件名、设备名、Apple 标识、邮箱、凭证、广告标识符或自由形式属性。关闭后会删除待发送事件;重新开启会生成新的安装标识。
剪贴板敏感内容过滤仅在新内容采集时执行;已有历史会继续保留,直到你使用带确认的清空操作。
我们不收集的内容
- 我们不会记录或上传你平时在键盘上的击键内容。
- 我们不会集成第三方分析、崩溃上报或广告 SDK,也不使用 ATT 或 IDFA。
- 使用本地引擎时,我们不会上传原始录音。只有你选择用户自备云端识别或托管积分后,录音才会离开设备。
- 我们不会出售个人数据。
键盘扩展与主 App 的通信方式
OSGKeyboard 采用主 App 维护的「Flow 会话」机制:键盘扩展在 App Group 中写入轻量的「开始 / 停止」信号,以及可用时经过截断的少量光标上下文;主 App 采集音频,默认在设备端完成转写,也可以按你选择的云端路径处理,再按需发送转写文字与附近文字进行润色后回写结果。用户自备云端请求直达所选服务商;托管积分请求经 account.osglab.com 处理。
权限说明
- 麦克风(
NSMicrophoneUsageDescription)— 语音输入与长生命周期语音会话所需。
- 语音识别(
NSSpeechRecognitionUsageDescription)— 调用 Apple 端侧语音能力进行转写所需。
- 完全访问 — 使键盘能使用麦克风、与主 App 通信、从共享 Keychain 读取用户自备 API Key 或使用短时托管服务凭证,并仅在你开启剪贴板历史后读取剪贴板文字。完全访问不代表我们会获取你输入的所有内容,绝不外传击键。
第三方
用户自备的云端 ASR 与 LLM 请求直接发送到你配置的服务商;托管积分请求经 account.osglab.com 发送到托管 ASR 或 LLM 服务商。Apple 处理 Apple 登录与 StoreKit 购买。AI 技能也可能把生成数据交给 Apple 快捷指令,或在 Apple 地图、高德地图、百度地图中打开路线。公开建议与更新页面分别由 key.osglab.com、download.osglab.com 提供;可选 Mac 模型从 Hugging Face 下载。各服务的隐私政策适用。
数据保留
设置保留在设备上,直至卸载或重置。开启 iCloud 设置同步后,API 密钥经 iCloud 钥匙串同步,可同步的偏好、统计、词库、语音历史和已保存的自定义风格可能经私有 iCloud 账户同步。语音历史上限 300 条,可在「历史」页清空或通过重置设置清除;清空全部历史也会删除保留的风格 Prompt 快照。生成的风格只有在你检查并保存后才会写入。剪贴板历史仅保存在本机,上限 15 条,没有固定过期时间;关闭采集或重置设置均会保留,需使用单独确认的清空操作删除。中英文输入学习数据仅留本机,可在输入设置中单独清除且不影响个性词库。下载的 Mac 语音模型会保留到你在应用中移除模型或删除本地文件。
可选账号 — 账号有效期间,账号服务会保留资料、积分账本、StoreKit 审计记录及有限的反滥用记录。注销会删除有效资料与凭证;为防止交易重放、欺诈或滥用,匿名账本、购买审计及有时限的反滥用记录可能在必要范围内继续保留。
产品分析 — 待发送事件会在本地满 34 天后过期,服务端只接受 35 天以内的事件。注销账号或关闭产品分析会删除本地队列。分析标识不会用于跨 App 跟踪或广告。
儿童隐私
OSGKeyboard 不面向 13 岁以下儿童,亦不会明知地从儿童处收集个人信息。
政策变更
本政策可能随应用演进而更新,更新日期始终显示在文首。重大变更会在项目 CHANGELOG 中标注。
许可协议
OSGKeyboard 基于 OSGKeyboard 源码可见许可协议 发布 —— 仅限个人学习与非商用本地使用;禁止商用、再分发及公开 fork。
联系
问题反馈或隐私相关请求:github.com/hkgood/OSGKeyboard 提 Issue,或邮件 rocky.hk@gmail.com。