Local-first RAG library — ingest files and SQLite, query semantically, pipe results into any AI agent
Project description
Remex ingests PDFs, Word docs, Markdown, spreadsheets, code, web pages, e-books, and SQLite databases into a local vector index, then lets you ask questions in plain language and get answers cited from your own files. Everything — embedding, storage, retrieval — runs on your machine. The AI provider is optional and you bring your own (Anthropic, OpenAI, Ollama, or any OpenAI-compatible endpoint).
Install
Ask a question, get a synthesised answer grounded in your own files — with the source chunks and similarity scores one click away.
Features
Remex is free and open-source. Every feature ships in the box — no tiers, no license keys, no payment required.
Privacy & data flow
Remex is local-first. Here's exactly what touches the network:
| Operation | Where it runs | Network? |
|---|---|---|
| File / SQLite extraction & chunking | 🖥 Local | ✗ None |
Default embedding (all-MiniLM-L6-v2 or any FastEmbed model) |
🖥 Local (ONNX on CPU) | ✗ None |
| Vector storage (ChromaDB) | 🖥 Local (./remex_db/) |
✗ None |
| Vector search (AI Answer off) | 🖥 Local | ✗ None |
| AI Answer (on) | ☁ Your AI provider | ✓ Question + top-N retrieved chunks sent to the endpoint you configured |
| OpenAI embedding model (opt-in) | ☁ OpenAI | ✓ Document text sent to OpenAI during ingest |
| API key storage | 🔐 OS keyring | ✗ Never on disk in plaintext, never transmitted except as the auth header on requests you initiate |
| Sidecar HTTP listener | 127.0.0.1 loopback only |
✗ Not reachable from the LAN |
[!IMPORTANT] Remex itself has no analytics, no telemetry, and no controlled servers in the request path. The only outbound traffic is to the AI provider you yourself configured — and only when AI Answer is enabled or you submit a query in AI mode.
For zero data egress, point AI Answer at Ollama (local) or a self-hosted vLLM/TGI via a Custom Provider.
CLI quick start
# Scaffold a project (creates ./docs, remex.toml, .gitignore entries)
remex init
# Ingest a folder of documents
remex ingest ./docs
# Semantic search
remex query "how does authentication work?"
# AI-synthesised answer (requires ANTHROPIC_API_KEY, OPENAI_API_KEY, or a running Ollama)
remex query "how does authentication work?" --ai
Command reference
| Command | Description |
|---|---|
remex init [path] |
Scaffold docs/, remex.toml, .gitignore entries |
remex ingest <dir> |
Ingest files from a directory |
remex ingest-sqlite <db> |
Ingest rows from a SQLite table or SQL query |
remex query <text> |
Semantic search; add --ai for an AI answer |
remex sources |
List ingested source paths |
remex stats |
Show chunk and source counts |
remex delete-source <path> |
Remove all chunks for a source |
remex purge |
Remove chunks whose source file no longer exists |
remex reset |
Wipe a collection |
remex list-collections |
List collections in a database |
remex serve |
Start the FastAPI sidecar on localhost:8000 |
remex <command> --help # full option reference for any command
Use as a library
from remex import ingest, query
# Ingest a folder
result = ingest("./docs", collection_name="my-kb")
print(f"{result.chunks_stored} chunks stored")
# Search
results = query("how does auth work?", collection_name="my-kb")
for r in results:
print(f"[{r.score:.3f}] {r.source} → {r.text[:120]}")
Configuration
Drop a remex.toml in your project root (or run remex init):
[remex]
db = "./remex_db"
collection = "my-kb"
embedding_model = "all-MiniLM-L6-v2"
# chunk_size = 768 # characters per chunk (512–1024 works well)
# overlap = 150 # ~20% overlap preserves context at boundaries
# min_chunk_size = 50 # discard chunks shorter than this
# chunking = "recursive" # "recursive" (default) | "sentence" | "word"
CLI flags always override remex.toml. Studio writes per-project defaults via Settings → General → Project defaults when a project is open.
Embedding models
| Preset | Model | Size | Notes |
|---|---|---|---|
| Light (default) | all-MiniLM-L6-v2 |
22 MB | Fast, good accuracy |
| Balanced | intfloat/e5-base-v2 |
438 MB | Better retrieval quality |
| Multilingual | paraphrase-multilingual-MiniLM-L12-v2 |
470 MB | 50+ languages |
| Large | BAAI/bge-large-en-v1.5 |
1.3 GB | Best English accuracy |
| E5 Large | intfloat/e5-large-v2 |
1.3 GB | Strong retrieval benchmark |
| Long ctx | nomic-ai/nomic-embed-text-v1.5 |
547 MB | 8 192-token context |
Any SBERT, HuggingFace, or Ollama embedding model works — type the model name into the picker. Add your own to Settings → AI & Server → Embedding presets.
[!NOTE] Score interpretation. ChromaDB returns L2² distance; Remex converts it to
score = 1 / (1 + distance)so values lie in(0, 1]. For normalised embeddings (BGE, MiniLM, Nomic, OpenAI):0.75+is near-paraphrase,0.65–0.75is strongly relevant,0.50–0.55is borderline noise.
Under the hood
┌────────────────┐ Tauri IPC ┌────────────────────┐ HTTP/127.0.0.1 ┌──────────────────┐
│ Studio (TS) │ ─────────────► │ Rust shell │ ────────────────► │ Python sidecar │
│ React + Vite │ ◄───────────── │ (lib.rs) │ ◄──────────────── │ FastAPI │
└────────────────┘ └────────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ ChromaDB │
│ FastEmbed/ONNX │
│ ./remex_db/ │
└──────────────────┘
- Studio — Tauri 2, React 18, Zustand, react-query, shadcn/Radix UI
- Sidecar — FastAPI on
127.0.0.1, uv-managed venv in%APPDATA%\com.remex.studio\ - Indexing — ChromaDB persistent store, FastEmbed ONNX runtime, recursive / sentence / word chunker
- Secrets — OS keyring via the
keyringcrate (Windows Credential Manager · macOS Keychain · libsecret)
Build from source
[!TIP] Studio requires Rust, Node.js 20+, and the Tauri prerequisites for your OS.
# Python CLI
pip install -e ".[dev]"
pytest
# Studio (dev server with hot-reload)
cd studio
npm install
npm run tauri dev
# Studio (production build)
npm run tauri build
See studio/README.md for the full Studio build guide.
Changelog · Contributing · Licensing · Issues · GitHub
Python CLI: Apache-2.0 · Studio (v1.3.0+): FSL-1.1-MIT — see LICENSES.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file remex_cli-2.0.0.tar.gz.
File metadata
- Download URL: remex_cli-2.0.0.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b11022e285ea6fc7300694f67c04528c67ff7e30018f24649f7abe4ba41d246
|
|
| MD5 |
44b4f9c493c9f8810edea13761d0d6d2
|
|
| BLAKE2b-256 |
0ac21fac26c9bf85ec26ee63f6e381c8639a3b9db6c867d16b5a08d763e8a10c
|
Provenance
The following attestation bundles were made for remex_cli-2.0.0.tar.gz:
Publisher:
publish.yml on adm-crow/remex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remex_cli-2.0.0.tar.gz -
Subject digest:
3b11022e285ea6fc7300694f67c04528c67ff7e30018f24649f7abe4ba41d246 - Sigstore transparency entry: 1632793094
- Sigstore integration time:
-
Permalink:
adm-crow/remex@94a16a9a63af978afc023b13d37dff090ba9fb79 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/adm-crow
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@94a16a9a63af978afc023b13d37dff090ba9fb79 -
Trigger Event:
push
-
Statement type:
File details
Details for the file remex_cli-2.0.0-py3-none-any.whl.
File metadata
- Download URL: remex_cli-2.0.0-py3-none-any.whl
- Upload date:
- Size: 65.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
309b7bb20260659727e69152f2864620b65905e2ac3d691ef2ced14aad16da3f
|
|
| MD5 |
b605fed56d4b99dd3e96b21a49a1fb12
|
|
| BLAKE2b-256 |
ac04bceaa93ffec526b1d96be1605816033fcc52e770826deb3a640bde67e05b
|
Provenance
The following attestation bundles were made for remex_cli-2.0.0-py3-none-any.whl:
Publisher:
publish.yml on adm-crow/remex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remex_cli-2.0.0-py3-none-any.whl -
Subject digest:
309b7bb20260659727e69152f2864620b65905e2ac3d691ef2ced14aad16da3f - Sigstore transparency entry: 1632793109
- Sigstore integration time:
-
Permalink:
adm-crow/remex@94a16a9a63af978afc023b13d37dff090ba9fb79 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/adm-crow
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@94a16a9a63af978afc023b13d37dff090ba9fb79 -
Trigger Event:
push
-
Statement type: