Airsc is free for everyone. If it helps you, support it with $2–$20.

Support
MCP serverSafeAI & LLM featuresSome setup

minima

Minima-AI-Inc · Minima-AI-Inc/minima

This project provides an on-premises RAG solution with Docker containers, allowing AI agents like Claude to query local documents securely.

On-premises conversational RAG with configurable containers

1.1k stars107License: MPL-2.0Updated 9 months ago0 opens

Preview

▍

What you can do with it

  • Enable your Claude agent to answer questions based on your private, local document library.
  • Set up a fully local RAG system using Ollama for enhanced data privacy with AI.
  • Integrate a custom, self-hosted LLM with your local documents via an OpenAI-compatible API.

Safety check

Safe

No risky patterns found in the files we scanned.

Automated scan of the repo files. Always review code you run.

From the README

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 or with your own deployed LLM.

Minima currently supports four modes:

  1. Isolated installation (Ollama) – 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 LLM (OpenAI-compatible API) – Use your own deployed LLM with OpenAI-compatible API (vLLM, Ollama server, TGI, etc.). The indexer runs locally while the LLM can be on your server, cloud, or local machine. No Ollama deployment needed, lighter resource usage, and full control over your LLM infrastructure.

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

  4. 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

Quick Start with run.sh

The easiest way to start Minima is using the run.sh script:

./run.sh

You'll see the following options:

Select an option:
1) Fully Local Setup (Ollama)
2) Custom LLM (OpenAI-compatible API)
3) ChatGPT Integration
4) MCP usage
5) Quit

Manual Docker Compose Commands

  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:

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

  2. For custom LLM deployment (OpenAI-compatible API) use: docker compose -f docker-compose-custom-llm.yml --env-file .env up --build.

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

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

  5. In case of ChatGPT enabled installation copy OTP from terminal where you launched docker and use Minima GPT

  6. 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"
        ]
      }
    }
  }
  1. To use fully local installation go to cd electron, then run npm install and npm start which will launch Minima electron app.

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


Variables Explained

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. Please, use LLM model here, not an embedding. This is only required when using Ollama (not needed when using custom LLM).

LLM_BASE_URL: (Optional) Base URL for your custom OpenAI-compatible LLM API endpoint. When this is set, Ollama will not be used and you don't need to deploy it.

LLM_MODEL: (Optional) Model name for your custom LLM. Required when LLM_BASE_URL is set.

LLM_API_KEY: (Optional) API key for your custom LLM. If your LLM doesn't require authentication, you can omit this or set it to any value.

RERANKER_MODEL: Specify the reranker model for Ollama mode. Currently, we have tested with BAAI rerankers. You can explore all available rerankers using this link. Note: This is NOT required for Custom LLM mode - the reranker model will not be downloaded if you're using LLM_BASE_URL.

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.


Examples

Example of .env file for on-premises/local usage with Ollama:

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

Example of .env file for custom LLM deployment (OpenAI-compatible API):

LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentenc
View source on GitHub