Skip to content

fairyshine/OpenBunny

Repository files navigation

🐰 OpenBunny β€” Cross-platform Personal AI Assistant

A cross-platform personal AI assistant that runs on multiple platforms (browser, desktop, mobile, CLI, terminal UI).

πŸš€ Quick Start

Visit https://fairyshine.github.io/OpenBunny/ and enjoy!

Exec sudo xattr -rd com.apple.quarantine /Applications/OpenBunny.app after installing on Mac.

✨ Features

  • 🌐 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

πŸ“¦ Monorepo Structure

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)

πŸ“š Documentation

πŸ§ͺ Development

Dependency Management (pnpm Strict Mode)

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.

Type Checking

pnpm typecheck

Linting

pnpm lint

πŸ”’ Privacy & Security

  • βœ… All data stored locally
  • βœ… No user data uploaded
  • βœ… API keys stored locally with encryption
  • βœ… Self-hosted CORS proxy supported

🀝 Contributing

Contributions, bug reports, and suggestions are welcome!

πŸ“„ License

MIT License

πŸ™ Acknowledgements


OpenBunny - A truly cross-platform personal AI assistant 🐰

About

Your own personal AI assistant like openclaw in everywhere. The rabbit way. 🐰

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors