Installation Guide
Product: v0.19.0 · Contract: OpenAPI snapshot · Spec ops: Ingestion cancel & fairness
Installation Guide
Section titled “Installation Guide”Get EdgeQuake running on your machine in 5 minutes
Prerequisites Checklist
Section titled “Prerequisites Checklist”Before installing, ensure you have:
| Requirement | Version | Check Command | Purpose |
|---|---|---|---|
| Rust | 1.95+ | rustc --version |
Build backend with the pinned toolchain |
| Cargo | via rustup | cargo --version |
Package manager and workspace tooling |
| Docker | 24+ | docker --version |
Recommended path for required PostgreSQL |
| Node.js | 20+ | node --version |
WebUI and Playwright |
| pnpm | 10+ | pnpm --version |
Frontend package manager |
PostgreSQL (required)
Section titled “PostgreSQL (required)”EdgeQuake requires PostgreSQL 16, 17, or 18 with pgvector and Apache AGE. The Makefile default profile is PG18 (EQ_POSTGRES_PROFILE=pg18); override with make dev-pg16, make dev-pg17, or EQ_POSTGRES_PROFILE=pg17 make dev.
Credentials must match across Docker and DATABASE_URL:
| Variable | Value |
|---|---|
POSTGRES_USER |
edgequake |
POSTGRES_PASSWORD |
edgequake_secret |
POSTGRES_DB |
edgequake |
export DATABASE_URL="postgresql://edgequake:edgequake_secret@localhost:5432/edgequake?options=-c%20search_path%3Dpublic"Authentication (production vs local dev)
Section titled “Authentication (production vs local dev)”| Mode | Auth | Setup |
|---|---|---|
make dev (default) |
Off (open API) | Makefile sets EDGEQUAKE_DEV_MODE=true when DEV_AUTH_ENABLED=false |
Production / make dev-auth |
On (default secure) | Set JWT_SECRET, bootstrap admin credentials, NEXT_PUBLIC_DISABLE_DEMO_LOGIN=true |
Vision LLM (PDF ingestion)
Section titled “Vision LLM (PDF ingestion)”PDF uploads require a vision-capable model. Set explicitly or let resolution fall back from your LLM provider:
# Cloud (recommended for PDF quality)EDGEQUAKE_VISION_PROVIDER=openaiEDGEQUAKE_VISION_MODEL=gpt-4.1-nanoOPENAI_API_KEY=sk-...
# Local (Ollama — pull a vision model)ollama pull gemma4:latestEDGEQUAKE_VISION_PROVIDER=ollamaEDGEQUAKE_VISION_MODEL=gemma4:latestVerify after start: GET /api/v1/config/effective → Vision area (check has_mismatch).
Quick Install Decision Tree
Section titled “Quick Install Decision Tree” ┌─────────────────────┐ │ What's your goal? │ └──────────┬──────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Try it │ │ Develop │ │ Deploy │ │ quickly │ │ locally │ │ to prod │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ ▼ ▼ ▼ make dev make dev-bg docker-compose (interactive) (background) .quickstart.ymlInstallation Options
Section titled “Installation Options”Option 1: Full Stack with Make (Recommended)
Section titled “Option 1: Full Stack with Make (Recommended)”git clone https://github.com/raphaelmansuy/edgequake.gitcd edgequakemake devWhat happens:
- Starts PostgreSQL (profile
pg18by default) with passwordedgequake_secret - Runs database migrations
- Builds and starts the Rust backend on port 8080
- Starts the Next.js frontend on port 3000 (shifts only if 3000 is taken)
Verify:
curl http://localhost:8080/health# Expected: JSON containing "status":"healthy"
open http://localhost:3000Run
make statusif another stack is using port 3000.
Option 2: Prebuilt GHCR Stack (No Rust/Node toolchain)
Section titled “Option 2: Prebuilt GHCR Stack (No Rust/Node toolchain)”git clone https://github.com/raphaelmansuy/edgequake.gitcd edgequake
EDGEQUAKE_VERSION=0.19.0 docker compose -f docker-compose.quickstart.yml up -d| Service | Image | Port |
|---|---|---|
| API | ghcr.io/raphaelmansuy/edgequake:0.19.0 |
8080 |
| WebUI | ghcr.io/raphaelmansuy/edgequake-frontend:0.19.0 |
3000 |
| PostgreSQL | ghcr.io/raphaelmansuy/edgequake-postgres:0.19.0-pg18 |
5432 |
Pin PostgreSQL major: EDGEQUAKE_POSTGRES_TAG=0.19.0-pg16 (or -pg17, -pg18).
Option 3: Backend Only (For API Development)
Section titled “Option 3: Backend Only (For API Development)”git clone https://github.com/raphaelmansuy/edgequake.gitcd edgequakemake backend-bg
DATABASE_URLis required.make backend-bgsets it topostgresql://edgequake:edgequake_secret@localhost:5432/edgequake.
Verify:
curl http://localhost:8080/healthOption 4: Build from Source
Section titled “Option 4: Build from Source”git clone https://github.com/raphaelmansuy/edgequake.gitcd edgequake/edgequakecargo build --release
export DATABASE_URL="postgresql://edgequake:edgequake_secret@localhost:5432/edgequake?options=-c%20search_path%3Dpublic"./target/release/edgequakeOption 5: Development Mode (Watch + Hot Reload)
Section titled “Option 5: Development Mode (Watch + Hot Reload)”# Terminal 1: PostgreSQLmake db-start
# Terminal 2: Backend with cargo-watchcd edgequakecargo watch -x run
# Terminal 3: Frontendcd edgequake_webuipnpm devLLM Provider Configuration
Section titled “LLM Provider Configuration”EdgeQuake supports multiple LLM providers. Set canonical EDGEQUAKE_DEFAULT_* vars (see .env.example).
Ollama (Free, Local) — Default for make dev
Section titled “Ollama (Free, Local) — Default for make dev”brew install ollama # macOSollama pull gemma4:latestollama pull embeddinggemma:latestollama servemake devOpenAI (Paid, Cloud)
Section titled “OpenAI (Paid, Cloud)”export OPENAI_API_KEY="sk-your-key"make devGoogle Vertex AI (Enterprise)
Section titled “Google Vertex AI (Enterprise)”Uses IAM identity (ADC or service account), not GEMINI_API_KEY:
gcloud auth application-default loginexport GOOGLE_CLOUD_PROJECT=your-gcp-projectmake devSee Configuration — Vertex AI.
Provider Switching at Runtime
Section titled “Provider Switching at Runtime”curl http://localhost:8080/api/v1/config/effective | jq '.llm'Storage Configuration
Section titled “Storage Configuration”EdgeQuake uses PostgreSQL for all storage modes (since v0.4.0):
┌─────────────────────────────────────────────────────────────┐│ Storage (PostgreSQL) │├─────────────────────────────────────────────────────────────┤│ ┌─────────────────────────────────────┐ ││ │ PostgreSQL 16 / 17 / 18 │ ││ │ ┌──────────┐ ┌──────────────────┐ │ ││ │ │ pgvector │ │ Apache AGE │ │ ││ │ └──────────┘ └──────────────────┘ │ ││ └─────────────────────────────────────┘ ││ DATABASE_URL required. Password: edgequake_secret │└─────────────────────────────────────────────────────────────┘PostgreSQL Setup (Docker)
Section titled “PostgreSQL Setup (Docker)”docker run -d \ --name edgequake-postgres \ -e POSTGRES_USER=edgequake \ -e POSTGRES_PASSWORD=edgequake_secret \ -e POSTGRES_DB=edgequake \ -p 5432:5432 \ ghcr.io/raphaelmansuy/edgequake-postgres:0.19.0-pg18
export DATABASE_URL="postgresql://edgequake:edgequake_secret@localhost:5432/edgequake?options=-c%20search_path%3Dpublic"
cd edgequake && sqlx database setupImportant:
POSTGRES_PASSWORDmust beedgequake_secretto matchDATABASE_URLused by Make, docker-compose, and.env.example.
Verification Checklist
Section titled “Verification Checklist”# 1. Toolchaincd edgequake && rustc --version # 1.95+
# 2. Backend healthcurl -s http://localhost:8080/health | jq
# 3. OpenAPI contractcurl -s http://localhost:8080/api-docs/openapi.json | jq .info.title
# 4. Ollama (if local provider)curl -s http://localhost:11434/api/tags | jq
# 5. Repo checkscargo fmt --all --checkcargo clippy --workspace --lib -- -D warningscargo test --workspace --lib --no-fail-fastNo-flake local workflow
Section titled “No-flake local workflow”make statusrustup show active-toolchainIf PostgreSQL is unavailable, EdgeQuake exits at startup with a clear error instead of failing mid-request.
Troubleshooting
Section titled “Troubleshooting”Docker Issues
Section titled “Docker Issues”docker info # Docker running?lsof -i :5432 # Port conflict?lsof -i :8080 # API portlsof -i :3000 # WebUI portRust Build Issues
Section titled “Rust Build Issues”rustup update stable# Linux deps:sudo apt-get install pkg-config libssl-dev libpq-devLLM / Vision Issues
Section titled “LLM / Vision Issues”ollama serve && ollama listcurl -s http://localhost:8080/api/v1/config/effective | jq '.areas[] | select(.name == "Vision")'Auth Issues
Section titled “Auth Issues”- 401 on API calls after deploy: Auth is on by default — add
Authorization: Bearer …orX-API-Key, or useEDGEQUAKE_DEV_MODE=truelocally only. - No login on first start: Set
EDGEQUAKE_BOOTSTRAP_ADMIN_*env vars before boot (see runtime auth hardening).
Next Steps
Section titled “Next Steps”- Quick Start — Ingest your first document
- Architecture Overview — Understand the system
- API Reference — Explore endpoints
System Requirements
Section titled “System Requirements”| Component | Minimum | Recommended |
|---|---|---|
| RAM | 4 GB | 16 GB |
| CPU | 2 cores | 8 cores |
| Disk | 10 GB | 50 GB |
| OS | Linux, macOS, Windows (WSL2) | Linux, macOS |