Install with pip
The DocsGPT backend is on PyPI as docsgpt: the API server, the Celery worker and the maintenance scripts in one package, behind a single docsgpt command. Use it when you want DocsGPT inside your own Python environment or process manager rather than the Docker images.
The package is the backend only. The web UI ships in the Docker images and in the repository under frontend/; serving it from the package is planned.
Requirements
- Python 3.12 or newer
- PostgreSQL for user data, with the
vectorextension if you setVECTOR_STORE=pgvector - Redis for the task queue and the cache
- An LLM: an API key for a hosted provider, or a local model server
Install
python -m venv .venv && source .venv/bin/activate
pip install docsgptExtras add the optional engines:
pip install "docsgpt[docling]" # DOC_PARSER_ENGINE=docling: OCR backend, structured output
pip install "docsgpt[milvus]" # VECTOR_STORE=milvusThe docling extra pulls in PyTorch, and on Linux the PyPI torch wheels bring the CUDA stack with them. On a CPU-only machine install the CPU build first, then the extra; pip keeps the torch it already has:
pip install --index-url https://download.pytorch.org/whl/cpu torch torchvision
pip install "docsgpt[docling]"uv pip install accepts the same two commands. With pipx, install docsgpt[docling] first, then replace the CUDA build inside its environment (--no-deps keeps pip from touching torchβs dependencies, which the PyTorch index carries in older copies):
pipx runpip docsgpt install --force-reinstall --no-deps --index-url https://download.pytorch.org/whl/cpu torch torchvisionConfigure
DocsGPT keeps its runtime files in a data home: the .env file it reads settings from, uploaded files under inputs/ and vector indexes under indexes/. The data home is the directory you run the commands from, or the directory DOCSGPT_HOME points to. DOCSGPT_ENV_FILE points at a .env kept somewhere else.
Create a .env in the data home. The minimum for a hosted LLM:
# LLM provider and model: see App Configuration for the options
LLM_PROVIDER=openai
LLM_NAME=<model name>
API_KEY=<provider API key>
# User data
POSTGRES_URI=postgresql://docsgpt:<password>@localhost:5432/docsgpt
# Worker-to-API authentication (required for uploads)
INTERNAL_KEY=<a long random string>Redis defaults to localhost:6379 (CELERY_BROKER_URL, CELERY_RESULT_BACKEND, CACHE_REDIS_URL). Every setting is listed in App Configuration.
Run
docsgpt migrate # create the database if it is missing and apply the migrations
docsgpt api # the API on http://127.0.0.1:7091
docsgpt worker # in a second terminal: the Celery worker, with the schedulerdocsgpt api listens on localhost only. Pass --host 0.0.0.0 to accept connections from other machines or containers, and put a reverse proxy with TLS in front of it for anything public.
The API applies pending migrations when it starts (AUTO_MIGRATE), so docsgpt migrate is the explicit step for deployments that want the schema in place before the first request or that run the API with a restricted database role.
Both commands print the data home they resolved on start-up. Run them from the same directory, or set DOCSGPT_HOME for both, so the worker finds the files the API stores and the API finds the indexes the worker builds.
The worker is not optional: query embedding runs on it, so search fails without one. docsgpt worker --help lists the queue, concurrency and pool options; --no-beat starts a worker without the scheduler when another worker already runs it. On Windows the scheduler cannot be embedded, so run docsgpt beat in a third terminal.
Other commands:
docsgpt api --reload: a development server with auto-reload.docsgpt prefetch-models: download the embedding, tokenizer and parser models ahead of time, for machines that go offline.docsgpt verify-offline: check that a prepared install starts with networking off.docsgpt reembed: re-embed every index after changingEMBEDDINGS_NAME(see Upgrading).
Upgrade
pip install -U docsgpt
docsgpt migrateRead the upgrade notes first when moving between minor versions.