https://github.com/dushaobindoudou/ovo
Open-source proactive AI desktop assistant for macOS. Watches your screen, suggests next steps, and runs actions for you — even on a schedule — 100% on your machine.
https://github.com/dushaobindoudou/ovo
ai-assistant automation claude claude-code desktop-app electron knowledge-graph llm local-first macos personal-ai privacy-first proactive-ai productivity react screen-ocr typescript
Last synced: 11 days ago
JSON representation
Open-source proactive AI desktop assistant for macOS. Watches your screen, suggests next steps, and runs actions for you — even on a schedule — 100% on your machine.
- Host: GitHub
- URL: https://github.com/dushaobindoudou/ovo
- Owner: dushaobindoudou
- License: mit
- Created: 2026-04-14T16:29:04.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-01T02:24:05.000Z (21 days ago)
- Last Synced: 2026-06-01T04:15:19.327Z (21 days ago)
- Topics: ai-assistant, automation, claude, claude-code, desktop-app, electron, knowledge-graph, llm, local-first, macos, personal-ai, privacy-first, proactive-ai, productivity, react, screen-ocr, typescript
- Language: TypeScript
- Homepage: https://github.com/dushaobindoudou/ovo#readme
- Size: 18.8 MB
- Stars: 6
- Watchers: 0
- Forks: 0
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README

