Source: https://seerepo.com/r/makecindy/cindy/built
Markdown source: https://seerepo.com/r/makecindy/cindy/built.md
Description: cindy is a TypeScript repo built with React, react-router-dom, Vite, Electron, Tokio, and 6 more. It stores its data in SQLite and reaches it with Drizzle.

# What is cindy built with?

cindy is a TypeScript repo built with React, react-router-dom, Vite, Electron, Tokio, and 6 more. It stores its data in SQLite, reaches it with Drizzle, signs people in with jose, jwcrypto, expo-apple-authentication, com.nimbusds:nimbus-jose-jwt, and androidx.biometric:biometric, uses AI through @earendil-works/pi-ai, onnxruntime-android, and Anthropic, makes its content with unified, unist-util-visit, gray-matter, sharp, remark-parse, and 30 more, validates its data with Zod, typebox, and @terrazzo/parser, is tested with playwright-core, Vitest, and Testing Library, deploys with electron-squirrel-startup and expo-updates, and uses MCP, electron-store, @react-native-async-storage/async-storage, expo-secure-store, and Firebase. It has 4,695,566 written lines, with 6,296 test files.

Read on November 14, 2026, at commit 0bd0aa2.

Repository: https://github.com/makecindy/cindy

## Support (/)

### Testing

- **playwright-core**: 1 file

### Other

- **serde_json**: 5 files
- **zeroize**: 4 files
- **ring**: 3 files
- **x25519-dalek**: 3 files
- **base64**: 1 file

## Backend (apps/cindy-headless)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [apps/desktop/src/main/localDb/betterSqliteFactory.ts, line 5](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/src/main/localDb/betterSqliteFactory.ts#L5)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (apps/cindy-headless)

### Testing

- **Vitest**: 18 files

### Tools

- **esbuild**: 1 file

## Frontend (apps/desktop)

### The base

- **[React](https://seerepo.com/uses/react)**: 1,204 files · [in apps/desktop/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 159 files
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in apps/desktop/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/package.json)

### Styles

