Installation Guide
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.x | 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 |
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) (see Deployment)Installation Options
Section titled “Installation Options”Option 1: Full Stack with Make (Recommended)
Section titled “Option 1: Full Stack with Make (Recommended)”# Clone the repositorygit clone https://github.com/raphaelmansuy/edgequake.gitcd edgequake
# Start everything (PostgreSQL + Backend + Frontend)make devWhat happens:
- Ensures PostgreSQL is reachable on port 5432
- Runs database migrations
- Builds and starts the Rust backend on port 8080
- Starts the Next.js frontend, preferring port 3001 and automatically shifting if that port is already in use
Verify:
# In a new terminalcurl http://localhost:8080/health# Expected: JSON containing "status":"healthy"
# Open WebUI (default local Make-based port)open <http://localhost:3001>If another stack is already using 3001, run
make statusto see the exact frontend URL that was selected.
Option 2: Backend Only (For API Development)
Section titled “Option 2: Backend Only (For API Development)”# Clone and entergit clone https://github.com/raphaelmansuy/edgequake.gitcd edgequake
# Start backend with PostgreSQL (required since v0.4.0)make backend-bgNote: Starting with v0.4.0,
DATABASE_URLis required for all server modes. In-memory storage was removed to ensure reliable, production-grade behavior. Use the Docker-based PostgreSQL setup above (make dev) for the fastest path.
Verify:
curl http://localhost:8080/healthOption 3: Build from Source
Section titled “Option 3: Build from Source”# Clonegit clone https://github.com/raphaelmansuy/edgequake.gitcd edgequake
# Build release binarycd edgequakecargo build --release
# Binary locationls target/release/edgequake
# Run directly (PostgreSQL is required)export DATABASE_URL="postgresql://postgres:edgequake@localhost:5432/edgequake"./target/release/edgequakeOption 4: Development Mode (Watch + Hot Reload)
Section titled “Option 4: Development Mode (Watch + Hot Reload)”Principle: prefer explicit health checks and the repository-pinned toolchain over ad-hoc local variations. That keeps local behavior consistent with CI.
# Terminal 1: Start PostgreSQLmake db-start
# Terminal 2: Run backend with cargo-watchcd edgequakecargo watch -x run
# Terminal 3: Run frontend with hot reloadcd edgequake_webuipnpm devLLM Provider Configuration
Section titled “LLM Provider Configuration”EdgeQuake supports multiple LLM providers:
Ollama (Free, Local) — Default
Section titled “Ollama (Free, Local) — Default”# Install Ollamabrew install ollama # macOS# or: curl -fsSL https://ollama.com/install.sh | sh
# Pull modelsollama pull llama3.2ollama pull nomic-embed-text
# Start Ollama (if not running)ollama serve
# Start EdgeQuake (auto-detects Ollama)make devOpenAI (Paid, Cloud)
Section titled “OpenAI (Paid, Cloud)”# Set API keyexport OPENAI_API_KEY="sk-your-key"
# Start EdgeQuake (auto-selects OpenAI when key is present)make devProvider Switching at Runtime
Section titled “Provider Switching at Runtime”Once running, you can switch providers via API:
# Check current providercurl http://localhost:8080/api/v1/config | jq .llm_provider
# Provider is auto-selected based on OPENAI_API_KEYStorage Configuration
Section titled “Storage Configuration”EdgeQuake uses PostgreSQL as its storage backend for all modes (since v0.4.0):
┌─────────────────────────────────────────────────────────────┐│ Storage (PostgreSQL) │├─────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────────────────────────┐ ││ │ PostgreSQL 15+ │ ││ │ │ ││ │ ┌──────────┐ ┌──────────────────┐ │ ││ │ │ pgvector │ │ Apache AGE │ │ ││ │ │ (vectors) │ │ (graph DB) │ │ ││ │ └──────────┘ └──────────────────┘ │ ││ │ │ ││ └─────────────────────────────────────┘ ││ ││ DATABASE_URL required for all server modes. ││ Use Docker for the easiest PostgreSQL setup. │└─────────────────────────────────────────────────────────────┘PostgreSQL Setup
Section titled “PostgreSQL Setup”# Using Docker (recommended)docker run -d \ --name edgequake-postgres \ -e POSTGRES_PASSWORD=edgequake \ -e POSTGRES_DB=edgequake \ -p 5432:5432 \ ghcr.io/raphaelmansuy/edgequake-postgres:latest
# Set connection stringexport DATABASE_URL="postgresql://postgres:edgequake@localhost:5432/edgequake"
# Run migrationscd edgequake && sqlx database setupVerification Checklist
Section titled “Verification Checklist”Run these commands to verify your installation:
# 1. Confirm the pinned compiler is activecd edgequakecargo --versionrustc --version
# 2. Check backend healthcurl -s http://localhost:8080/health | jq# ✅ Expected: JSON containing "status":"healthy" and "storage_mode":"postgresql"
# 3. Check API docscurl -s http://localhost:8080/api-docs/openapi.json | jq .info.title# ✅ Expected: "EdgeQuake API"
# 4. Check Ollama if using the local providercurl -s http://localhost:11434/api/tags | jq
# 5. Let the repo verify itselfcargo fmt --all --checkcargo clippy --workspace --lib -- -D warningscargo test --workspace --lib --no-fail-fastNo-flake local workflow
Section titled “No-flake local workflow”For the most reproducible local setup:
cd edgequakerustup show active-toolchainmake statusIf PostgreSQL is unavailable, EdgeQuake now exits with a clear startup error instead of crashing later in a harder-to-debug state.
Troubleshooting
Section titled “Troubleshooting”Docker Issues
Section titled “Docker Issues”# Problem: Docker not runningdocker info# Solution: Start Docker Desktop or systemctl start docker
# Problem: Port 5432 in uselsof -i :5432# Solution: Stop conflicting service or use different portRust Build Issues
Section titled “Rust Build Issues”# Problem: Rust version too oldrustup update stable
# Problem: Missing dependencies on Linuxsudo apt-get install pkg-config libssl-dev libpq-dev
# Problem: Slow compilation# Solution: Use faster linker# In .cargo/config.toml:[target.x86_64-unknown-linux-gnu]linker = "clang"rustflags = ["-C", "link-arg=-fuse-ld=lld"]LLM Issues
Section titled “LLM Issues”# Problem: Ollama not respondingollama serve # Start if not runningollama list # Check available models
# Problem: OpenAI rate limit# Solution: Check your API usage at platform.openai.comNext Steps
Section titled “Next Steps”Now that EdgeQuake is running:
- 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 |