An open API service indexing awesome lists of open source software.

https://github.com/moyangzhan/mango-desk

Search your files using nature language
https://github.com/moyangzhan/mango-desk

ai-search file-content-search sematic-search vector-search

Last synced: 4 months ago
JSON representation

Search your files using nature language

Awesome Lists containing this project

README

          

[English](./README.md) | [ไธญๆ–‡](./README_CN.md)

# Mango Desk

**๐Ÿฅญ Awake your data**

![image](./screenshots/work.png)

[![Download](./screenshots/download-ready.svg)](https://github.com/moyangzhan/mango-desk/releases)

## What is Mango Desk?

Mango Desk is a local-first desktop app for searching your local documents with natural language.

It helps you find information based on what you remember, not file names or folder structures.

![search](./screenshots/search.gif)

### ๐Ÿ“Œ Use Cases

Mango Desk is especially useful in scenarios where you have **a large amount of local documents** and want to retrieve information using natural language.

#### Typical Use Cases

- ๐Ÿ“ **Personal Document Libraries**
- Years of accumulated notes, PDFs, Word files, Markdown files. etc
- Example: *โ€œThat note where I summarized Rust ownership rulesโ€*

- ๐Ÿ“‚ **SVN / Git Repositories**
- Search through design docs, READMEs, technical proposals, and historical solutions
- Example: *โ€œWhere is the document about the permission refactor?โ€*

- ๐Ÿข **Team or Company Knowledge Base**
- Internal documents, project docs, meeting notes, onboarding materials
- Example: *"Find all Q4 meeting notes about budget planning"*
- Example: *"What are the company policies regarding remote work?"*

- ๐Ÿ“š **Research and Study Materials**
- Papers, experiment records, literature notes
- Example: *โ€œWhat is the latest research on AI?โ€*

- โš–๏ธ **Legal and Financial Documents**
- Contracts, policy documents, reports
- Example: *โ€œWhat is the latest company policy on data privacy?โ€*

### โœจ Features

- ๐Ÿ’ญ **Search by meaning, not file names**
- Find documents by describing what you remember, even if you donโ€™t recall exact titles or locations

- ๐Ÿ“ **Search by path**
- Find documents by multiple keywords if you remember some pecific parts of the file path

- ๐Ÿ“‚ **Works with your existing local files**
- No need to reorganize folders or rename files โ€” Mango Desk works with what you already have

- ๐Ÿ‘€ **Real-time file & directory watching**
- Automatically detects file and folder changes (add / modify / delete) and keeps index and search results up to date

- โšก **Fast and lightweight**
- Instant search results without slowing down your system

- ๐Ÿ”’ **Private by default**
- All data stays on your device, ensuring your privacy

### ๐Ÿ—๏ธ Architecture

**Indexing**

![indexing](./screenshots/mango-desk-indexing.png)

`The self-hosted model part is under development and will be integrated according to the ollama interface.`

**Search**

![search](./screenshots/mango-desk-search.png)

### ๐Ÿ› ๏ธ Technology Stack

* Frontend
* WebView๏ผˆTauri๏ผ‰
* PNPM
* Node.js
* Backend
* Rust
* Tauri Core

## ๐Ÿš€ Setting Up

### 1. Frontend
#### Node
`node` v20+ required

It is recommended to use [nvm](https://github.com/nvm-sh/nvm) to manage multiple `node` versions.

#### PNPM

`pnpm` v9+ required

If you haven't installed `pnpm`, you can install it with the following command:

```shell
npm install pnpm -g
```

#### Install dependencies

```sh
pnpm i
```

### 2. Backend(Rust)
`rust` v1.90.0+ required

Install tools: [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install)

### 3. Tauri

Install Tauri Prerequisites:
[https://tauri.app/start/prerequisites/](https://tauri.app/start/prerequisites/)

## โ–ถ๏ธ Development Run

A Tauri app has at least [two processes](https://tauri.app/concept/process-model/):

- the Core Process (`backend`)
- the WebView process (`frontend`)

Both backend and frontend start with a single command:

```sh
pnpm tauri dev
```

## ๐Ÿ“ฆ Building

```sh
pnpm tauri build
```

After building, the executable file is usually located in `src-tauri/target/release/`.

windows: `src-tauri/target/release/bundle/msi/Mango Desk_0.1.0_x64_en-US.msi`

## โ“ FAQ
### Q: How does Mango Desk ensure data privacy?

A: Mango Desk follows a local-first architecture to ensure data privacy:

#### Local Data Processing
- All document indexing and search operations are performed locally on your device
- No data is transmitted to external servers during normal operation

#### Exception Cases
- Only when processing images or audio files, remote models may be used (if enabled)
- These remote models are disabled by default and must be manually enabled by users

#### Data storage
- All user data remains on the local device by default

#### Architecture Details
As shown in the architecture diagram above, the entire processing pipeline is designed to keep data local, ensuring maximum privacy and security.

### Q: Why are so many models used in the code?

A: The codebase includes multiple models serving different purposes:

#### 1. Active Local Models (Enabled by Default)
- `bge-base-*`
- These models run locally on users' computers for basic document processing
- Prioritized for privacy and performance

#### 2. Remote Models (Optional)
- `gpt-5-mini` and `gpt-4o-mini-transcribe`
- Designed for image and audio parsing
- Disabled by default, can be enabled if needed
- Note: We plan to replace these with local alternatives when available
- Kept as optional features for self-hosting scenarios

#### 3. Reserved Models (Future Features)
- `qwen-turbo`, `deepseek-chat`, and `deepseek-reasoner`
- Prepared for upcoming features like:
- Knowledge graph generation
- Advanced document analysis
- Also serves as a foundation for developers who want to customize with these models
- Maintains flexibility for future feature expansion

## ๐Ÿ“ License

see the [LICENSE](LICENSE) file for details.

## ๐Ÿค Contributing

Contributions of all kinds are welcome, including but not limited to:
* ๐Ÿ› Reporting bugs
* ๐Ÿ’ก Suggesting new features or improvements
* ๐Ÿ“– Improving documentation
* ๐Ÿ”ง Submitting code (pull requests)

Before submitting a pull request, please consider:
1. Fork this repository
1. Create a new branch (git checkout -b feature/xxx)
1. Ensure pnpm tauri dev runs successfully locally
1. Commit changes (git commit -m 'feat: xxx')
1. Push the branch (git push origin feature/xxx)
1. Submit a Pull Request

## โญ Support the Project

Support Mango Desk if you find it helpful:
- Starring the repository on GitHub
- Recommending it to others
- Sharing your experience