Skip to main content
Copy .env.example to .env and fill in each value before starting the server. Running ./setup.sh does this copy automatically.
All services listed here offer free tiers. No credit card is required to sign up for any of them.

LLM

Sign up and obtain an API key at https://x.ai/api (xAI) or https://console.groq.com (Groq). The default LLM_URL in .env.example points to the Groq OpenAI-compatible endpoint.
LLM_TOKEN
string
required
API key for the LLM provider. Used to authenticate requests to the chat completion endpoint.
LLM_URL
string
required
Base URL for the OpenAI-compatible chat completion API.Default: https://api.groq.com/openai/v1
LLM_MODEL
string
required
Model identifier passed to the chat completion API.Default: meta-llama/llama-4-scout-17b-16e-instruct

Embeddings

Sign up at https://www.voyageai.com/ to get your embedding API key.
EMBEDDDING_TOKEN
string
required
API key for VoyageAI embeddings.
This variable name contains a double D (EMBEDDDING_TOKEN). This is a known typo in the codebase. Your .env file must use this exact spelling or the application will not authenticate with the embedding service.
EMBEDDING_MODEL
string
required
VoyageAI model to use for generating embeddings.Default: voyage-4-large

Document parser

Sign up at https://unstructured.io/?modal=try-for-free to get your Unstructured.io API key.
UNSTRUCTURED_TOKEN
string
required
API key for the Unstructured.io document parsing service.
UNSTRUCTURED_URL
string
required
Endpoint URL for the Unstructured.io general partition API.Default: https://api.unstructuredapp.io/general/v0/general

Vector DB

Sign up at https://qdrant.tech/ and create a cluster to get your API key and cluster URL.
VECTOR_DB_TOKEN
string
required
API key for the Qdrant vector database.
VECTOR_DB_URL
string
required
URL of your Qdrant cluster.
COLLECTION_NAME
string
required
Name of the Qdrant collection where document vectors are stored.

Memory (Mem0)

Sign up at https://mem0.ai/ to get your Mem0 API key.
MEM0_API
string
required
API key for Mem0, used to store and retrieve conversation memory across sessions.

Redis

Sign up at https://upstash.com/ and create a Redis database to get your connection URL.
REDIS_URL
string
required
Connection URL for the Redis instance (Upstash or any Redis-compatible endpoint).

Object storage

Sign up at https://app.elasticlake.com/ to create an object store and get your credentials.
OBJECT_NAME
string
required
Name of the ElasticLake object store bucket.Default: quark-object
OBJECT_ID
string
required
Access ID for the ElasticLake object store.
OBJECT_ACCESS_KEY
string
required
Secret access key for the ElasticLake object store.

Supabase

Sign up at https://supabase.com/ and create a project to get your project URL, anon key, and database connection string.
SUPERBASE_URL
string
required
URL of your Supabase project (e.g., https://<ref>.supabase.co).
SUPERBASE_KEY
string
required
Supabase anon (public) key for client-side operations.
SUPERBASE_DEV_KEY
string
Supabase service role JWT used during local development. Keep this secret — it bypasses Row Level Security.
SUPABASE_DB_URL
string
required
PostgreSQL connection string used by setup.sh to apply database migrations via psql.Format: postgresql://postgres.[REF]:[PASSWORD]@aws-0-[REGION].pooler.supabase.com:5432/postgres

Logging and environment

PINO_LOG_LEVEL
string
Log level for the Pino logger. Accepts standard levels: trace, debug, info, warn, error, fatal.Default: debug
ENV
string
Runtime environment. Set to production for production deployments.Default: dev

Build docs developers (and LLMs) love