<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Cross Device Synchronization on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/cross-device-synchronization/</link>
        <description>Recent content in Cross Device Synchronization on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 27 Oct 2026 21:17:31 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/cross-device-synchronization/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>cindy</title>
        <link>https://producthunt.programnotes.cn/en/p/cindy/</link>
        <pubDate>Tue, 27 Oct 2026 21:17:31 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/cindy/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1650943574955-ac02c65cfc71?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3OTMxMDY5Mjl8&amp;ixlib=rb-4.1.0" alt="Featured image of post cindy" /&gt;&lt;h1 id=&#34;makecindycindy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/makecindy/cindy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;makecindy/cindy&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://cindy.app&#34;&gt;&lt;img src=&#34;.github/assets/hero-en.webp&#34; width=&#34;100%&#34; alt=&#34;CINDY — Consider it done. The open-source AI agent that works out of the box, doing real work on your own computer.&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;strong&gt;English&lt;/strong&gt; · &lt;a href=&#34;README.zh-CN.md&#34;&gt;简体中文&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;LICENSE&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/license-Apache--2.0-blue.svg&#34; alt=&#34;License&#34; /&gt;&lt;/a&gt;
  &lt;a href=&#34;https://github.com/makecindy/cindy/actions/workflows/ci.yml&#34;&gt;&lt;img src=&#34;https://github.com/makecindy/cindy/actions/workflows/ci.yml/badge.svg&#34; alt=&#34;CI&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;strong&gt;&lt;a href=&#34;https://cindy.app/download&#34;&gt;Download Cindy&lt;/a&gt;&lt;/strong&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&#34;https://cindy.app&#34;&gt;Website&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&#34;CONTRIBUTING.en.md&#34;&gt;Build with us&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&#34;SUPPORT.en.md&#34;&gt;Get help&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Cindy is an &lt;strong&gt;open-source AI agent, ready out of the box and yours to shape&lt;/strong&gt;.
Connect your computers and phone, bring the models and subscriptions you already
use, and build a companion that knows how you like to work.&lt;/p&gt;
&lt;h2 id=&#34;all-your-devices-one-cindy&#34;&gt;All your devices. One Cindy.
&lt;/h2&gt;&lt;p&gt;Your work computer, home desktop, laptop and phone belong together.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pick up the same work.&lt;/strong&gt; Open a session from another device, continue the
conversation, and access its files without copying everything into a new chat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share more than a screen.&lt;/strong&gt; Use model providers configured on another
computer — including supported subscriptions, API providers and local models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reach your whole desktop.&lt;/strong&gt; Built-in remote desktop on your phone lets you
open apps, type and operate a connected computer when a chat isn&amp;rsquo;t enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your computer becomes your server: &lt;strong&gt;no server rental or self-hosting setup&lt;/strong&gt;.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;How connections and data work&lt;/summary&gt;
&lt;p&gt;For remote access to your computers, keep them online, sign in with the same
account and enable the relevant permissions. Model sharing requires allowing
remote access to that provider; remote desktop also needs its own permissions.
Project files stay on their computer — remote access is not whole-disk sync.
Cloud companions sync their conversations, memory, skills and shared attachments
through Cindy&amp;rsquo;s services; model providers process the requests sent to them.
Provider and service billing still apply.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;keep-your-favorite-agents-get-a-better-way-to-work&#34;&gt;Keep your favorite agents. Get a better way to work.
&lt;/h2&gt;&lt;p&gt;Already using Claude Code or Codex? Cindy brings them together with &lt;strong&gt;Pi&lt;/strong&gt;,
then adds a shared interface, multi-device access, tools and a companion of
your own.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Harness&lt;/th&gt;
					&lt;th&gt;What it brings&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Claude Code&amp;rsquo;s agent workflow, with Cindy&amp;rsquo;s interface and connected tools.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Codex&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Codex&amp;rsquo;s coding workflow, available alongside your other agents.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Pi&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;A lean, open-source, extensible agent with support for multiple model providers.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Choose a supported harness and model combination, and change it as the work
