Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
f42a903
Create README.md
dmayboroda Nov 3, 2024
24f8d86
Update README.md
dmayboroda Nov 3, 2024
5001dbd
Update README.md
dmayboroda Nov 3, 2024
b10c766
Update README.md
kozyrevsergey89 Nov 3, 2024
c0d8297
Update README.md
kozyrevsergey89 Nov 3, 2024
7f571c9
feat: fully local chat with RAG
dmayboroda Nov 18, 2024
0702a82
Update README.md
dmayboroda Nov 18, 2024
6f8b213
Update README.md
dmayboroda Nov 18, 2024
64f1c65
Update README.md
dmayboroda Nov 18, 2024
c0a239c
Update README.md
dmayboroda Nov 18, 2024
2f2fa22
Update README.md
dmayboroda Nov 18, 2024
9a45d52
Create LICENSE
dmayboroda Nov 19, 2024
50255aa
introduced direct custom gpt integration. removed firebase folder, no…
Nov 21, 2024
866af04
Update docker-compose-ollama.yml
dmayboroda Nov 21, 2024
57087d2
Update README.md
dmayboroda Nov 21, 2024
b415f92
feat: added simple ui for fully local solution
dmayboroda Nov 22, 2024
0d48b80
feat: chat ui for websocket api
dmayboroda Nov 26, 2024
ac3dd3d
Update README.md
dmayboroda Nov 26, 2024
6d7ee0d
Update README.md
dmayboroda Nov 26, 2024
a4be87c
feat: chat ui in docker container running from docker compose
dmayboroda Nov 27, 2024
8f4368f
Update README.md
dmayboroda Nov 27, 2024
001ce95
fix: chat ui run; sh for change runtime type
dmayboroda Nov 27, 2024
5be428d
fix: starting indexing problem
dmayboroda Nov 27, 2024
5f116bb
feat: reranker, ui changes
dmayboroda Nov 27, 2024
b16751c
fix: model loading while the docker containers build
dmayboroda Nov 27, 2024
c150fc7
fix: updated Readme with rerank model
dmayboroda Nov 27, 2024
2bd48f1
fix: updated Readme with rerank model
dmayboroda Nov 27, 2024
e069962
chore: update async_queue.py
eltociear Nov 29, 2024
52803ce
Merge pull request #9 from eltociear/patch-1
dmayboroda Nov 30, 2024
c911a48
feat: MCP connection
dmayboroda Dec 1, 2024
4fae3a8
fix: MCP readme
dmayboroda Dec 1, 2024
11356a7
fix: MCP readme
dmayboroda Dec 1, 2024
ac47535
feat: setup Ollama llm model and reranker model
dmayboroda Dec 12, 2024
4859ab0
Merge pull request #14 from dmayboroda/model_switcher
dmayboroda Dec 12, 2024
c37a702
Update README.md
dmayboroda Dec 12, 2024
edc7ee0
add electron app wrapper and update docs
Dec 19, 2024
3dd7bfe
Merge pull request #16 from dmayboroda/feature/add-electron
kozyrevsergey89 Dec 19, 2024
64f12d8
add links to chat (#19)
kozyrevsergey89 Dec 30, 2024
a4fc352
feat: Enhance chat UI with Ant Design, theme toggle, and styled send …
dsenchenko Dec 30, 2024
420a4fc
Merge pull request #20 from dsenchenko/feature/chat-enhancements
pshenok Dec 30, 2024
db3a56f
Add Smithery CLI installation instructions and badge
calclavia Jan 1, 2025
ee6349a
Merge pull request #21 from smithery-ai/add-smithery
dmayboroda Jan 5, 2025
eeee378
Update README.md
dmayboroda Jan 5, 2025
84ba942
add reindexing logic, bump python to 3.11
Jan 6, 2025
b65e5ee
Merge pull request #23 from dmayboroda/feature/reindexing
dmayboroda Jan 7, 2025
c7845e9
Update README.md
dmayboroda Jan 12, 2025
92c25ef
reindexing fix, mounting sqlite inside docker
Jan 14, 2025
64ee74a
Merge pull request #25 from dmayboroda/indexer/fix-recreation
dmayboroda Jan 15, 2025
46cf49a
add support for ppt, ppts, xls, xlsx documents
Jan 16, 2025
dadead3
Merge pull request #26 from dmayboroda/feature/add-support-pptx-xlsx
dmayboroda Jan 16, 2025
e6c0f27
copy link on click
Jan 21, 2025
71f0afc
Merge pull request #27 from dmayboroda/copy-link-on-click
dmayboroda Jan 21, 2025
c83797d
fix: removed START_INDEXING
dmayboroda Jan 21, 2025
09feb3b
Update README.md
dmayboroda Jan 24, 2025
2bf7926
feat: logo
pshenok Jan 25, 2025
8406538
feat: transform svg
pshenok Jan 25, 2025
3a5542e
fix: logo
pshenok Jan 25, 2025
62eec59
fix: position
pshenok Jan 25, 2025
5985ff2
Merge pull request #28 from pshenok/main
dmayboroda Jan 25, 2025
a124d95
Update README.md
dmayboroda Jan 27, 2025
4cd242c
feat: new logo
pshenok Jan 29, 2025
e0ec538
Merge remote-tracking branch 'origin/main'
pshenok Jan 29, 2025
2fc2622
feat: logo width 300
pshenok Jan 29, 2025
b08d924
Merge pull request #30 from pshenok/main
dmayboroda Jan 29, 2025
6dd1668
feat: new ui elements
pshenok Feb 4, 2025
2bb3bad
Merge pull request #31 from pshenok/main
dmayboroda Feb 4, 2025
6ab9469
Revert "feat: new ui elements" (#32)
dmayboroda Feb 4, 2025
c130595
feat: move ui to other repo
pshenok Feb 4, 2025
5a7aa23
Merge branch 'dmayboroda:main' into main
pshenok Feb 4, 2025
ab41f6c
feat: ui as submodule
pshenok Feb 4, 2025
46d1a2f
Merge pull request #33 from pshenok/main
dmayboroda Feb 4, 2025
e810e17
feat: added query expansion
dmayboroda Feb 17, 2025
371e0e3
fix: pymupdf version
pshenok Mar 2, 2025
58497a2
Merge pull request #38 from pshenok/main
dmayboroda Mar 2, 2025
b8f30fa
Update README.md
dmayboroda Apr 9, 2025
888c05b
feat: add minima-aws as submodule for AWS deployment
pshenok Apr 11, 2025
5a11841
Merge pull request #42 from pshenok/main
dmayboroda Apr 11, 2025
9cdcbbc
feat: replace generic query tool with minima-specific query tool
kurisu Apr 30, 2025
1205f32
Merge pull request #43 from kurisu/kurisu-patch-fix-tool-name-conflicts
dmayboroda Apr 30, 2025
59b6756
Add MseeP.ai badge to README.md
lwsinclair Jul 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
LOCAL_FILES_PATH
EMBEDDING_MODEL_ID
EMBEDDING_SIZE
QDRANT_BOOTSTRAP
QDRANT_COLLECTION
START_INDEXING
FIRESTORE_COLLECTION_NAME
FIREBASE_KEY_FILE
USER_ID
OLLAMA_MODEL
RERANKER_MODEL
USER_ID
PASSWORD
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ __pycache__/

local_files/
qdrant_data/
indexer_data/
ollama/

*.db
.envrc
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "minima-ui"]
path = minima-ui
url = git@github.com:pshenok/minima-ui.git
[submodule "aws"]
path = aws
url = https://github.com/pshenok/minima-aws.git
373 changes: 373 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

119 changes: 119 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/dmayboroda-minima-badge.png)](https://mseep.ai/app/dmayboroda-minima)

<p align="center">
<a href="https://www.mnma.ai/" target="blank"><img src="assets/logo-full.svg" width="300" alt="MNMA Logo" /></a>
</p>

**Minima** is an open source RAG on-premises containers, with ability to integrate with ChatGPT and MCP.
Minima can also be used as a fully local RAG.

Minima currently supports three modes:
1. Isolated installation – Operate fully on-premises with containers, free from external dependencies such as ChatGPT or Claude. All neural networks (LLM, reranker, embedding) run on your cloud or PC, ensuring your data remains secure.

2. Custom GPT – Query your local documents using ChatGPT app or web with custom GPTs. The indexer running on your cloud or local PC, while the primary LLM remains ChatGPT.

3. Anthropic Claude – Use Anthropic Claude app to query your local documents. The indexer operates on your local PC, while Anthropic Claude serves as the primary LLM.

### Running as containers

1. Create a .env file in the project’s root directory (where you’ll find env.sample). Place .env in the same folder and copy all environment variables from env.sample to .env.

2. Ensure your .env file includes the following variables:
<ul>
<li> LOCAL_FILES_PATH </li>
<li> EMBEDDING_MODEL_ID </li>
<li> EMBEDDING_SIZE </li>
<li> OLLAMA_MODEL </li>
<li> RERANKER_MODEL </li>
<li> USER_ID </li> - required for ChatGPT integration, just use your email
<li> PASSWORD </li> - required for ChatGPT integration, just use any password
</ul>

3. For fully local installation use: **docker compose -f docker-compose-ollama.yml --env-file .env up --build**.

4. For ChatGPT enabled installation use: **docker compose -f docker-compose-chatgpt.yml --env-file .env up --build**.

5. For MCP integration (Anthropic Desktop app usage): **docker compose -f docker-compose-mcp.yml --env-file .env up --build**.

6. In case of ChatGPT enabled installation copy OTP from terminal where you launched docker and use [Minima GPT](https://chatgpt.com/g/g-r1MNTSb0Q-minima-local-computer-search)

7. If you use Anthropic Claude, just add folliwing to **/Library/Application\ Support/Claude/claude_desktop_config.json**

```
{
"mcpServers": {
"minima": {
"command": "uv",
"args": [
"--directory",
"/path_to_cloned_minima_project/mcp-server",
"run",
"minima"
]
}
}
}
```

8. To use fully local installation go to `cd electron`, then run `npm install` and `npm start` which will launch Minima electron app.

9. Ask anything, and you'll get answers based on local files in {LOCAL_FILES_PATH} folder.

Explanation of Variables:

**LOCAL_FILES_PATH**: Specify the root folder for indexing (on your cloud or local pc). Indexing is a recursive process, meaning all documents within subfolders of this root folder will also be indexed. Supported file types: .pdf, .xls, .docx, .txt, .md, .csv.

**EMBEDDING_MODEL_ID**: Specify the embedding model to use. Currently, only Sentence Transformer models are supported. Testing has been done with sentence-transformers/all-mpnet-base-v2, but other Sentence Transformer models can be used.

**EMBEDDING_SIZE**: Define the embedding dimension provided by the model, which is needed to configure Qdrant vector storage. Ensure this value matches the actual embedding size of the specified EMBEDDING_MODEL_ID.

**OLLAMA_MODEL**: Set up the Ollama model, use an ID available on the Ollama [site](https://ollama.com/search). Please, use LLM model here, not an embedding.

**RERANKER_MODEL**: Specify the reranker model. Currently, we have tested with BAAI rerankers. You can explore all available rerankers using this [link](https://huggingface.co/collections/BAAI/).

**USER_ID**: Just use your email here, this is needed to authenticate custom GPT to search in your data.

**PASSWORD**: Put any password here, this is used to create a firebase account for the email specified above.


Example of .env file for on-premises/local usage:
```
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
OLLAMA_MODEL=qwen2:0.5b # must be LLM model id from Ollama models page
RERANKER_MODEL=BAAI/bge-reranker-base # please, choose any BAAI reranker model
```

To use a chat ui, please navigate to **http://localhost:3000**

Example of .env file for Claude app:
```
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
```
For the Claude app, please apply the changes to the claude_desktop_config.json file as outlined above.

Example of .env file for ChatGPT custom GPT usage:
```
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
USER_ID=user@gmail.com # your real email
PASSWORD=password # you can create here password that you want
```

Also, you can run minima using **run.sh**.

### Installing via Smithery (MCP usage)

To install Minima for Claude Desktop automatically via [Smithery](https://smithery.ai/protocol/minima):

```bash
npx -y @smithery/cli install minima --client claude
```

**For MCP usage, please be sure that your local machines python is >=3.10 and 'uv' installed.**

Minima (https://github.com/dmayboroda/minima) is licensed under the Mozilla Public License v2.0 (MPLv2).
8 changes: 8 additions & 0 deletions assets/logo-full-b.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions assets/logo-full-w.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading