Skip to content

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.

$ curl -fsSL https://docs.ac/install | bash
> irm https://docs.ac/install.ps1 | iex

Last updated:

Deployment posturesoperator · data boundary · LLM
  1. Cloud

    operatorArc53
    data boundaryArc53 multi-tenant cloudEU region
    network boundary
    llm locationCloud provider
  2. Managed

    operatorArc53
    data boundaryDedicated VPSyour region
    network boundary
    llm locationCloud provider or local engineor your own key (BYOM)
  3. On-premises

    operatorCustomer
    data boundaryYour network
    egress optional (hybrid)
    llm locationLocal engineor your cloud LLM (hybrid)
  4. 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,273

on GitHub

Contributors

226+

Licence

MIT

unlimited users

Stack boot

17 s

1 vCPU / 2 GiB · fresh compose up

What you need

With a cloud model the local hardware runs the app, ingest and retrieval, not the model. 1 vCPU, 2 GiB RAM, 10 GB disk is enough for one person; 2 vCPU, 4 GiB is the comfortable size.

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
 CPURAMDiskMeasured
Solo / evaluation1 concurrent user1 vCPU2 GiB10 GBBoots 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 users2 vCPU4 GiB10 GB10 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 users4 vCPU8 GiB10 GB25 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+.

docker ≥ 20.10 · compose ≥ v2.24 · x86-64 · arm64 · no git

Disk

Disk by variant

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

Local model

A local model needs a GPU

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

curl -fsSL https://docs.ac/install | bash on macOS and Linux, irm https://docs.ac/install.ps1 | iex in PowerShell on Windows. The installer fetches uv, installs the docsgpt package and hands the terminal to docsgpt up, which asks two questions and opens the app at http://localhost:7091.

  1. 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

  2. 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.

    --provider docsgpt | openai | anthropic | google | openrouter | groq | openai-compatible · --api-key

  3. 03

    It starts and prints the address

    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

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. Both routes are in the Quickstart.

Docker Compose, Kubernetes, ARM

Compose is the default. Kubernetes uses the raw manifests in deployment/k8s, applied with kubectl apply -k. ARM builds are available.

# 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"

# Kubernetes — raw manifests via kustomize, no Helm chart
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 self-hosted route; Kubernetes uses the raw 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 Elasticsearch, Qdrant, Milvus, LanceDB and pgvector as alternatives; pgvector also enables hybrid search and GraphRAG. ARM builds are available.

Self-hosted runtime components: defaults and alternatives
 DefaultAlternatives
OrchestrationDocker ComposeKubernetes raw manifests in deployment/k8s (kubectl apply -k) — no Helm chart
Architecturex86-64ARM builds available
User-data storePostgreSQLManaged Postgres such as Neon, RDS, Supabase
File storageLocal diskS3-compatible (MinIO, R2)
Vector storeFAISSElasticsearch, Qdrant, Milvus, LanceDB, pgvector — pgvector also for hybrid search and GraphRAG

Hosting guides

Step-by-step guides for common hosts — each a plain VPS or container platform running the Compose stack. Civo, DigitalOcean and Kamatera are community guides on dev.to.

lightsail · railway · civo · digitalocean · kamatera

Upgrading

Three paths, depending on how you installed. One-line installer: docsgpt upgrade, or run the install line again; settings and data stay. From a clone with Docker Hub images (setup modes 1–4): from deployment/ run docker compose -f docker-compose-hub.yaml pull && docker compose -f docker-compose-hub.yaml up -d. Built from source (mode 5): git pull && docker compose -f deployment/docker-compose.yaml build && docker compose -f deployment/docker-compose.yaml up -d. Kubernetes upgrades with kubectl set image per deployment. Full steps are in the upgrading guide; release notes are on GitHub releases.

Note for installs older than v0.17: that release moved the user-data store from MongoDB to PostgreSQL, a breaking migration. Follow the Postgres migration guide before running git pull or docker compose pull; existing deployments will not start cleanly without it.

Self-hosted vs Managed vs On-premises

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.

Self-hosted, Managed and On-premises compared
 Self-hosted (community)ManagedOn-premises
Who operates itYouArc53You, with Arc53 support
SupportCommunity (Discord, GitHub)Dedicated support under an SLA, 99.9 % uptimeProduction support contract (included in the recurring option)
SSO / SCIMIncluded in the open-source build; configured by youConfigured by Arc53 during setupConfigured with Arc53 during the POC
PriceFree · MIT · unlimited usersfrom $2,000/month, flat, usage allowance includedfrom $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?

Set AUTH_TYPE=oidc and configure your identity provider (Okta, Keycloak, Authentik 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.