How to run GPT Researcher with a self-hosted model on a cloud GPU

Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install GPT Researcher from the official repository the way the README prints, serve an open-weight model on that machine, and set the Ollama or OpenAI-compatible base URL to that server. Copy the outputs directory before you destroy the instance, because destroying the instance deletes its disk and stops the server.

An agent can rent the GPU and serve the model the research agent calls. The agent pages are GPU compute for AI agents and the agent integration guide. Those pages are how an agent discovers a GPU and runs work on it. This page is the GPT Researcher setting. An answering engine whose Docker command publishes port 3000, and whose Ollama base URL placeholder is http://localhost:11434, is How to run Perplexica AI search with a self-hosted model on a cloud GPU. An assistant whose setup page opens http://localhost:42110, and whose Ollama page sets OPENAI_BASE_URL to http://localhost:11434/v1/, is How to run Khoj AI assistant with a self-hosted model on a cloud GPU. An editor whose Ollama config sets baseURL to http://localhost:11434/v1 is How to use Kilo Code with a self-hosted model on a cloud GPU. An editor whose local-model page sets the Ollama api_url to http://localhost:11434 is How to use Zed’s AI agent with a self-hosted model on a cloud GPU. A coding assistant whose Docker command publishes port 8080 and passes --model and --chat-model is How to run Tabby self-hosted coding assistant on a cloud GPU. A terminal client whose OpenAI-compatible page sets OPENAI_API_BASE is How to use Aider with a self-hosted model on a cloud GPU. An editor client whose install page is the VS Code extension is How to use Cline with a self-hosted model on a cloud GPU. An editor whose config.yaml sets an apiBase for chat, autocomplete, and embeddings is How to use Continue with a self-hosted model on a cloud GPU. An editor whose Ollama provider defaults to http://localhost:11434 is How to use Roo Code with a self-hosted model on a cloud GPU. A coding agent whose providers page sets package to the OpenAI-compatible provider is How to use OpenCode with a self-hosted model on a cloud GPU. A platform whose single-container guide sets CHAT_BASE_URL to http://host.docker.internal:11434/v1 for a local OpenAI-compatible server is How to run AutoGPT with a self-hosted model on a cloud GPU. An agent whose Docker command publishes port 5080, and whose Ollama provider sets api_base to http://host.docker.internal:11434, is How to run Agent Zero with a self-hosted model on a cloud GPU. An agent whose Ollama example sets base_url to http://localhost:11434/v1 is How to run OpenManus with a self-hosted model on a cloud GPU. A chat app whose Docker page runs docker compose up -d and whose Ollama page sets baseURL to http://localhost:11434/v1/ is How to run LibreChat agents with a self-hosted model on a cloud GPU. A chat app whose README runs docker compose up -d and whose environment page sets OLLAMA_PROXY_URL to http://127.0.0.1:11434 is How to run LobeChat agents with a self-hosted model on a cloud GPU. A terminal agent whose install page runs curl -fsSL https://www.openinterpreter.com/install | sh, and whose models page sets the Ollama base URL to http://localhost:11434/v1, is How to run Open Interpreter with a self-hosted model on a cloud GPU. A workspace app whose Docker quickstart publishes port 3001, and whose Ollama page sets the URL to http://127.0.0.1:11434, is How to run AnythingLLM agents with a self-hosted model on a cloud GPU. A repository agent whose local-models section sets api_base to http://localhost:11434 is How to run SWE-agent with a self-hosted model on a cloud GPU. A workflow editor whose Docker install publishes port 5678, and whose Ollama credentials default the Base URL to http://localhost:11434, is How to run n8n AI agents with a self-hosted model on a cloud GPU. A CLI whose providers page sets OLLAMA_HOST to http://localhost:11434 is How to run the goose agent with a self-hosted model on a cloud GPU. A canvas whose self-host page opens http://localhost/install is How to run Dify with a self-hosted model on a cloud GPU. A canvas whose ChatOllama page names a base URL is How to run Flowise with a self-hosted model on a cloud GPU. A flow editor whose Ollama component defaults the base URL to http://127.0.0.1:11434 is How to run Langflow with a self-hosted model on a cloud GPU. A CLI whose connect help sets --base-url to http://localhost:8000/v1 for openai-compatible is How to run Letta agents with a self-hosted model on a cloud GPU. A browser chat whose serve command listens on port 8080 is How to run Open WebUI on a cloud GPU. A Python agent library whose CodeAgent can take TransformersModel or an OpenAI-compatible server is How to run smolagents with a self-hosted model on a cloud GPU. A crew whose LLM class takes base_url for Ollama or an OpenAI-compatible server is How to run CrewAI with a self-hosted model on a cloud GPU. A graph runtime whose overview example does not name a model is How to run LangGraph agents with a self-hosted model on a cloud GPU. An AgentChat library whose Ollama example sets model to llama3.2 is How to run AutoGen agents with a self-hosted model on a cloud GPU. A typed agent whose vLLM example sets base_url to http://localhost:8000/v1 is How to run Pydantic AI agents with a self-hosted model on a cloud GPU. A framework whose README sets Ollama and HuggingFaceEmbedding is How to build LlamaIndex agents with a self-hosted model on a cloud GPU. A browser agent whose models page sets base_url to http://localhost:11434/v1 is How to run browser-use with a self-hosted model on a cloud GPU. A pipeline whose OllamaChatGenerator sets url to http://localhost:11434 is How to run Haystack agents with a self-hosted model on a cloud GPU. A program whose language-models page sets dspy.LM to ollama_chat/llama3.2:1b is How to run DSPy with a self-hosted model on a cloud GPU. An agent whose Ollama example sets id to llama3.1:8b is How to run Agno agents with a self-hosted model on a cloud GPU. A TypeScript agent whose local-models section sets url on the model object is How to run Mastra agents with a self-hosted model on a cloud GPU. A ChatAgent whose vLLM example sets ModelPlatformType.VLLM is How to run CAMEL-AI agents with a self-hosted model on a cloud GPU. A local agent UI whose Docker command publishes port 3000 is How to run OpenHands with a self-hosted model on a cloud GPU. The README install is pip install --upgrade metagpt: How to run MetaGPT with a self-hosted model on a cloud GPU. A coding-agent server whose card prints --tool-call-parser qwen3_coder is How to serve Qwen3-Coder for coding agents on a cloud GPU. A general vLLM install is How to serve an OpenAI-compatible API with vLLM on a cloud GPU. A general SGLang install is How to run SGLang on a cloud GPU. Ollama’s install and port 11434 are How to run Ollama on a cloud GPU. CloudGPU’s hosted gateway is a different base URL: How do I use an OpenAI-compatible API for open models?. How published weight sizes are read: How much VRAM do I need to run an LLM?. The tunnel is How to use SSH port forwarding on a cloud GPU. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU. If the server raises no kernel image on an RTX 5090: How to fix CUDA no kernel image on an RTX 5090.

