This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Kunkun is a cross-platform desktop application built with Tauri (Rust backend) and SvelteKit (frontend). It's an extensible launcher/utility app that supports custom extensions developed in various web frameworks.
pnpm install- Install all dependenciespnpm build- Build all packages and submodulespnpm dev- Start development servers for all packagespnpm lint- Run linting across all packagespnpm test- Run tests across all packagespnpm check-types- Run TypeScript type checkingpnpm format- Format code with Prettier
pnpm --filter @kksh/desktop tauri dev- Run desktop app in development modecd apps/desktop && pnpm tauri dev- Alternative way to run desktop appcd apps/desktop && pnpm tauri build- Build desktop app for production
- Node.js ≥22
- pnpm 10.7.0+ (package manager)
- Rust (for Tauri backend)
- Bun, Deno (for various tools)
- protobuf (
brew install protobufon macOS) - cmake (
brew install cmakeon macOS)
- apps/: Main applications
desktop/: Primary Tauri desktop app (SvelteKit frontend + Rust backend)cli/: Command-line interfacecreate-kunkun/: Scaffolding tool for extensions
- packages/: Shared libraries and utilities
ui/: Shared UI componentstypes/: TypeScript type definitionsextension/: Extension development frameworkdrizzle/: Database ORM setuptauri-plugins/: Custom Tauri pluginstemplates/: Extension templatesextensions/: Sample/demo extensions
- vendors/: Third-party dependencies and custom plugins
- Frontend: SvelteKit 2 with TypeScript, TailwindCSS, Vite
- Backend: Rust with Tauri 2.x framework
- Database: SQLite with Drizzle ORM
- Build System: Turbo (monorepo orchestration) + pnpm workspaces
- UI Framework: Custom component library built on Tailwind + Radix
- Extensions can be built with React, Vue, Svelte, SvelteKit, Nuxt, or vanilla JS
- Templates available in
packages/templates/for each framework - Extensions run in isolated contexts with permission-based APIs
- Custom Tauri plugins provide system access (clipboard, fs, network, etc.)
- Custom Tauri plugins for extended functionality:
tauri-plugin-jarvis: Core extension runtimetauri-plugin-network: Network operationstauri-plugin-system-info: System informationtauri-plugin-user-input: Input handlingtauri-plugin-keyring: Secure credential storage
- gRPC communication for some internal services
- Cross-platform support with platform-specific dependencies
git clone https://github.com/kunkunsh/kunkun.git --recursive
pnpm install
pnpm build # Build submodules first- Use
apps/create-kunkunto scaffold new extensions - Extension templates are in
packages/templates/ - Test extensions in the desktop app's extension manager
- Uses Drizzle ORM with SQLite backend
- Database package located in
packages/drizzle/ - Migrations and schema definitions managed through Drizzle
- ESLint configuration in
packages/config-eslint/ - TypeScript config in
packages/typescript-config/ - Prettier for code formatting
turbo lintandturbo check-typesrun across all packages
- Turbo orchestrates builds across the monorepo
- Each package defines its own build scripts
- Dependencies built in topological order via
dependsOnin turbo.json
- Requires additional security permissions for system access
mac-security-rspackage handles platform-specific APIs- Uses private macOS APIs for enhanced functionality
- Most packages use workspace dependencies for internal packages
- External dependencies centrally managed in root package.json
- Rust dependencies managed via workspace Cargo.toml
Extensions have access to:
- File system APIs (through Tauri plugins)
- Network requests
- Clipboard operations
- System information
- Secure storage (keyring)
- UI components from shared library
The extension system supports both headless (worker) extensions and full UI extensions with multiple framework options.