A cross-platform personal AI assistant that runs on multiple platforms (browser, desktop, mobile, CLI, terminal UI).
Visit https://fairyshine.github.io/OpenBunny/ and enjoy!
Exec sudo xattr -rd com.apple.quarantine /Applications/OpenBunny.app after installing on Mac.
- π Multi-platform - Browser / Electron / React Native / CLI / TUI
- π₯οΈ Shell Control - Operate your Computer in shell (support in Desktop)
- π§ Tool System - Built-in Python execution, shell command execution (Desktop), file management, web search, and more
- π― Skill System - Extensible skills based on the AgentSkills.io format
- π MCP Support - Model Context Protocol integration
- π i18n - Chinese / English bilingual support
- πΎ Local Storage - All data stored locally for privacy
- π¨ Modern UI - Built with React 19 + Tailwind CSS + shadcn/ui
openbunny/
βββ packages/
β βββ shared/ # Platform-agnostic core logic
β βββ web/ # Browser (Vite + React)
β βββ desktop/ # Desktop (Electron)
β βββ mobile/ # Mobile (React Native)
β βββ cli/ # CLI tool (Commander.js)
β βββ tui/ # Terminal UI (Ink - React for CLI)
βββ worker/ # Cloudflare Worker (CORS proxy)
This project uses pnpm workspace in strict mode: each package can only access dependencies explicitly declared in its own package.json.
Since workspace packages like shared and ui-web are consumed as source code ("main": "./src/index.ts", not compiled artifacts), Vite processes their source directly during builds. This means their import statements are resolved from the consumer's (e.g., web, desktop) node_modules.
Therefore, web and desktop must explicitly declare transitive dependencies from shared / ui-web (such as Radix UI, i18next, zustand, etc.), even if their own source code doesn't directly import them.
web/desktop source
β import { Foo } from '@openbunny/ui-web' # workspace source reference
β ui-web source import '@radix-ui/react-dialog' # transitive dependency
β Vite resolves from web/desktop node_modules # must be declared in strict mode
Note: Do not remove seemingly "redundant" dependencies from
web/desktop, or the build will fail. These can be removed if workspace packages are later published as compiled artifacts.
pnpm typecheckpnpm lint- β All data stored locally
- β No user data uploaded
- β API keys stored locally with encryption
- β Self-hosted CORS proxy supported
Contributions, bug reports, and suggestions are welcome!
MIT License
- friends from https://www.feedscription.com
- All open-source repo
OpenBunny - A truly cross-platform personal AI assistant π°