The LICENSE file is the Apache License, Version 2.0, January 2004, and the GitHub license field on 2026-11-14 was Apache-2.0.

The steps below are copied from the upstream files named in each step, at the commit in Sources. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked. The official repository is assafelovic/gpt-researcher. The LLM page names other providers. This page does not copy those names. It copies the Ollama block, the custom OpenAI-compatible block, and the vLLM block.

What the docs print about memory

The README, the LLM page Ollama block, the custom block, the vLLM block, and running with Ollama print no GPU GB figure. A file under docs/docs/proposals prints memory figures. This page does not use that file. This page does not mark a catalog row as enough.

GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from GET /v1/public/gpu-catalog (generated_at 2026-11-14T17:06:44.884Z). The catalog response also includes an availability field. This page does not copy it. Every catalog row below has min_gpu_count 1. Rows are sorted by vram_gb, then by name. Which listing you can start is on Deploy.

The catalog template list had no GPT Researcher template. It did have Ollama templates (jupyterlab-ollama, ollama-qwen3, ollama). Those templates are a different install. This page does not treat them as GPT Researcher.

Catalog name vram_gb
RTX 2080 8
RTX 3080 10
RTX 2080 Ti 11
RTX 3080 Ti 12
V100 16G 16
A30 24
RTX 3090 24
RTX 4090 24
RTX 4090D 24
RTX 4080 SUPER 32G 32
RTX 5090 32
RTX 5090D 32
V100 32G 32
A100 40G 40
A800 40G 40
A40 48
RTX 4090 48G 48
RTX 4090D 48G 48
RTX A6000 48
Ascend 910B 64
NVIDIA RTX PRO 5000 72G 72
RTX PRO 5000 72G 72
A100 80G 80
A800 80G 80
H800 80
RTX 6000D 83
H20 96G 96
RTX PRO 6000 96G 96
RTX PRO 6000 Max-Q 96
H20-3e 141G 141