evolves. Your session stays in Cindy; switching harnesses hands off or rebuilds
the engine context rather than making their internal states identical.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One agent not enough? Let her lead a team.&lt;/strong&gt; Use different agents for planning,
parallel implementation and independent review, with a shared goal and clear
acceptance criteria.&lt;/p&gt;
&lt;h2 id=&#34;real-work-in-your-actual-tools&#34;&gt;Real work, in your actual tools
&lt;/h2&gt;&lt;p&gt;Work with your files, browser and apps. Ask for a change, inspect what happened,
and keep working from the result. Answers can include &lt;strong&gt;charts, interactive
controls and rich HTML&lt;/strong&gt;, not just a wall of text.&lt;/p&gt;
&lt;p&gt;Build a recurring routine with &lt;strong&gt;automations&lt;/strong&gt;, or hand over work through
connected chat channels such as Slack and Telegram. Connect more tools through
&lt;strong&gt;Skills, plugins and MCP&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ready-from-day-one-yours-to-shape-over-time&#34;&gt;Ready from day one. Yours to shape over time.
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create your own companions.&lt;/strong&gt; Give them a role, instructions, skills and
recurring work — a reviewer, researcher, project partner, or something of your own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make experience reusable.&lt;/strong&gt; Keep useful preferences and knowledge in memory;
turn a good way of working into a Skill you can reuse and share.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extend the product.&lt;/strong&gt; Discover Skills and plugins in SkillHub, connect your
own tools, or build on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/makecindy/cindy-official-plugins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;official plugins&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Help shape Cindy.&lt;/strong&gt; Audit the code, fork it, improve an interaction, fix a bug,
or contribute a useful integration. The client is Apache-2.0 licensed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Open source means more than visible — it means changeable.
&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.en.md&#34; &gt;Build Cindy with us →&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;start-with-what-you-already-have&#34;&gt;Start with what you already have
&lt;/h2&gt;&lt;p&gt;The &lt;strong&gt;client is free&lt;/strong&gt;. Authorize a supported subscription you already pay for,
including Claude Code or Codex plans, connect your own API keys, or use a local
model. You can also use Cindy&amp;rsquo;s managed model service. Provider limits and
billing still apply; the free client does not mean unlimited model usage.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;macOS · Windows · Linux · iOS · Android&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cindy.app/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Download Cindy&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;https://cindy.app/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Service pricing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Linux users: see the &lt;a class=&#34;link&#34; href=&#34;docs/linux.md&#34; &gt;Ubuntu, Arch Linux and Omarchy installation guide&lt;/a&gt;
for installation, updates, keyring setup and migration from a manual install.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;for-developers&#34;&gt;For developers
&lt;/h2&gt;&lt;p&gt;This repository contains Cindy&amp;rsquo;s open-source &lt;strong&gt;desktop and mobile clients&lt;/strong&gt; and
their shared packages, organized as a pnpm monorepo.&lt;/p&gt;
&lt;h3 id=&#34;whats-in-this-repo&#34;&gt;What&amp;rsquo;s in this repo
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Path&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;apps/desktop&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Electron desktop client&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;apps/mobile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Expo / React Native mobile client&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;packages/*&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Shared client capabilities (auth, device-link, agent orchestration, model providers, …)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;apps/*-bin&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Tool binaries shipped with the desktop app; none are committed — claude-code, codex, and ripgrep are downloaded per platform by &lt;code&gt;pnpm install&lt;/code&gt;, and the Android platform-tools binaries are fetched (pinned version, sha256-verified) before Windows packaging&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Not in this repo:&lt;/strong&gt; the backend service lives in a separate
repository and is not part of this monorepo.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Mode&lt;/th&gt;
					&lt;th&gt;Account requirement&lt;/th&gt;
					&lt;th&gt;Availability&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Hosted service&lt;/td&gt;
					&lt;td&gt;Cindy cloud account&lt;/td&gt;
					&lt;td&gt;Use Cindy&amp;rsquo;s full hosted service. See &lt;a class=&#34;link&#34; href=&#34;https://cindy.app/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pricing&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Skip Sign-In&lt;/td&gt;
					&lt;td&gt;No Cindy sign-in required&lt;/td&gt;
					&lt;td&gt;Choose “Skip Sign-In” on the login screen to use local agents; the app then shows the account state as “Not signed in”. Server-backed capabilities are unavailable in this state.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt; 22.x&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pnpm&lt;/strong&gt; 10.x (v11 is not yet supported)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git LFS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;getting-started&#34;&gt;Getting started
&lt;/h3&gt;&lt;p&gt;Contributor setup, Git LFS, dependency updates, and access requirements are maintained in
&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.en.md&#34; &gt;&lt;code&gt;CONTRIBUTING.en.md&lt;/code&gt;&lt;/a&gt;.
Plugins are installed through SkillHub or manually.&lt;/p&gt;
&lt;p&gt;Minimal entry point:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/makecindy/cindy.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; cindy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git lfs pull
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;development-entry-points&#34;&gt;Development entry points
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Mainland China Cindy account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm restart:desktop:remote --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cn
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Global Cindy account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm restart:desktop:remote --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;global
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Remote development uses your own Cindy cloud account and existing login state, so
you can continue existing sessions and work while developing the client. Use &lt;code&gt;cn&lt;/code&gt;
for Mainland China accounts and &lt;code&gt;global&lt;/code&gt; for everyone else; do not rely
on the internal default. Full desktop, mobile, data-isolation, and validation
workflows are in &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.en.md&#34; &gt;&lt;code&gt;CONTRIBUTING.en.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;“Skip Sign-In” on the login screen runs local agents without a Cindy account
(shown in the app as “Not signed in”), not a connection to a local server.
Server-backed capabilities are unavailable in this state.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About the default servers:&lt;/strong&gt; the client connects to Cindy&amp;rsquo;s official cloud
services by default (endpoint manifests in
&lt;a class=&#34;link&#34; href=&#34;config/endpoint.json&#34; &gt;&lt;code&gt;config/endpoint.json&lt;/code&gt;&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;config/endpoint.global.json&#34; &gt;&lt;code&gt;config/endpoint.global.json&lt;/code&gt;&lt;/a&gt;; desktop
auto-updates also come from the official CDN). This is intentional — external
developers don&amp;rsquo;t need to self-host a server: sign in with your own Cindy
account in a dev build and develop / test directly against the official
servers.&lt;/p&gt;
&lt;p&gt;Skill Hub migration uses two separate manifest fields: released clients keep
using &lt;code&gt;skillhubApiBaseUrl&lt;/code&gt; (the deprecated XD proxy), while current clients use
&lt;code&gt;cindySkillHubApiBaseUrl&lt;/code&gt;. The current client deliberately does not fall back to
the legacy field when the new endpoint is absent.&lt;/p&gt;
&lt;h3 id=&#34;architecture&#34;&gt;Architecture
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;DESIGN.md&#34; &gt;&lt;code&gt;DESIGN.md&lt;/code&gt;&lt;/a&gt; — visual design system, color tokens, and UI conventions&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/README.md&#34; &gt;&lt;code&gt;docs/README.md&lt;/code&gt;&lt;/a&gt; — complete documentation and rules index&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/auth-realm-routing.md&#34; &gt;&lt;code&gt;docs/auth-realm-routing.md&lt;/code&gt;&lt;/a&gt; — organization SSO region discovery and session endpoint routing&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.en.md&#34; &gt;&lt;code&gt;CONTRIBUTING.en.md&lt;/code&gt;&lt;/a&gt; — contributor setup, validation, and submission workflow&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;AGENTS.md&#34; &gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt; — engineering rules, launch/runtime contracts, and module boundaries&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/dev-rules/&#34; &gt;&lt;code&gt;docs/dev-rules/&lt;/code&gt;&lt;/a&gt; — deep-dive architecture docs (e.g. Orca multi-agent orchestration)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;Contributions go through pull requests into &lt;code&gt;main&lt;/code&gt;. Read
&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.en.md&#34; &gt;&lt;code&gt;CONTRIBUTING.en.md&lt;/code&gt;&lt;/a&gt; first, then use
&lt;a class=&#34;link&#34; href=&#34;.github/PULL_REQUEST_TEMPLATE.md&#34; &gt;&lt;code&gt;.github/PULL_REQUEST_TEMPLATE.md&lt;/code&gt;&lt;/a&gt;.
Every commit needs a &lt;a class=&#34;link&#34; href=&#34;DCO&#34; &gt;Developer Certificate of Origin&lt;/a&gt; sign-off
(&lt;code&gt;git commit -s&lt;/code&gt;); a DCO check on each pull request enforces it, and no CLA is
required.
Please also follow &lt;a class=&#34;link&#34; href=&#34;CODE_OF_CONDUCT.en.md&#34; &gt;&lt;code&gt;CODE_OF_CONDUCT.en.md&lt;/code&gt;&lt;/a&gt;. For ordinary
usage questions, see &lt;a class=&#34;link&#34; href=&#34;SUPPORT.en.md&#34; &gt;&lt;code&gt;SUPPORT.en.md&lt;/code&gt;&lt;/a&gt;; report security issues
privately through &lt;a class=&#34;link&#34; href=&#34;SECURITY.en.md&#34; &gt;&lt;code&gt;SECURITY.en.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;security&#34;&gt;Security
&lt;/h2&gt;&lt;p&gt;Never commit credentials or authorization files to the working tree. If you
discover a security issue, follow &lt;a class=&#34;link&#34; href=&#34;SECURITY.en.md&#34; &gt;&lt;code&gt;SECURITY.en.md&lt;/code&gt;&lt;/a&gt; to report it
privately rather than opening a public issue.&lt;/p&gt;
&lt;h2 id=&#34;privacy--telemetry&#34;&gt;Privacy &amp;amp; telemetry
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Official distribution builds&lt;/strong&gt; include &lt;a class=&#34;link&#34; href=&#34;https://www.taptap.io/tapdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TapDB&lt;/a&gt;
usage analytics for product-level aggregate statistics, including device identifiers,
OS / app version, startup and activity events. Events are associated with your account
ID after sign-in, so this is not fully anonymous. TapDB does &lt;strong&gt;not&lt;/strong&gt; collect chat
content, file content, or working-directory data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can disable usage analytics without editing code&lt;/strong&gt;: on Desktop, use
Settings → About → Usage statistics; on Mobile, use Usage statistics in Settings.
The SDK checks the stored privacy-consent state and the statistics preference,
which defaults to on. Accepting the Privacy Policy records consent; a one-time
migration also records consent for eligible existing signed-in users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Known Mobile exception:&lt;/strong&gt; enterprise SSO skips the policy-acceptance step. If no
analytics consent record exists and that sign-in is restored after restarting the
app, the current migration can mark even a new installation as consented. With
TapDB configured and statistics enabled, reporting can then start without explicit
policy acceptance. See &lt;a class=&#34;link&#34; href=&#34;apps/mobile/src/auth/AuthContext.tsx&#34; &gt;Mobile sign-in restoration&lt;/a&gt;
and the &lt;a class=&#34;link&#34; href=&#34;apps/mobile/src/analytics/analyticsConsentStore.ts&#34; &gt;consent migration&lt;/a&gt;.
Turning off Usage statistics prevents reporting from being enabled by this migration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desktop stops subsequent analytics reporting immediately when disabled. Local
mode (Skip sign-in) does not report to TapDB.&lt;/li&gt;
&lt;li&gt;Mobile immediately unlinks the account and stops reports explicitly triggered
by Cindy. An already initialized native SDK cannot be uninitialized; fully quit
and relaunch the app to keep the SDK uninitialized.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementation: &lt;a class=&#34;link&#34; href=&#34;apps/desktop/src/main/analyticsSettingsService.ts&#34; &gt;Desktop consent and settings&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;apps/desktop/src/renderer/analytics/tapdbClient.ts&#34; &gt;Desktop SDK&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;apps/mobile/src/analytics/analyticsConsentStore.ts&#34; &gt;Mobile consent&lt;/a&gt;, and
&lt;a class=&#34;link&#34; href=&#34;apps/mobile/src/analytics/mobileTapdb.ts&#34; &gt;Mobile SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Online heartbeats and diagnostic logs are separate mechanisms, unaffected by the
usage statistics switch. Desktop sends heartbeats to Cindy services only during a
verified cloud sign-in (account ID, platform, and version); local mode sends none.
Desktop native crash dumps stay local and are never uploaded automatically.
Diagnostic logs can be uploaded manually; a separate, default-off automatic crash
log upload option is also available. Log uploads require privacy consent. See the
&lt;a class=&#34;link&#34; href=&#34;apps/desktop/src/main/heartbeatService.ts&#34; &gt;heartbeat implementation&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;docs/dev-rules/log-upload-and-redaction.md&#34; &gt;log upload rules&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Building from source?&lt;/strong&gt; You are not required to keep analytics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desktop development builds do not initialize TapDB by default. Explicitly setting
&lt;code&gt;XDT_TAPDB_DEV=1&lt;/code&gt; lifts the build gate but still requires consent and the statistics
preference. Self-packaged Desktop builds use the same analytics gates as official
builds; you can disable analytics in Settings.&lt;/li&gt;
&lt;li&gt;Mobile does not initialize the SDK without injected TapDB configuration
(&lt;code&gt;clientId&lt;/code&gt; / &lt;code&gt;clientToken&lt;/code&gt;). This does not mean all source builds default to off:
the self-hosted release pipeline requires nonempty configuration, while local
development permits empty values. See the
&lt;a class=&#34;link&#34; href=&#34;apps/mobile/docs/simulator-debugging.md&#34; &gt;Mobile build guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license--许可证&#34;&gt;License / 许可证
&lt;/h2&gt;&lt;p&gt;Except as otherwise noted, the source code in this repository is licensed under
the &lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;Apache License, Version 2.0&lt;/a&gt;. Individual source files do not
carry per-file license headers; the repository-root &lt;code&gt;LICENSE&lt;/code&gt; governs.&lt;/p&gt;
&lt;p&gt;Model weights, datasets, prompts, trademarks, and other separately identified
materials may be subject to their own license terms and are not automatically
covered by the repository-level Apache-2.0 grant. Third-party open-source
components retain their own copyright and license. Their attribution notices and
SPDX SBOMs are managed under &lt;a class=&#34;link&#34; href=&#34;docs/legal/&#34; &gt;&lt;code&gt;docs/legal/&lt;/code&gt;&lt;/a&gt;, with artifact-specific
outputs in &lt;a class=&#34;link&#34; href=&#34;docs/legal/notices/&#34; &gt;&lt;code&gt;docs/legal/notices/&lt;/code&gt;&lt;/a&gt;. See &lt;a class=&#34;link&#34; href=&#34;NOTICE&#34; &gt;&lt;code&gt;NOTICE&lt;/code&gt;&lt;/a&gt;
for this project&amp;rsquo;s copyright and attribution information.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