- **[fontsource-variable](https://seerepo.com/uses/fontsource-variable)**: 7 files
- **[PostCSS](https://seerepo.com/uses/postcss)**: 3 files
- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 92 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 39 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 9 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 7 files
- **[xterm](https://seerepo.com/uses/xterm)**: 3 files
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 2 files
- **[sortablejs](https://seerepo.com/uses/sortablejs)**: 2 files
- **[@floating-ui/react-dom](https://seerepo.com/uses/floating-ui-react-dom)**: 1 file
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 1 file
- **[canvas-confetti](https://seerepo.com/uses/canvas-confetti)**: 1 file
- **cm6-graphql**: 1 file
- **[lowlight](https://seerepo.com/uses/lowlight)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 540 files

## Backend (apps/desktop)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 51 files · [apps/desktop/src/main/localDb/betterSqliteFactory.ts, line 5](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/src/main/localDb/betterSqliteFactory.ts#L5)
- **[electron-store](https://seerepo.com/uses/electron-store)**: 10 files

### Data access

- **[Drizzle](https://seerepo.com/uses/drizzle)**: 192 files

### Sign-in

- **[jose](https://seerepo.com/uses/jose)**: 1 file
- **jwcrypto**: 1 file

### AI

- **@earendil-works/pi-ai**: 1 file

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 28 files · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (apps/desktop)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 539 files
- **[Tokio](https://seerepo.com/uses/tokio)**: 1 file

### Content

- **[unified](https://seerepo.com/uses/unified)**: 21 files
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 16 files
- **[gray-matter](https://seerepo.com/uses/gray-matter)**: 15 files
- **[sharp](https://seerepo.com/uses/sharp)**: 15 files
- **[remark-parse](https://seerepo.com/uses/remark-parse)**: 9 files
- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 8 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 6 files
- **[qrcode](https://seerepo.com/uses/qrcode)**: 5 files
- **[highlight.js](https://seerepo.com/uses/highlightjs)**: 3 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 3 files
- **@napi-rs/canvas**: 2 files
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 2 files
- **gifenc**: 1 file
- **[html-to-image](https://seerepo.com/uses/html-to-image)**: 1 file
- **jpeg-encoder**: 1 file
- **[katex](https://seerepo.com/uses/katex)**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file
- **[rehype-highlight](https://seerepo.com/uses/rehype-highlight)**: 1 file
- **[rehype-katex](https://seerepo.com/uses/rehype-katex)**: 1 file
- **[rehype-slug](https://seerepo.com/uses/rehype-slug)**: 1 file
- **remark-cjk-friendly**: 1 file
- **[remark-math](https://seerepo.com/uses/remark-math)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 39 files

### Testing

- **Vitest**: 4,410 files
- **Testing Library**: 821 files
- **playwright-core**: 2 files

### Deploy

- **electron-squirrel-startup**: 1 file

### Tools

- **TypeScript**: 117 files
- **esbuild**: 5 files
- **electron-forge**: 3 files
- **napi-derive**: 3 files
- **Babel**: 1 file

### Other

- **napi**
- **react-i18next**: 769 files
- **i18next**: 80 files
- **@paralleldrive/cuid2**: 17 files
- **windows-sys**: 15 files
- **ws**: 15 files
- **serde_json**: 14 files
- **jszip**: 12 files
- **smol-toml**: 9 files
- **undici**: 7 files
- **windows**: 7 files
- **diff**: 5 files
- **tar**: 5 files
- **base64**: 4 files
- **sha2**: 4 files
- **node-pty**: 3 files
- **electron-window-state**: 2 files
- **node-machine-id**: 2 files
- **.ENV**: 1 file
- **clsx**: 1 file
- **fix-path**: 1 file
- **hidapi**: 1 file
- **json5**: 1 file
- **silk-wasm**: 1 file

## Frontend (apps/desktop/cindy-updater)

### The base

- **[Tauri](https://seerepo.com/uses/tauri)**: 1 file

## Support (apps/desktop/cindy-updater)

### Content

- **[zip](https://seerepo.com/uses/zip)**: 1 file

### Tools

- **clap**: 3 files

### Other

- **serde_json**
- **thiserror**
- **chrono**: 2 files
- **serde**: 2 files
- **sysinfo**: 2 files
- **anyhow**: 1 file
- **open**: 1 file
- **walkdir**: 1 file
- **windows-sys**: 1 file

## Backend (apps/host)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [apps/desktop/src/main/localDb/betterSqliteFactory.ts, line 5](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/src/main/localDb/betterSqliteFactory.ts#L5)

### Data access

- **[Drizzle](https://seerepo.com/uses/drizzle)**: 4 files

## Support (apps/host)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 1 file

### Testing

- **playwright-core**: 1 file

### Tools

- **esbuild**: 4 files
- **TypeScript**: 1 file

### Other

- **ws**: 3 files
- **jszip**: 2 files

## Frontend (apps/mobile)

### The base

- **[React](https://seerepo.com/uses/react)**: 555 files · [in apps/desktop/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/package.json)
- **[react-native](https://seerepo.com/uses/react-native)**: 478 files
- **Expo**: 150 files · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

### Interface

- **[react-native-safe-area-context](https://seerepo.com/uses/react-native-safe-area-context)**: 77 files
- **[expo](https://seerepo.com/uses/expo)**: 63 files
- **[react-native-reanimated](https://seerepo.com/uses/react-native-reanimated)**: 28 files
- **[react-native-webview](https://seerepo.com/uses/react-native-webview)**: 24 files
- **[react-native-svg](https://seerepo.com/uses/react-native-svg)**: 15 files
- **expo-glass-effect**: 8 files
- **[expo-image](https://seerepo.com/uses/expo-image)**: 6 files
- **@legendapp/list**: 5 files
- **react-native-screens**: 3 files
- **[react-native-gesture-handler](https://seerepo.com/uses/react-native-gesture-handler)**: 2 files
- **react-native-uitextview**: 2 files
- **@react-native-menu/menu**: 1 file
- **androidx.window:window**: 1 file
- **[expo-blur](https://seerepo.com/uses/expo-blur)**: 1 file
- **expo-paste-input**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 164 files

## Backend (apps/mobile)

### The base

- **[androidx.core:core](https://seerepo.com/uses/androidxcore-core)**: 2 files

### Data

- **[@react-native-async-storage/async-storage](https://seerepo.com/uses/react-native-async-storage-async-storage)**: 57 files
- **[expo-secure-store](https://seerepo.com/uses/expo-secure-store)**: 2 files

### Sign-in

- **expo-apple-authentication**: 1 file

## Support (apps/mobile)

### The base

- **com.facebook.react:react-android**: 2 files

### Content

- **[expo-image-manipulator](https://seerepo.com/uses/expo-image-manipulator)**: 8 files
- **[expo-image-picker](https://seerepo.com/uses/expo-image-picker)**: 3 files
- **[expo-document-picker](https://seerepo.com/uses/expo-document-picker)**: 2 files
- **expo-media-library**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 867 files
- **Testing Library**: 4 files
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Deploy

- **expo-updates**: 9 files

### Tools

- **TypeScript**: 70 files
- **@expo/config-plugins**: 14 files
- **acorn**: 1 file

### Other

- **react-i18next**: 285 files
- **expo-file-system**: 44 files
- **expo-audio**: 36 files
- **expo-crypto**: 34 files
- **noble**: 17 files
- **i18next**: 15 files
- **expo-clipboard**: 14 files
- **expo-localization**: 5 files
- **expo-web-browser**: 5 files
- **react-native-worklets**: 3 files
- **pako**: 2 files
- **ws**: 1 file

## Support (apps/mobile/modules/cindy-agent-net)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Backend (apps/mobile/modules/cindy-chat-notifications)

### Services

- **[Firebase](https://seerepo.com/uses/firebase)**: 1 file · [apps/mobile/modules/cindy-chat-notifications/android/src/main/java/app/cindy/notifications/ChatDelivery.kt, line 12](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/modules/cindy-chat-notifications/android/src/main/java/app/cindy/notifications/ChatDelivery.kt#L12)

## Support (apps/mobile/modules/cindy-chat-notifications)

### The base

- **[androidx.core:core](https://seerepo.com/uses/androidxcore-core)**: 3 files
- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

### Other

- **okhttp**
- **ShortcutBadger**

## Support (apps/mobile/modules/cindy-handheld)

### The base

- **com.facebook.react:react-android**: 1 file
- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/cindy-notification-state)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Backend (apps/mobile/modules/cindy-remote-credentials)

### Sign-in

- **com.nimbusds:nimbus-jose-jwt**: 3 files
- **[androidx.biometric:biometric](https://seerepo.com/uses/androidxbiometric-biometric)**: 1 file

## Support (apps/mobile/modules/cindy-remote-credentials)

### The base

- **[androidx.core:core](https://seerepo.com/uses/androidxcore-core)**: 1 file
- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/cindy-remote-presentation)

### The base

- **[androidx.core:core](https://seerepo.com/uses/androidxcore-core)**: 2 files
- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Backend (apps/mobile/modules/cindy-speaker-onnx)

### AI

- **onnxruntime-android**

## Support (apps/mobile/modules/cindy-speaker-onnx)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-ios-action-sheet)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-ios-app-distribution)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-mobile-realtime-audio)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-screenshot-monitor)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-tapdb)

### The base

- **Expo**: 1 file · [in apps/mobile/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/mobile/package.json)

## Support (apps/mobile/modules/xdt-wechat-login)

### The base

- **expo-modules-core**: 1 file

### Tools

- **Expo**: 1 file

## Support (packages/agent-net-core)

### Other

- **ring**: 1 file
- **x25519-dalek**: 1 file

## Support (packages/agent-net-protocol)

### Testing

- **Vitest**: 1 file

## Backend (packages/agent-net-relay)

### Sign-in

- **[jose](https://seerepo.com/uses/jose)**: 1 file

## Support (packages/agent-net-relay)

### Testing

- **Vitest**: 5 files

### Tools

- **esbuild**: 1 file

### Other

- **ws**: 3 files

## Support (packages/agent-net)

### Testing

- **Vitest**: 7 files
- **[jose](https://seerepo.com/uses/jose)**: 1 file

### Tools

- **esbuild**: 1 file

### Other

- **ws**: 2 files
- **bonjour-service**: 1 file

## Support (packages/anthropic-compat-proxy)

### Testing

- **Vitest**: 20 files

### Tools

- **esbuild**: 1 file

### Other

- **selfsigned**: 2 files
- **undici**: 1 file

## Support (packages/anthropic-responses-bridge)

### Testing

- **Vitest**: 9 files

## Support (packages/auth-client)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files

### Testing

- **Vitest**: 6 files

## Backend (packages/browser-control-runtime)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (packages/browser-control-runtime)

### Content

- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files
- **[typebox](https://seerepo.com/uses/typebox)**: 1 file

### Testing

- **Vitest**: 18 files
- **playwright-core**: 6 files

### Other

- **undici**: 4 files
- **ipaddr.js**: 1 file
- **ws**: 1 file

## Backend (packages/cindy-tools)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (packages/cindy-tools)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 1 file

## Support (packages/design-tokens)

### Validation

- **@terrazzo/parser**: 2 files

### Testing

- **Vitest**: 5 files

### Tools

- **@terrazzo/cli**: 1 file
- **TypeScript**: 1 file

## Support (packages/device-link-relay)

### Testing

- **Vitest**: 4 files

### Tools

- **esbuild**: 1 file

### Other

- **ws**: 3 files

## Backend (packages/device-link-sharing)

### Sign-in

- **[jose](https://seerepo.com/uses/jose)**: 1 file

## Support (packages/device-link)

### Testing

- **Vitest**: 60 files

## Support (packages/file-browser-core)

### Testing

- **Vitest**: 5 files

### Tools

- **ignore**: 1 file

## Support (packages/lizi-im)

### Testing

- **Vitest**: 58 files

### Other

- **@larksuiteoapi/node-sdk**: 3 files
- **discord.js**: 2 files
- **@wecom/aibot-node-sdk**: 1 file
- **dingtalk-stream**: 1 file

## Backend (packages/lizi-mcps)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 16 files · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (packages/lizi-mcps)

### Content

- **[docx](https://seerepo.com/uses/docx)**: 2 files
- **[entities](https://seerepo.com/uses/entities)**: 2 files
- **[pptxgenjs](https://seerepo.com/uses/pptxgenjs)**: 2 files
- **[sharp](https://seerepo.com/uses/sharp)**: 2 files
- **[exceljs](https://seerepo.com/uses/exceljs)**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 130 files

### Testing

- **Vitest**: 77 files

### Other

- **jszip**: 2 files
- **undici**: 1 file

## Support (packages/maker-cc-manager)

### Testing

- **Vitest**: 9 files

### Tools

- **esbuild**: 1 file

## Backend (packages/maker-core)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 3 files · [apps/desktop/src/main/localDb/betterSqliteFactory.ts, line 5](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/src/main/localDb/betterSqliteFactory.ts#L5)

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [packages/maker-core/src/agents/claude-code/index.ts, line 36](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/maker-core/src/agents/claude-code/index.ts#L36)

## Support (packages/maker-core)

### Content

- **[gray-matter](https://seerepo.com/uses/gray-matter)**: 3 files
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Testing

- **Vitest**: 212 files
- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Tools

- **TypeScript**: 10 files

### Other

- **diff**: 1 file

## Support (packages/maker-pi-manager)

### Testing

- **Vitest**: 9 files

### Tools

- **esbuild**: 1 file

## Support (packages/maker-remote-ssh)

### Testing

- **Vitest**: 16 files

### Other

- **ssh2**: 4 files
- **ssh-config**: 1 file

## Support (packages/maker-scheduler)

### Testing

- **Vitest**: 9 files

## Support (packages/maker-shared)

### Content

- **[parse5](https://seerepo.com/uses/parse5)**: 3 files

### Testing

- **Vitest**: 115 files

## Support (packages/model-compat)

### Testing

- **Vitest**: 15 files

## Support (packages/model-providers)

### Testing

- **Vitest**: 62 files

## Support (packages/opencli-vendor)

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 4 files
- **[turndown](https://seerepo.com/uses/turndown)**: 2 files
- **[@mozilla/readability](https://seerepo.com/uses/mozilla-readability)**: 1 file
- **[turndown-plugin-gfm](https://seerepo.com/uses/turndown-plugin-gfm)**: 1 file

### Testing

- **Vitest**: 1 file

### Tools

- **commander**: 9 files
- **acorn**: 1 file
- **cli-table3**: 1 file

### Other

- **ws**: 2 files
- **undici**: 1 file

## Backend (packages/orca-workflow)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

## Support (packages/orca-workflow)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 2 files

## Support (packages/plugin-protocol)

### Testing

- **Vitest**: 17 files

## Support (packages/project-context)

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 3 files
- **[gray-matter](https://seerepo.com/uses/gray-matter)**: 2 files

### Tools

- **commander**: 1 file
- **ignore**: 1 file
- **simple-git**: 1 file

### Other

- **chalk**: 4 files
- **micromatch**: 2 files

## Support (packages/remote-file-service)

### Testing

- **Vitest**: 3 files

### Tools

- **esbuild**: 1 file

## Support (packages/responses-anthropic-bridge)

### Testing

- **Vitest**: 4 files

## Support (packages/responses-chat-bridge)

### Testing

- **Vitest**: 7 files

## Support (packages/slack-hook-protocol)

### Testing

- **Vitest**: 16 files

## Support (packages/voice-input-core)

### Testing

- **Vitest**: 22 files

## Support (packages/wechat-ilink)

### Testing

- **Vitest**: 2 files

## Support (prototypes/agent-net-spike)

### The base

- **[Tokio](https://seerepo.com/uses/tokio)**: 2 files

### Tools

- **esbuild**: 1 file

### Other

- **iroh**: 2 files
- **ws**: 2 files
- **anyhow**: 1 file

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): SQLite, MCP, React, Vite, electron-store, Electron, Anthropic, PostCSS, Tailwind CSS, tailwind-merge, Radix UI, tiptap, CodeMirror, TanStack, @lezer/highlight, Lucide, Drizzle, @earendil-works/pi-ai, unified, unist-util-visit, gray-matter, sharp, remark-parse, remark-gfm, qrcode, pdfjs-dist, html-to-image, katex, remark-math, Zod, docx, exceljs, turndown, @mozilla/readability · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/makecindy/cindy)
- [multica-ai/multica](https://seerepo.com/r/multica-ai/multica/built): React, react-router-dom, Electron, react-native, Expo, expo-secure-store, fontsource-variable, PostCSS, Tailwind CSS, tailwind-merge, tiptap, TanStack, Mermaid, lowlight, unist-util-visit, remark-gfm, react-markdown, katex, marked, rehype-katex, remark-cjk-friendly, remark-math, Zod, react-native-safe-area-context, react-native-reanimated, react-native-svg, expo-image, react-native-gesture-handler, expo-image-picker, expo-document-picker, entities · [Compare](https://seerepo.com/compare/makecindy/cindy/vs/multica-ai/multica)
- [cline/cline](https://seerepo.com/r/cline/cline/built): SQLite, MCP, React, Vite, Anthropic, Tailwind CSS, tailwind-merge, Radix UI, Mermaid, Lucide, unified, unist-util-visit, js-yaml, remark-gfm, react-markdown, marked, rehype-highlight, Zod, exceljs, turndown · [Compare](https://seerepo.com/compare/cline/cline/vs/makecindy/cindy)
- [aaif-goose/goose](https://seerepo.com/r/aaif-goose/goose/built): MCP, React, Vite, Electron, Tokio, Tailwind CSS, tailwind-merge, Radix UI, TanStack, Lucide, remark-gfm, qrcode, react-markdown, katex, rehype-katex, remark-math, Zod, electron-squirrel-startup, zip, turndown · [Compare](https://seerepo.com/compare/aaif-goose/goose/vs/makecindy/cindy)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): MCP, React, react-router-dom, Vite, Tokio, Anthropic, Tailwind CSS, tailwind-merge, Radix UI, CodeMirror, xterm, Mermaid, @lezer/highlight, Lucide, Drizzle, sharp, remark-gfm, react-markdown, Zod · [Compare](https://seerepo.com/compare/makecindy/cindy/vs/paperclipai/paperclip)
- [NousResearch/hermes-agent](https://seerepo.com/r/NousResearch/hermes-agent/built): React, Vite, Electron, Tokio, Tauri, Tailwind CSS, tailwind-merge, Radix UI, CodeMirror, xterm, Lucide, unified, js-yaml, qrcode, katex, remark-math, Zod · [Compare](https://seerepo.com/compare/makecindy/cindy/vs/NousResearch/hermes-agent)

## Frequently asked questions

### What language is cindy written in?

cindy is written in TypeScript, with 4,695,566 written lines.

### What framework does cindy use?

cindy is built with React, react-router-dom, Vite, Electron, Tokio, Tauri, react-native, Expo, androidx.core:core, com.facebook.react:react-android, and expo-modules-core.

The proof: [in apps/desktop/package.json](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/package.json)

### What database does cindy use?

cindy stores its data in SQLite and reaches it with Drizzle.

The proof: [apps/desktop/src/main/localDb/betterSqliteFactory.ts, line 5](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/apps/desktop/src/main/localDb/betterSqliteFactory.ts#L5)

### What does cindy sign people in with?

cindy signs people in with jose, jwcrypto, expo-apple-authentication, com.nimbusds:nimbus-jose-jwt, and androidx.biometric:biometric.

### Does cindy use AI?

Yes. cindy uses AI through @earendil-works/pi-ai, onnxruntime-android, and Anthropic.

### What services does cindy use?

cindy uses MCP, electron-store, @react-native-async-storage/async-storage, expo-secure-store, and Firebase.

The proof: [packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts, line 51](https://github.com/makecindy/cindy/blob/0bd0aa2c0dcff18366530e4aca6c749fe2a98138/packages/lizi-mcps/src/lizi_xdtHelperMcpServer.ts#L51)

### Does cindy have tests?

Yes. cindy has 6,296 test files and is tested with playwright-core, Vitest, and Testing Library.

### Which repos have a stack like cindy's?

The ones that share most of its stack: CherryHQ/cherry-studio, multica-ai/multica, and cline/cline.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