Install GPT Researcher

The README at commit ddd4db36208d9c8e49f3b2436efda97baecb5433 says to install Python 3.12 or later. The pip-package page at the same commit says Python 3.10 or later. Those are not the same line. Both are copied. This page does not pick one.

README clone and server, copied. The export block on that page also sets a provider key and a retriever key. This page does not copy those names. The same section says that for custom OpenAI-compatible APIs you can also set OPENAI_BASE_URL. That line is copied.

git clone https://github.com/assafelovic/gpt-researcher.git
cd gpt-researcher
export OPENAI_BASE_URL={Your custom API base URL here}
pip install -r requirements.txt
python -m uvicorn main:app --reload

The README says to visit http://localhost:8000. The getting-started page’s Poetry command is poetry install, then poetry shell, then python -m uvicorn main:app --reload. Its virtualenv command is python -m venv env, then python -m pip install -r requirements.txt after activation. This page did not run those installers.

The pip-package page, copied:

pip install gpt-researcher

The Docker page says to clone .env.example, add keys, and save it as .env. It says to add the relevant langchain package in requirements.txt for the LLM you choose. The examples on that sentence are not copied. The Ollama section of the LLM page says to add langchain-ollama. Then, copied:

docker-compose up --build
docker compose up --build

The Docker page says the root .env is never copied into the images, Compose loads it into the backend containers at runtime, and loading an optional env_file requires Docker Compose 2.24 or newer. It says the default flow starts the Python server on localhost:8000 and the React app on localhost:3000. The compose file at the same commit publishes 8000:8000 and 3000:3000. A discord service in that file publishes 3001:3000 under the discord profile. The page’s default-flow sentence does not name that service. The prebuilt-image lines on the Docker page are not the image names in the compose file. Docker page, copied:

docker pull ghcr.io/assafelovic/gpt-researcher:latest
docker pull ghcr.io/assafelovic/gpt-researcher-frontend-nextjs:latest

The compose file sets image: gptresearcher/gpt-researcher and image: gptresearcher/gptr-nextjs, with pull_policy: build. This page does not merge those strings.

Docker CLI line the Docker page prints, copied:

docker run -it --name gpt-researcher -p 8000:8000 --env-file .env  -v /absolute/path/to/gptr_docs:/my-docs  gpt-researcher

The pages this guide read do not print hf download or huggingface-cli. Weight download for a vLLM or Ollama server is a different guide: How to download a Hugging Face model. This page does not paste that command into the .env, because these pages do not print it.

Point GPT Researcher at the endpoint

The LLM page’s Ollama section says GPT Researcher supports both Ollama LLMs and embeddings. Its block, copied:

OLLAMA_BASE_URL=http://localhost:11434
FAST_LLM=ollama:llama3
SMART_LLM=ollama:llama3
STRATEGIC_LLM=ollama:llama3

EMBEDDING=ollama:nomic-embed-text

The same section prints a Granite block. This page does not copy those tags. gpt_researcher/llm_provider/generic/base.py at this commit sets base_url from OLLAMA_BASE_URL when it is not already supplied, and the fallback string in that file is http://localhost:11434.

The running-with-Ollama page prints a different local block. Copied:

OPENAI_API_KEY="123"
OPENAI_API_BASE="http://127.0.0.1:11434/v1"
OLLAMA_BASE_URL="http://127.0.0.1:11434/"
FAST_LLM="ollama:qwen2:1.5b"
SMART_LLM="ollama:qwen2:1.5b"
STRATEGIC_LLM="ollama:qwen2:1.5b"
EMBEDDING_PROVIDER="ollama"
OLLAMA_EMBEDDING_MODEL="nomic-embed-text"

That page says to replace FAST_LLM and SMART_LLM with the model you downloaded. config.py at this commit warns, when EMBEDDING_PROVIDER is set: EMBEDDING_PROVIDER is deprecated and will be removed soon. Use EMBEDDING instead. When that value is ollama, the same function reads OLLAMA_EMBEDDING_MODEL. The Python files this page searched do not read OPENAI_API_BASE. They read OPENAI_BASE_URL. llm.py uses os.environ.get("OPENAI_BASE_URL", None). generic/base.py comments that this is support for custom OpenAI-compatible APIs via OPENAI_BASE_URL. This page does not rewrite the running-with-Ollama block to match that.

The LLM page’s custom block says to create a local OpenAI-compatible API using the llama.cpp server, and to specify openai:{your-llm}. Copied:

OPENAI_BASE_URL=http://localhost:1234/v1
OPENAI_API_KEY=dummy_key

FAST_LLM=openai:your_fast_llm
SMART_LLM=openai:your_smart_llm
STRATEGIC_LLM=openai:your_strategic_llm
OPENAI_BASE_URL=http://localhost:1234/v1
OPENAI_API_KEY=dummy_key

EMBEDDING=custom:your_embedding

The placeholders your_fast_llm, your_smart_llm, your_strategic_llm, and your_embedding are the strings that page prints. This page did not replace them.

The vLLM block on the same page, copied. The model id is the string that block prints. This page did not read a model card for it, and it does not copy a GPU GB figure for it.

VLLM_OPENAI_API_KEY=[Your Key] # you can set this to 'EMPTY' or anything
VLLM_OPENAI_API_BASE=[Your base url] # for example http://localhost:8000/v1/
FAST_LLM=vllm_openai:Qwen/Qwen3-8B-AWQ
SMART_LLM=vllm_openai:Qwen/Qwen3-8B-AWQ
STRATEGIC_LLM=vllm_openai:Qwen/Qwen3-8B-AWQ

The provider key vllm_openai is the key that block prints. A vLLM server’s listen address is a different document: How to serve an OpenAI-compatible API with vLLM on a cloud GPU. This page does not merge that guide’s flags into this block.

None of these pages print an ssh command. How to use SSH port forwarding on a cloud GPU is how a program on your computer reaches a port on the instance. This page does not add an ssh command. After a forward that lands on port 8000 of your computer, the URL the README already prints is http://localhost:8000. After a forward that lands on port 3000, the URL the Docker page already prints is localhost:3000.

The getting-started export includes a retriever key, and the search-engines page says each search engine has its own API key requirements. The default retriever that page names is not copied here. Documented options on that page that do not print a required key, or that point at an instance you run, are copied.

RETRIEVER=duckduckgo is on the search-engines page with no key variable on that line. gpt_researcher/retrievers/duckduckgo/duckduckgo.py constructs a client and does not read a key variable.

RETRIEVER=searx is on the same page. gpt_researcher/retrievers/searx/searx.py reads SEARX_URL and raises SearxNG URL not found. Please set the SEARX_URL environment variable. when it is missing. The exception text also names a public-instance list. This page does not send you there. It does not print a SearxNG install command, because that file does not print one.

RETRIEVER=arxiv is on the same page. gpt_researcher/retrievers/arxiv/arxiv.py does not read a key variable.

The OpenAlex section says OpenAlex works without an API key, and that OPENALEX_EMAIL and OPENALEX_API_KEY are optional. Copied:

RETRIEVER=openalex

A research run

