Skip to content

Installation Guide

Get EdgeQuake running on your machine in 5 minutes


Before installing, ensure you have:

RequirementVersionCheck CommandPurpose
Rust1.95.xrustc --versionBuild backend with the pinned toolchain
Cargovia rustupcargo --versionPackage manager and workspace tooling
Docker24+docker --versionRecommended path for required PostgreSQL
Node.js20+node --versionWebUI and Playwright
pnpm10+pnpm --versionFrontend package manager

┌─────────────────────┐
│ What's your goal? │
└──────────┬──────────┘
┌─────────────────┼─────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Try it │ │ Develop │ │ Deploy │
│ quickly │ │ locally │ │ to prod │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
▼ ▼ ▼
make dev make dev-bg Docker Compose
(interactive) (background) (see Deployment)

Section titled “Option 1: Full Stack with Make (Recommended)”
Terminal window
# Clone the repository
git clone https://github.com/raphaelmansuy/edgequake.git
cd edgequake
# Start everything (PostgreSQL + Backend + Frontend)
make dev

What happens:

  1. Ensures PostgreSQL is reachable on port 5432
  2. Runs database migrations
  3. Builds and starts the Rust backend on port 8080
  4. Starts the Next.js frontend, preferring port 3001 and automatically shifting if that port is already in use

Verify:

Terminal window
# In a new terminal
curl 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 status to see the exact frontend URL that was selected.


Option 2: Backend Only (For API Development)

Section titled “Option 2: Backend Only (For API Development)”
Terminal window
# Clone and enter
git clone https://github.com/raphaelmansuy/edgequake.git
cd edgequake
# Start backend with PostgreSQL (required since v0.4.0)
make backend-bg

Note: Starting with v0.4.0, DATABASE_URL is 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:

Terminal window
curl http://localhost:8080/health

Terminal window
# Clone
git clone https://github.com/raphaelmansuy/edgequake.git
cd edgequake
# Build release binary
cd edgequake
cargo build --release
# Binary location
ls target/release/edgequake
# Run directly (PostgreSQL is required)
export DATABASE_URL="postgresql://postgres:edgequake@localhost:5432/edgequake"
./target/release/edgequake

Option 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 window
# Terminal 1: Start PostgreSQL
make db-start
# Terminal 2: Run backend with cargo-watch
cd edgequake
cargo watch -x run
# Terminal 3: Run frontend with hot reload
cd edgequake_webui
pnpm dev

EdgeQuake supports multiple LLM providers:

Terminal window
# Install Ollama
brew install ollama # macOS
# or: curl -fsSL https://ollama.com/install.sh | sh
# Pull models
ollama pull llama3.2
ollama pull nomic-embed-text
# Start Ollama (if not running)
ollama serve
# Start EdgeQuake (auto-detects Ollama)
make dev
Terminal window
# Set API key
export OPENAI_API_KEY="sk-your-key"
# Start EdgeQuake (auto-selects OpenAI when key is present)
make dev

Once running, you can switch providers via API:

Terminal window
# Check current provider
curl http://localhost:8080/api/v1/config | jq .llm_provider
# Provider is auto-selected based on OPENAI_API_KEY

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. │
└─────────────────────────────────────────────────────────────┘
Terminal window
# 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 string
export DATABASE_URL="postgresql://postgres:edgequake@localhost:5432/edgequake"
# Run migrations
cd edgequake && sqlx database setup

Run these commands to verify your installation:

Terminal window
# 1. Confirm the pinned compiler is active
cd edgequake
cargo --version
rustc --version
# 2. Check backend health
curl -s http://localhost:8080/health | jq
# ✅ Expected: JSON containing "status":"healthy" and "storage_mode":"postgresql"
# 3. Check API docs
curl -s http://localhost:8080/api-docs/openapi.json | jq .info.title
# ✅ Expected: "EdgeQuake API"
# 4. Check Ollama if using the local provider
curl -s http://localhost:11434/api/tags | jq
# 5. Let the repo verify itself
cargo fmt --all --check
cargo clippy --workspace --lib -- -D warnings
cargo test --workspace --lib --no-fail-fast

For the most reproducible local setup:

Terminal window
cd edgequake
rustup show active-toolchain
make status

If PostgreSQL is unavailable, EdgeQuake now exits with a clear startup error instead of crashing later in a harder-to-debug state.


Terminal window
# Problem: Docker not running
docker info
# Solution: Start Docker Desktop or systemctl start docker
# Problem: Port 5432 in use
lsof -i :5432
# Solution: Stop conflicting service or use different port
Terminal window
# Problem: Rust version too old
rustup update stable
# Problem: Missing dependencies on Linux
sudo 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"]
Terminal window
# Problem: Ollama not responding
ollama serve # Start if not running
ollama list # Check available models
# Problem: OpenAI rate limit
# Solution: Check your API usage at platform.openai.com

Now that EdgeQuake is running:

  1. Quick Start — Ingest your first document
  2. Architecture Overview — Understand the system
  3. API Reference — Explore endpoints

ComponentMinimumRecommended
RAM4 GB16 GB
CPU2 cores8 cores
Disk10 GB50 GB
OSLinux, macOS, Windows (WSL2)Linux, macOS