# Ovo
### Open-source proactive AI desktop assistant.
Watches your screen, suggests next steps, runs 100% on your machine.
English · 简体中文
⬇ Download for macOS ·
📖 Philosophy ·
💬 Discussions ·
🤝 Contributing
---
A quick tour: Ovo watches your screen, prepares the next steps, remembers what matters, and logs every action — all auditable. (watch MP4)
---
## 🪟 What is Ovo?
**Ovo is a proactive AI desktop assistant that watches what you're doing — and helps before you have to ask.**
Most AI tools today wait for you to type a prompt. Ovo flips that:
- It **observes your screen** every few seconds (OCR + window context).
- It **understands your intent** through a multi-pass reasoning pipeline with a long-term knowledge graph.
- It **suggests the next step proactively** — drafting an email reply, copying a snippet, reminding you of a deadline.
- It **shows you every step of its thinking** in a glass-box timeline — no magic, no black box.
- And it **learns from your feedback** — accept, reject, or teach Ovo to never do that again.
Built for people who want an AI that's actually present in their day — without giving up control, transparency, or privacy.
---
## ✨ Why Ovo? — The 5 things that make Ovo different
### 🚀 Proactive, not reactive
While ChatGPT waits for you to type, Ovo notices you're drafting an email to a customer and **silently prepares the reply** before you ask. You see the suggestion, decide whether to use it. Zero prompting overhead.
### 🪟 Glass-box transparency
Every other AI is a black box. Ovo shows you:
- 📸 What it saw (the OCR text from your screen)
- 🧠 What it thought (the full prompt sent to the LLM)
- 💡 What it decided (the structured suggestion + confidence)
- ⚡ What it did (every action with output and duration)
Click any suggestion → see its full reasoning chain. No more "why did the AI say that?"
### 🎓 Teachable, not opinionated
Don't like a suggestion? You can:
- **Reject this one** — Ovo remembers and won't repeat the mistake
- **"Never do this again"** — Ovo writes the rule into its knowledge graph
- **Adjust trust level** — give Ovo more or less autonomy per action type
Ovo gets smarter from your feedback, not from cloud telemetry.
### 🔒 Local-first, BYO LLM
- Screenshots and OCR happen on **your machine** — they never leave
- Bring your own Claude / OpenAI / local LLM key — no proxy server
- Built-in sensitive data redaction (API keys, JWT, credit cards, ID numbers)
- App-level blacklist (1Password, banking apps, etc. — never observed)
- Hard pause (5/15/60 min) when you need privacy
### 🧠 Long memory through a knowledge graph
Ovo builds a personal knowledge graph as you work:
- **Entities** (people, projects, documents, concepts)
- **Relationships** between them
- **Memory events** with timeline + intent tagging
- **Personality profile** that evolves with your patterns
Open the Memory panel to see exactly what Ovo knows about you. Edit it. Pin important entities. Delete anything you don't want remembered.
---
## 🆚 Ovo vs. Other AI Tools
| | ChatGPT Desktop | Rewind | Cursor | Granola | **Ovo** |
|--------------------------|:---------------:|:-------:|:------------:|:-------:|:-------:|
| Proactive (no prompting) | ❌ | ❌ | Partial (IDE only) | Partial (meetings only) | ✅ |
| Screen-aware | ❌ | ✅ (record only) | ✅ (IDE only) | ✅ (audio only) | ✅ |
| Transparent reasoning | ❌ | N/A | ❌ | ❌ | ✅ |
| Teachable per-action | ❌ | ❌ | Partial | ❌ | ✅ |
| Local-first / BYOK | ❌ | Partial | ❌ | ❌ | ✅ |
| Open source | ❌ | ❌ | ❌ | ❌ | ✅ |
| Knowledge graph memory | ❌ | ❌ | ❌ | ❌ | ✅ |
---
## 📥 Install
### Option 1: Download (recommended)
> **First launch on macOS**: until we ship a signed/notarized build, you'll see "Ovo can't be opened because the developer cannot be verified". Right-click the app → Open → Open. Only needed once.
> **Windows / Linux**: planned for v0.5+. Star the repo to get notified.
### Option 2: Build from source
```bash
git clone https://github.com/dushaobindoudou/ovo.git
cd ovo
pnpm install
pnpm dev # Dev mode (Vite + Electron live-reload)
# or
pnpm pack:mac # Build production DMG to out/
```
**Requirements**: Node 20+, pnpm 10+, macOS (Apple Silicon or Intel)
### First-run setup
1. **Grant screen recording permission** — Ovo will guide you to System Settings
2. **Configure your AI backend** — choose Claude Code / OpenClaw / Hermes / direct API
3. **Set your API key** (encrypted with macOS Keychain, never sent anywhere)
4. **Tell Ovo about you** — optional 4-step onboarding to seed the knowledge graph
That's it. Within 1-2 minutes Ovo will start observing and suggesting.
---
## 🖼️ Screenshots
| Console — "Now" view | Floating companion (always on top) | Teachable feedback |
|---|---|---|
|
|
|
|
| Knowledge graph (Memory) | Action replay (transparent reasoning) | Settings — privacy panel |
|---|---|---|
|
|
|
|
---
## 🏗 Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ Renderer (React + Zustand) │
│ ┌──────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ Main Console │ │ Floating Icon │ │ Suggestion │ │
│ │ (#console) │ │ (#float) │ │ Panel/Toast │ │
│ └──────┬───────┘ └───────┬────────┘ └───────┬────────┘ │
└─────────┼──────────────────┼───────────────────┼───────────┘
│ IPC (preload.cjs, context-isolated)
┌─────────▼──────────────────▼───────────────────▼───────────┐
│ Electron Main Process │
│ ┌──────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ AutoCapture │→ │ OCR Engine │→ │ Event Processor│ │
│ │ (5s) │ │ (Tesseract) │ │ (intent infer) │ │
│ └──────────────┘ └────────────────┘ └───────┬────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Multi-Pass Prompt Engine │ │
│ │ Pass 1: Observe (intent + entities) │ │
│ │ Pass 2: Synthesize (predictions + actions) │ │
│ └────────────┬─────────────────────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Agent Bridge (Claude Code / OpenClaw / Hermes / API) │ │
│ └────────────┬─────────────────────────────────────────┘ │
│ ▼ │
│ ┌──────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ Knowledge │ │ Action │ │ Feedback │ │
│ │ Graph (SQL) │ │ Executor │ │ Engine │ │
│ └──────────────┘ └────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
**Tech stack**: Electron 34 · React 19 · TypeScript · Vite · Tailwind · better-sqlite3 · Tesseract.js · Zustand
See [`docs/product/PRODUCT_PHILOSOPHY.md`](docs/product/PRODUCT_PHILOSOPHY.md) for the design philosophy and [`docs/engineering/ELECTRON_IPC_MAPPING.md`](docs/engineering/ELECTRON_IPC_MAPPING.md) for IPC contracts.
---
## 🗺 Roadmap
**Shipped** ✅
- Multi-pass prompt engine (observe → synthesize)
- 4 AI backends (Claude Code / OpenClaw / Hermes / direct API)
- Knowledge graph with entities / relationships / memory events
- Pipeline transparency (every step logged + queryable)
- Privacy controls (pause, blacklist, sensitive data redaction)
- Prompt self-eval (Ovo reflects on its own pipeline quality)
- First-run setup checklist + First Win onboarding
- **Scheduled actions** — defer an action to a time / daily / weekly (sends still confirm at fire time)
- **Teachable feedback** — reject with a reason; view & revoke every rule you've taught it
- **Outputs acceptance station** — status per deliverable, retry/abandon failed ones
- **Memory correction** — rename entities, "delete & never record" sensitive ones
- **North-star metrics dashboard** (TTFV, hit rate, corrections, output completion) — 100% local
- Full bilingual UI (简体中文 / English)
**In Progress** 🚧
- Trust ladder UI (per-action autonomy levels: show → draft → confirm → auto + 5s undo → full delegation)
- Glass butler floating window (real-time "Ovo is doing X because Y" with [Let it] [Don't] [Never again] buttons)
- AI behavior timeline as the main view (currently buried in a second-level panel)
**Planned** 🔮
- Windows + Linux support
- Plugin/extension system
- macOS Notarization + auto-updates
See [open milestones](https://github.com/dushaobindoudou/ovo/milestones) for what's coming next.
---
## 📚 Documentation
### Start here
| Doc | What it's for |
|---|---|
| [`AGENT_PHILOSOPHY.md`](docs/product/AGENT_PHILOSOPHY.md) | **The big idea.** Two kinds of agents (tool vs copilot) and why Ovo is the underbuilt kind |
| [`PRODUCT_PHILOSOPHY.md`](docs/product/PRODUCT_PHILOSOPHY.md) | The project constitution — read before contributing to product direction |
| [`PRODUCT_EXPERIENCE_BACKLOG.md`](docs/product/PRODUCT_EXPERIENCE_BACKLOG.md) | Current product execution backlog: activation, trust, feedback, outputs |
| [`USE_CASES.md`](docs/product/USE_CASES.md) | 10 concrete moments where a copilot earns its keep |
| [`PRIVACY.md`](docs/product/PRIVACY.md) | What Ovo collects (and doesn't) — full data flow audit |
### Building / using
| Doc | What it's for |
|---|---|
| [`ARCHITECTURE.md`](docs/engineering/ARCHITECTURE.md) | Deep technical architecture — process topology, data flow, KG schema, IPC contract |
| [`AI_BACKENDS.md`](docs/engineering/AI_BACKENDS.md) | 4 backend choices (Claude Code / OpenClaw / Hermes / Direct API) — setup + trade-offs |
| [`ELECTRON_IPC_MAPPING.md`](docs/engineering/ELECTRON_IPC_MAPPING.md) | IPC channels and payload contracts |
| [`RELEASE_PROCESS.md`](docs/operations/RELEASE_PROCESS.md) | How we ship a release |
### Project state
| Doc | What it's for |
|---|---|
| [`UNRESOLVED_ISSUES.md`](docs/UNRESOLVED_ISSUES.md) | Current unresolved engineering/product issues |
| [`GITHUB_GROWTH_PLAN.md`](docs/operations/GITHUB_GROWTH_PLAN.md) | 90-day path from 0 to 1k stars |
| [`GOOD_FIRST_ISSUES.md`](docs/operations/GOOD_FIRST_ISSUES.md) | Ready-to-grab beginner tasks |
| [`archive/`](docs/archive/README.md) | Historical audits, old specs, and outdated status snapshots |
---
## 💬 Community
We're building Ovo in the open. Come help us shape it:
- 🐙 **[GitHub Discussions](https://github.com/dushaobindoudou/ovo/discussions)** — questions, ideas, show & tell
- 🐛 **[Issue tracker](https://github.com/dushaobindoudou/ovo/issues)** — bugs and feature requests
- 🐦 **[Twitter @dushaobin](https://twitter.com/dushaobin)** — build-in-public updates
- 💚 **WeChat group** (中文社区) — see README_CN.md for QR code
---
## 🤝 Contributing
Contributions are warmly welcomed — from typo fixes to new features.
- **First-time contributor?** Look for [`good first issue`](https://github.com/dushaobindoudou/ovo/labels/good%20first%20issue) — each one comes with full context, file pointers, and acceptance criteria.
- **Got a bigger idea?** Open a [Discussion](https://github.com/dushaobindoudou/ovo/discussions) first so we can align on direction.
- **Pull request?** See [`CONTRIBUTING.md`](CONTRIBUTING.md) for dev setup, code style, and PR workflow.
Every external PR gets a review within 24 hours and a Twitter thank-you. 🙏
---
## 🔐 Security
Found a vulnerability? Please **do not** open a public issue. See [`SECURITY.md`](SECURITY.md) for our responsible disclosure process.
---
## 💖 Support
If Ovo saves you time, consider supporting development:
- ⭐ [Star this repo](https://github.com/dushaobindoudou/ovo) — the cheapest way to help
- 🐦 [Share on Twitter](https://twitter.com/intent/tweet?text=Check%20out%20Ovo%20%E2%80%94%20open-source%20proactive%20AI%20desktop%20assistant&url=https://github.com/dushaobindoudou/ovo)
- ☕ [Buy me a coffee](https://ko-fi.com/dushaobin) (international) or [爱发电](https://afdian.com/a/dushaobin) (China)
- 🤝 [Contribute](CONTRIBUTING.md) code, docs, translations, or designs
---
## 📜 License
[MIT](LICENSE) © 2026 dushaobin
Ovo is and will always be **open source and free for personal use**. Commercial fork friendly under MIT.
---
## 🙏 Acknowledgements
Ovo stands on the shoulders of giants:
- [**Electron**](https://www.electronjs.org/) — desktop runtime
- [**React**](https://react.dev/) — UI framework
- [**Anthropic Claude**](https://www.anthropic.com/) — default AI backend
- [**Tesseract.js**](https://tesseract.projectnaptha.com/) — OCR engine
- [**better-sqlite3**](https://github.com/WiseLibs/better-sqlite3) — knowledge graph storage
- [**Lucide**](https://lucide.dev/) — icon library
- [**Tailwind CSS**](https://tailwindcss.com/) — styling
- And every contributor whose name will appear here ❤️
---
## ⭐ Star History
---
**Built with care by [@dushaobindoudou](https://github.com/dushaobindoudou) and the Ovo community.**
If this project resonates with you — please star it. It really helps a lot. ⭐