The CLI page’s command, copied. The help text in cli.py for research_report and detailed_report includes durations. This page does not copy those durations. The README deep-research section also prints a duration and an amount. This page does not copy them.

python cli.py "What are the main causes of climate change?" --report_type research_report

The CLI page lists research_report, detailed_report, resource_report, outline_report, custom_report, and subtopic_report. gpt_researcher/utils/enum.py at this commit also has ReportType.DeepResearch = "deep". The CLI page says the generated report is saved as a Markdown file in the outputs directory and the filename is a unique UUID. cli.py at this commit writes outputs with a sanitized title stem, at most 60 characters, or untitled, then writes a PDF unless --no-pdf and a DOCX unless --no-docx. Those two descriptions are not the same. This page does not merge them. This page did not run the command.

The pip-package example calls researcher.conduct_research() and researcher.write_report(). It does not print an outputs path. The compose file mounts ${PWD}/outputs at /usr/src/app/outputs and ./outputs into the Next service.

When it fails

Context limit. The LLM page says some other models might run into context limit errors, and unexpected responses. A token-limit note on that page names hosted models. This page does not copy those names.

Retriever key or SearxNG URL. The search-engines page says each search engine has its own API key requirements. The Searx class raises the SEARX_URL exception above when that variable is missing. This page did not reproduce that exception.

CUDA out of memory. The pages this guide read print no GPU GB figure. If the model server raises CUDA out of memory, use how to fix CUDA out of memory on a cloud GPU. This page does not pick a smaller tag for you.

“CUDA error: no kernel image is available for execution on the device” on an RTX 5090. The pages this guide read do not pin a PyTorch build and do not name compute capability 12.0. The RTX 5090 guide says that card is compute capability 12.0 (sm_120). This page did not re-test a model server on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.

What to copy off, then destroy

The CLI writes under outputs. The compose file also mounts my-docs and logs. Copy outputs before you destroy the instance. The model server stops with the instance. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

The billing page states the billing rule in these words:

Per-minute options have a 1-minute minimum; unused prepaid minutes are refunded when you destroy the instance. Some configurations use whole-hour billing with a 1-hour minimum; unused time within a charged hour is not refunded on voluntary stop. The billing period, minimum charge and initial prepayment are shown before confirmation. No subscription.

Amounts are not copied here.

Frequently asked questions

What memory figure do the GPT Researcher pages print?

The README, the LLM page’s Ollama block, the custom block, the vLLM block, and the running-with-Ollama page print no GPU GB figure. A file under docs/docs/proposals prints memory figures. This page does not use that file. This page does not mark a catalog row as enough. Which listing you can start is on https://cloudgpu.app/deploy.

Which settings point GPT Researcher at a server on the GPU?

The LLM page’s Ollama block sets OLLAMA_BASE_URL to http://localhost:11434, FAST_LLM, SMART_LLM, and STRATEGIC_LLM to ollama:llama3, and EMBEDDING to ollama:nomic-embed-text. The running-with-Ollama local block sets OLLAMA_BASE_URL to http://127.0.0.1:11434/, FAST_LLM to ollama:qwen2:1.5b, and OLLAMA_EMBEDDING_MODEL to nomic-embed-text. The custom block sets OPENAI_BASE_URL to http://localhost:1234/v1 and FAST_LLM to openai:your_fast_llm. The vLLM block’s example base is http://localhost:8000/v1/ and FAST_LLM is vllm_openai:Qwen/Qwen3-8B-AWQ. Those pages do not print an SSH command. This page did not run them.

Where does a research run write the report?

The CLI example is python cli.py “What are the main causes of climate change?” --report_type research_report. That page says the report is a Markdown file in the outputs directory and the filename is a unique UUID. cli.py at this commit writes a Markdown file under outputs whose stem is a sanitized title, and also writes PDF and DOCX unless --no-pdf or --no-docx. This page did not run the command.

What license sentence does the file print?

