Self-hosted AI chatbot, open source — a self-hosted ChatGPT alternative for your documents
DocsGPT is a self-hosted, open-source (MIT) AI assistant and RAG platform. Run curl -fsSL https://docs.ac/install | bash, answer two questions, open localhost:7091 and chat with your documents using a local or cloud model — free, with unlimited users.
llm locationCloud provider or local engineor your own key (BYOM)
On-premises
operatorCustomer
data boundaryYour network
egress optional (hybrid)
llm locationLocal engineor your cloud LLM (hybrid)
Air-gapped
operatorCustomer
data boundaryYour networkno egress
no external network
llm locationLocal engine only
Text version
Cloud: Arc53 operates a multi-tenant service and the LLM runs at a cloud provider. Managed: Arc53 operates a dedicated instance in your chosen region; the LLM runs at a cloud provider, on a local engine on the instance, or with your own key (BYOM). On-premises: you operate DocsGPT inside your network; the LLM runs locally, or (hybrid) prompts cross the boundary to a cloud provider you choose. Air-gapped: zero external network; LLM, embeddings, vector store and storage all run inside your perimeter.
GitHub stars
18,317
on GitHub
Contributors
239+
Licence
MIT
unlimited users
Stack boot
17 s
1 vCPU / 2 GiB · fresh compose up
What you need
With a cloud model, this hardware runs the app, ingest and retrieval, not the model. 1 GiB RAM is not enough: the stack boots but the first ingest is killed out of memory and retried forever; no document is ever indexed. Disk is for the slim stack; add 3.5 to 4.5 GB for the docling parser and 2 to 7 GB per local model.
Host size by concurrent users, DocsGPT with a cloud model
CPU
RAM
Disk
Measured
Solo / evaluation1 concurrent user
1 vCPU
2 GiB
10 GB
Boots in 17 s; 0.4 s to first token; a 30-page PDF ingests in 158 s. 1 GiB is not enough.
Small teamup to 10 concurrent users
2 vCPU
4 GiB
10 GB
10 users at 0.5 s to first token, 25 at 1.6 s; ingest twice as fast as on 1 vCPU.
Department25 to 50 concurrent users
4 vCPU
8 GiB
10 GB
25 users at 0.4 s, 50 at 1.7 s (1.0 s with 2 API workers); a 250-stream burst completes with no errors. Tesseract OCR fits on the same box.
A concurrent user asks, streams a ~5 s answer, waits 2 s and asks again — more aggressive than real use, so user counts are conservative. Measured 2026-09-16 on DocsGPT 0.21.0, with the Docker Compose standalone stack (backend, worker, Redis, PostgreSQL) on x86-64 Linux. The 100 to 500 user tiers are in the hardware guide.
Software
Docker
Docker Desktop or OrbStack on macOS, Docker Desktop on Windows, or Docker Engine with the Compose plugin on Linux, where the installer offers to install it. The installer brings uv and Python itself; git is only needed for the clone route. The free DocsGPT public API needs no key; a cloud provider needs its key, a local engine its endpoint. Minimum Docker Engine 20.10 with Compose v2.24 or newer; recommended Docker Engine 27 or 28 with the bundled Compose 2.29+.
10 GB for the cloud-model tiers (the slim stack is ~1 GB to download, 2 to 3.2 GB on disk); 20 GB with the docling parser or one local model; 40 GB and up when you keep several models. Runtime data stayed under 200 MB for a five-document corpus — plan by images and models, then add your documents plus about the same again for indexes.
slim ~1 GB download · docling +3.5 to 4.5 GB · one model 2 to 7 GB
llama3.2:3b (Q4) via Ollama on 4 vCPU / 8 GiB generates 4.3 tokens/s and the first token reaches DocsGPT after 42 s — a demo, not a deployment. GPU sizes by user count are in the hardware guide.
ollama · vllm · llama.cpp · 12 GB+ vram
One command, two questions
01
Who should reach DocsGPT?
Only this computer (default); other machines on the network, over plain HTTP with an access token; or a domain name with HTTPS, with a Caddy certificate and an access token. A domain asks for its name, and its DNS must point at this machine.
--expose local | network | domain · --domain docs.example.com
02
Which model provider?
DocsGPT public API, free and without a key (default); OpenAI; Anthropic; Google Gemini; OpenRouter; Groq; or an OpenAI-compatible server such as Ollama, vLLM or LM Studio, which asks for a base URL and a model name. Cloud providers ask for their API key.
Compose starts backend, worker, Redis and PostgreSQL (Caddy too for HTTPS), waits for the health check and opens http://localhost:7091. Settings and generated secrets sit in ~/.docsgpt/server/.env; docsgpt up --reconfigure asks the two questions again, and running the install line again upgrades.
docsgpt status | logs | upgrade | down | uninstall
zsh — docsgpt
$ curl -fsSL https://docs.ac/install | bash
==> Installing the latest docsgpt
Who should reach DocsGPT?
1) Only this computer (default)
2) Other machines on the network (plain HTTP, access token)
3) A domain name with HTTPS (Caddy certificate, access token)
Choose 1-3 [1]: 1
Which model provider?
1) DocsGPT public API (free, no key) (default)
2) OpenAI
3) Anthropic
4) Google Gemini
5) OpenRouter
6) Groq
7) OpenAI-compatible server (Ollama, vLLM, LM Studio, ...)
Choose 1-7 [1]: 1
Starting DocsGPT 1.0.0 from ~/.docsgpt/server ...
Waiting for DocsGPT to answer (the first start also sets up the database) ...
DocsGPT is running at http://localhost:7091
Manage it with: docsgpt status | logs | upgrade | down | uninstall
$
The installer fetches uv, installs the docsgpt package and hands over to docsgpt up. From a clone instead: git clone https://github.com/arc53/DocsGPT && cd DocsGPT && ./setup.sh on macOS and Linux, .\setup.ps1 on Windows; the setup script serves the app at http://localhost:5173, on this machine only unless you set DOCSGPT_BIND. Both routes are in the Quickstart.
Docker Compose, pip, Kubernetes, ARM
# One line: fetches uv, installs the docsgpt package, runs docsgpt up (Docker Compose)
curl -fsSL https://docs.ac/install | bash
# Windows, in PowerShell
irm https://docs.ac/install.ps1 | iex
# → app at http://localhost:7091 · docsgpt status | logs | upgrade | down | uninstall# Read it before running it
curl -fsSL https://docs.ac/install -o install.sh && less install.sh && bash install.sh
# A server, no questions: everything after -s -- goes to docsgpt up
curl -fsSL https://docs.ac/install | bash -s -- --yes --domain docs.example.com --provider openai --api-key "$OPENAI_API_KEY"
# Without Docker, on your own Postgres and Redis
pip install docsgpt && docsgpt up --native
# Kubernetes — fill in secrets and an S3 bucket first
kubectl apply -k deployment/k8s/
# From a clone — setup.sh, five modes, app at http://localhost:5173
git clone https://github.com/arc53/DocsGPT && cd DocsGPT && ./setup.sh
Docker Compose is the default; pip runs the same stack without Docker (docsgpt up --native), and Kubernetes uses the manifests in deployment/k8s, applied with kubectl apply -k. PostgreSQL is the user-data store, file storage is local or S3-compatible, and the vector store is FAISS by default with pgvector, Qdrant, Milvus, Elasticsearch and MongoDB Atlas as alternatives; pgvector also enables hybrid search and GraphRAG. ARM builds are available.
Self-hosted runtime components: defaults and alternatives
Default
Alternatives
Orchestration
Docker Compose
Kubernetes manifests in deployment/k8s (kubectl apply -k, pgvector and an S3 bucket) — no Helm chart; or pip with docsgpt up --native
Architecture
x86-64
ARM builds available
User-data store
PostgreSQL
Managed Postgres such as Neon, RDS, Supabase
File storage
Local disk
S3-compatible (MinIO, R2)
Vector store
FAISS
pgvector, Qdrant, Milvus, Elasticsearch, MongoDB Atlas — pgvector also for hybrid search and GraphRAG
Any VPS works: Hetzner, DigitalOcean, Amazon Lightsail or your own. One line sets it up with HTTPS.
Point your domain's DNS at the VM, open ports 80 and 443, and run the installer with --domain. Caddy gets the certificate, and DocsGPT asks for an access token until you add single sign-on for separate accounts.
Before you go live, run docsgpt doctor, keep the other ports closed and work through the security checklist. docsgpt backup writes the database and data volumes to one archive.
# DNS → this VM · ports 80 and 443 open
curl -fsSL https://docs.ac/install \
| bash -s -- --domain docs.example.com
# then
docsgpt doctor
docsgpt backup
Upgrading
Back up, read the upgrade notes, then upgrade the way you installed: docsgpt upgrade for the installer, pip install -U docsgpt and docsgpt migrate for pip, new image tags and kubectl apply -k for Kubernetes. Settings and data stay where they are.
Same MIT-licensed software in each column. What changes is who runs it, who supports it and how it is priced.
Self-hosted, Managed and On-premises run the same MIT-licensed software. Self-hosted is free and operated by you with community support; Managed is a dedicated instance operated by Arc53 for a flat monthly fee from $2,000; On-premises is the commercial engagement in your own infrastructure with implementation, benchmarking and production support, from $10,000 one-time or recurring. SSO and SCIM are in the open-source build in every case.
Production support contract (included in the recurring option)
SSO / SCIM
Included in the open-source build; configured by you
Configured by Arc53 during setup
Configured with Arc53 during the POC
Price
Free · MIT · unlimited users
from $2,000/month, flat, usage allowance included
from $10,000, one-time or recurring — no per-seat licence
Frequently asked questions
Is there a self-hosted AI?
Yes. DocsGPT is an MIT-licensed AI assistant and RAG platform you run yourself with Docker Compose or Kubernetes, on your laptop, a VPS or your own servers, with unlimited users.
Can ChatGPT be self-hosted?
ChatGPT itself cannot, but a self-hosted alternative can: DocsGPT gives a ChatGPT-style interface over your own documents, using an open-weight model run locally or a cloud model under your own API key. See the ChatGPT Enterprise comparison.
Can I run an LLM locally without a GPU?
Yes, for a demo. llama3.2:3b (Q4) via Ollama on 4 vCPU / 8 GiB generates 4.3 tokens/s, and through DocsGPT the first token arrives after 42 s because the retrieved context is prompt-evaluated first. For a team, serve the model on a GPU — an 8B model fits a 12 to 16 GB card for 1 to 5 users; sizes by user count are in the hardware guide. DocsGPT itself needs no GPU: with a cloud model it runs on 1 vCPU, 2 GiB RAM, 10 GB disk. Measured 2026-09-16.
How do I connect single sign-on when self-hosting?
Installs reachable from the network or a domain start with an access token. For separate accounts, set AUTH_TYPE=oidc and configure your identity provider (Okta, Keycloak, Authentik, Entra ID and others are documented); SCIM 2.0 provisioning is also included in the open-source build.
What is the difference between self-hosted and on-premises?
Same software. Self-hosted means you install and run it with community support; On-premises is the commercial engagement with implementation, benchmarking, production support and SLA.
Run it on your machine tonight
Quickstart in the docs, or a 30-minute demo if you are deploying this at work.