|
Natural Language Queries Describe what you need in plain English — QueryGPT generates and executes read-only SQL, then returns structured results. |
Automatic Analysis Pipeline Query results automatically flow into Python analysis and chart generation, so a single question gets you a complete answer. |
|
Semantic Layer Define business terms (GMV, AOV, etc.) and QueryGPT references them automatically, eliminating ambiguity in your queries. |
Schema Relationship Graph Visually drag and connect tables to define JOIN relationships. QueryGPT picks the right join path automatically. |
flowchart LR
query["Ask in plain English"] --> context["Understand intent using semantic layer + schema"]
context --> sql["Generate read-only SQL"]
sql --> execute["Execute query"]
execute --> result["Return results & summary"]
result --> decision{"Need charts or further analysis?"}
decision -->|Yes| python["Python analysis & charts"]
decision -->|No| done["Done"]
python --> done
execute -->|SQL error| repair_sql["Auto-repair & retry"]
sql -->|on retry| repair_sql
python -->|Python error| repair_py["Auto-repair & retry"]
repair_sql --> sql
repair_py --> python
Schema Relationship Graph
Semantic Layer Configuration
git clone git@github.com:MKY508/QueryGPT.git
cd QueryGPT| macOS | Linux | Windows |
|---|---|---|
|
Option A — Run directly Requires Python 3.11+ and Node.js LTS ./start.shOption B — Docker Requires Docker Desktop docker compose up --build |
Option A — Run directly Requires Python 3.11+ and Node.js LTS ./start.shOption B — Docker Requires Docker Engine docker compose up --build |
Recommended — Docker Desktop Windows users should use Docker. Install Docker Desktop, then: docker compose up --buildAlternative — WSL2 After installing WSL2, run |
After startup, open http://localhost:3000:
- Go to Settings and add a model (provider + API key)
- Use the built-in demo database, or connect your own SQLite / MySQL / PostgreSQL
- Optionally set a default model, default connection, and conversation context rounds
- Head to the chat page and start asking questions
The project ships with a built-in SQLite demo database (
demo.db). A sample connection is auto-created on first launch if no workspace data exists.
Configuration Reference
Supports OpenAI-compatible, Anthropic, Ollama, and Custom gateways. Configurable fields:
| Field | Description |
|---|---|
provider |
Model provider |
base_url |
API endpoint |
model_id |
Model identifier |
api_key |
API key (optional for Ollama or unauthenticated gateways) |
extra headers |
Custom request headers |
query params |
Custom query parameters |
api_format |
API format |
healthcheck_mode |
Health check mode |
Supports SQLite, MySQL, and PostgreSQL. The system only executes read-only SQL.
Built-in SQLite demo database:
- Path:
apps/api/data/demo.db - Default connection name:
Sample Database
Startup Scripts
./start.sh # Host mode: check env, install deps, init DB, start frontend + backend
./start.sh setup # Host mode: install dependencies only
./start.sh stop # Stop host mode services
./start.sh restart # Restart host mode services
./start.sh status # Check host mode status
./start.sh logs # View host mode logs
./start.sh doctor # Diagnose host mode environment
./start.sh test all # Run all tests in host mode
./start.sh cleanup # Clean up host mode temp stateInstall analytics extras (scikit-learn, scipy, seaborn):
./start.sh install analyticsOptional environment variables:
QUERYGPT_BACKEND_RELOAD=1 ./start.sh # Backend hot reload
QUERYGPT_BACKEND_HOST=0.0.0.0 ./start.sh # Listen on all interfacesDocker Development
Windows developers should use Docker; start.ps1 / start.bat are no longer maintained.
Default dev stack starts:
web: Next.js dev server (HMR enabled)api: FastAPI dev server (--reload)db: PostgreSQL 16
docker-compose up --build # Start all services in foreground
docker-compose up -d --build # Start all services in background
docker-compose down # Stop and remove containers
docker-compose down -v --remove-orphans # Also remove data volumes
docker-compose ps # View status
docker-compose logs -f api web # View frontend/backend logs
docker-compose restart api web # Restart frontend/backend
docker-compose up db # Start database only
docker-compose run --rm api ./run-tests.sh
docker-compose run --rm web npm run type-check
docker-compose run --rm web npm testNotes:
- Frontend at
http://localhost:3000by default - Backend at
http://localhost:8000by default - PostgreSQL exposed at
localhost:5432 - Run
docker-compose up --buildafter dependency changes - If you have the Docker Compose plugin installed, swap
docker-composefordocker compose
Local Development (Host Mode)
cd apps/api
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000cd apps/web
npm install
npm run devBackend apps/api/.env:
DATABASE_URL=sqlite+aiosqlite:///./data/querygpt.db
ENCRYPTION_KEY=your-fernet-keyFrontend apps/web/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
# Optional: only needed for Docker / containerized Next rewrite
# INTERNAL_API_URL=http://api:8000# Frontend
cd apps/web && npm run type-check && npm test && npm run build
# Backend
./apps/api/run-tests.shGitHub Actions is split into two layers:
- Fast layer: Backend
ruff + mypy (chat/config main path) + pytest, frontendlint + type-check + vitest + build - Integration layer: Docker full-stack, Playwright smoke tests,
start.shhost-mode smoke tests, SQLite / PostgreSQL / MySQL connection tests, model tests with mock gateway
Run locally:
# Docker full-stack
docker compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build
# Backend integration tests (requires PostgreSQL / MySQL / mock gateway env vars)
cd apps/api && pytest tests/test_config_integration.py -v
# Backend main-path type checking
cd apps/api && mypy --config-file mypy.ini
# Frontend browser smoke tests (app must be running first)
cd apps/web && npm run test:e2eDeployment
The repo includes a render.yaml for direct Render Blueprint deployment.
Recommended deployment on Vercel:
- Root Directory:
apps/web - Environment Variable:
NEXT_PUBLIC_API_URL=<your-api-url>
- Only read-only SQL is allowed; write operations are blocked
- Auto-repair covers SQL, Python, and chart config errors that are recoverable
/chat/stopis designed for single-instance semantics- Node.js LTS is recommended for development; if
next devbehaves oddly, clearapps/web/.next
MIT
Built with ❤️