The LICENSE file is the Apache License, Version 2.0, January 2004. The GitHub license field on 2026-11-14 was Apache-2.0. Repository HEAD was ddd4db36208d9c8e49f3b2436efda97baecb5433, committed 2026-11-09T15:17:18Z. That license text is not a CloudGPU rate.

Sources (read 2026-11-14, Asia/Shanghai)

  • assafelovic/gpt-researcher commit ddd4db36208d9c8e49f3b2436efda97baecb5433, committed 2026-11-09T15:17:18Z. GitHub license field Apache-2.0. LICENSE is the Apache License, Version 2.0, January 2004
  • README at that commit. Python 3.12 or later. pip install -r requirements.txt. python -m uvicorn main:app --reload. http://localhost:8000. OPENAI_BASE_URL for custom OpenAI-compatible APIs. The export block’s provider key and retriever key are not copied. The deep-research section’s duration and amount are not copied
  • docs/docs/gpt-researcher/gptr/pip-package.md at that commit. Python 3.10 or later. pip install gpt-researcher. conduct_research and write_report. No outputs path
  • docs/docs/gpt-researcher/getting-started/getting-started-with-docker.md at that commit. docker-compose up --build. docker compose up --build. localhost:8000 and localhost:3000. Compose 2.24 or newer. Prebuilt ghcr.io/assafelovic/gpt-researcher:latest and ghcr.io/assafelovic/gpt-researcher-frontend-nextjs:latest. Docker CLI publishes 8000:8000
  • docker-compose.yml at that commit. Images gptresearcher/gpt-researcher and gptresearcher/gptr-nextjs. Ports 8000:8000 and 3000:3000. Discord profile 3001:3000. Mount ${PWD}/outputs
  • docs/docs/gpt-researcher/llms/llms.md at that commit. Ollama block. Custom OpenAI-compatible block. vLLM block vllm_openai:Qwen/Qwen3-8B-AWQ and example http://localhost:8000/v1/. No GPU GB figure. Other provider names and hosted model ids are not copied. The Granite block is not copied
  • docs/docs/gpt-researcher/llms/running-with-ollama.md at that commit. Local block with ollama:qwen2:1.5b, EMBEDDING_PROVIDER=ollama, OLLAMA_EMBEDDING_MODEL=nomic-embed-text, and OPENAI_API_BASE. No GPU GB figure
  • gpt_researcher/config/config.py at that commit. EMBEDDING_PROVIDER is deprecated and will be removed soon. Use EMBEDDING instead. The ollama branch reads OLLAMA_EMBEDDING_MODEL
  • gpt_researcher/utils/llm.py and gpt_researcher/llm_provider/generic/base.py at that commit. They read OPENAI_BASE_URL. They do not read OPENAI_API_BASE. Ollama fallback http://localhost:11434
  • docs/docs/gpt-researcher/getting-started/cli.md and cli.py at that commit. Climate-change example. Report type names. outputs. UUID sentence in the doc. Sanitized title stem in cli.py. --no-pdf and --no-docx. Durations in the help strings are not copied
  • gpt_researcher/utils/enum.py at that commit. DeepResearch = "deep"
  • docs/docs/gpt-researcher/search-engines/search-engines.md at that commit. RETRIEVER=duckduckgo, searx, arxiv, openalex. OpenAlex works without an API key. The default retriever name is not copied
  • gpt_researcher/retrievers/duckduckgo/duckduckgo.py, searx/searx.py, and arxiv/arxiv.py at that commit. SEARX_URL is required for Searx. The public-instance list in the exception text is not used as the path
  • docs/docs/proposals/local-server-deployment-guide.md was not used for memory figures
  • The pages above do not print hf download or an ssh command
  • Public GPU memory: https://cloudgpu.app/v1/public/gpu-catalog (generated_at 2026-11-14T17:06:44.884Z). GET /v1/public/compute-capabilities returned feature flags and no GPU list. The catalog had no GPT Researcher template. It listed Ollama template ids jupyterlab-ollama, ollama-qwen3, and ollama

Cards you can start are on the Deploy page. Amounts are not copied here.

Last updated: 2026-11-14 (Asia/Shanghai).