Local Development
Graphora supports two local development modes: a zero-config mode that needs nothing except Python, and a full Docker stack for production-like environments.Zero-Config Mode (Recommended for Getting Started)
Run the Graphora API with in-memory storage and no external dependencies. This is the fastest way to develop locally or evaluate the platform.Prerequisites
- Python 3.11 or higher
- uv package manager
- An LLM API key (Gemini, OpenAI, or another supported provider)
Configure environment
.env file:What happens without Redis?
The progress tracker automatically falls back to an in-memory store when Redis is unavailable. You will see a log message like:In-memory mode stores all data in the running process. Data is lost when the server stops. Use this for development and testing only.
Full Docker Stack
For a production-like local environment with Neo4j, Redis, Postgres, and Prefect:Copy environment templates
Launch the stack
| Service | Host endpoint | Notes |
|---|---|---|
| API | http://localhost:${API_PORT:-8000} | Hot reload with /health and /ready endpoints |
| Redis | internal only (redis://redis:6379/0) | No host port by default; override via docker-compose.override.yml |
| Prefect | http://localhost:${PREFECT_PORT:-4200} | PREFECT_API_URL is injected into the API container |
| Neo4j | bolt://localhost:7687 | For graph storage |
| Postgres | localhost:5432 | Application database for configs and audit logs |
Check health
/health returns immediately once FastAPI starts. /ready pings Redis and the Prefect API so docker-compose health checks know when the stack is usable.Storage Modes
Graphora supports two storage backends, controlled by theSTORAGE_TYPE environment variable:
| Mode | Value | Database Required | Best For |
|---|---|---|---|
| In-memory | STORAGE_TYPE=memory | No | Local dev, demos, testing |
| Neo4j | STORAGE_TYPE=neo4j | Yes | Production, staging |
STORAGE_TYPE=memory, all graph data is stored in the running process and is lost when the server stops. For production use, always use STORAGE_TYPE=neo4j with a properly configured Neo4j instance.
Authentication Modes
| Mode | Configuration | Best For |
|---|---|---|
| Bypassed | AUTH_BYPASS_ENABLED=true | Local development |
| Clerk | Clerk env vars configured | Production, staging |
AUTH_BYPASS_USER_ID (defaults to local-dev-user). Never enable auth bypass in production.
Frontend
Start the graphora-fe app separately:NEXT_PUBLIC_API_URL (or BACKEND_API_URL) to http://localhost:8000.
Tips
- Use
make dev-up -- --buildwhenever Dockerfile dependencies change. - Run
make openapi-snapshotbefore syncing docs so the Mintlify API reference stays current. - For the full list of Make targets, run
make help. - See Configuration for a complete reference of all environment variables.
