Skip to content

reisset/yourSQLfriend

Repository files navigation

yourSQLfriend

Connect SQLite databases to a local LLM. Ask questions in plain English, get SQL queries and results.

Built for offline forensic analysis on a single workstation — no cloud, no telemetry, nothing leaves your machine.

Version License Python Flask

yourSQLfriend — load a database and get started

yourSQLfriend is for analysts, investigators, and developers who need to interrogate SQLite databases without sending data anywhere. Load a .db, .sqlite, .csv, or .sql file, ask questions in plain English, and get parameterised read-only SQL with full results — air-gap safe, forensic-grade.


✨ Features

🔒 100% Offline Runs on a local LLM via Ollama or LM Studio. Zero telemetry, air-gap safe
💬 Natural Language Ask "show me the top 5 customers" and get results + the exact SQL query
🔍 Search All Tables Find a value across your entire database (⌘K / Ctrl+K)
🪟 Three-Pane Workbench Schema browser · conversation · Row Inspector
🔎 Row Inspector Click any result row to expand it; foreign keys become clickable links
🕘 Query History Per-session panel of every question asked; click to jump back to that turn
📋 Interactive Tables Sort, filter, paginate results with dark/light theme
💾 Export Sessions Save your entire chat session as a formatted HTML file with hashes + timestamps
🖥️ Install as App PWA support — install as a standalone desktop app from Chrome/Edge/Brave

Ask a question in plain English — the LLM writes parameterised read-only SQL, runs it, and returns results you can sort, filter, and export.

Workbench — question, generated SQL, and paginated results
Schema browser & query history

Browse all tables, columns, types, and row counts in the left pane. Query history lives at the bottom — click any entry to jump back.

Schema browser and query history
Row Inspector

Click any result row to expand it. Foreign key references become navigable links — follow relationships without writing another query.

Row Inspector with foreign key navigation

🤖 LLM Setup

yourSQLfriend requires a local LLM running before you launch. Set one up first:

Option A: Ollama

ollama pull gemma4:26b
ollama serve

Option B: LM Studio

  1. Download LM Studio
  2. Load a model
  3. Start local server on port 1234

Once connected, the provider indicator in the top bar turns green.

Settings panel — provider connected

Context window: The system prompt is token-heavy by design. A 16K context window is the minimum; 32K or more is strongly recommended for complex schemas.

LLM model sizes: Smallest → 4B | Mid → 8-9B | Large → 14B | Largest → 26-30B

Recommended LLM families: Qwen | Gemma | Mistral / Devstral


🚀 Quick Start

Prerequisite: Python 3.10+ must be installed, and your LLM must be running (see above).

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/reisset/yourSQLfriend/main/install.sh | sh

Windows (PowerShell)

irm https://raw.githubusercontent.com/reisset/yourSQLfriend/main/install.ps1 | iex

Then launch from any terminal: yoursqlfriend

Options: yoursqlfriend --port 8080, --no-browser, --host 0.0.0.0

Note: The Flask server must be running for the app to work. yoursqlfriend starts it automatically — do not close the terminal.

Install with pipx (manual)
pipx install yoursqlfriend
From source (developers)
git clone https://github.com/reisset/yourSQLfriend.git
cd yourSQLfriend
./run.sh          # Linux/macOS
run.bat           # Windows

🛡️ Forensic Integrity

Read-only guaranteed SQL validation + SQLite mode=ro block all writes
Chain of custody SHA256 hashes logged, timestamped exports
Audit logs All queries logged to logs/ with daily rotation
Air-gap safe Zero telemetry, works fully offline

WAL files: The upload process excludes .db-wal and .db-shm files. Checkpoint your database first to ensure recent transactions are included.


⚠️ Known Limitations

  • Model quality matters. Smaller models will produce incorrect or incomplete SQL on complex schemas. If results look wrong, the query is the first thing to check.
  • SQLite only. No support for Postgres, MySQL, or other engines.
  • Single database per session. You can replace the loaded database mid-session, but results from different databases are not cross-queryable.
  • Complex queries may fail. Heavily nested subqueries, window functions, and non-standard SQLite extensions may exceed what the LLM generates reliably.

📂 Data Storage

All data lives in your home directory:

Platform Path
Linux / macOS ~/.yourSQLfriend/
Windows %APPDATA%\.yourSQLfriend\

Contains uploads/, logs/, and sessions/.


Apache 2.0 — see LICENSE and NOTICE

Built by Reisset

About

A web chat interface application that leverages local LLM's . Main purpose = understanding, analyzing and querying SQL database using plain language.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors