Private AI

Self Hosted AI Coding Assistant: Options and Design

Checked 2026-10-31

Loading poll...

A self-hosted AI coding assistant is three parts: a model server you run, an editor or terminal tool that talks to it, and a gate in front for access control. Ollama or vLLM serves the model. Continue, Cline, OpenCode or Tabby are the client side. Your code stays inside your network if every part runs there. We checked the options on 31 October 2026.

The options

Tool

What it is

Licence (GitHub)

Last release or push we saw

Tabby

Self-hosted assistant server, positioned as an open alternative to GitHub Copilot

Shown as NOASSERTION; read its LICENSE

v0.32.0, 25 Jan 2026; last push 30 Jun 2026

Continue

Open-source coding agent and editor extension

Apache-2.0

v2.0.0-vscode, 19 Jun 2026; push 30 Oct 2026

Cline

Agent inside the editor

Apache-2.0

Active, push 31 Oct 2026

OpenCode

Open-source terminal agent

See its repository

Active

OpenHands

Open-source agent platform

MIT

Active, push 30 Oct 2026

Ollama or vLLM

The model server underneath

MIT and Apache 2.0

See Ollama and vLLM

Tabby's repository describes itself as self-contained, with no DBMS or cloud service needed, an OpenAPI interface, and support for consumer-grade GPUs. Its last release was in January 2026, so check recent activity before you commit a team to it. The repository is not archived and had a push on 30 June 2026. Its LICENSE puts content outside the ee/ directory under Apache 2.0 and content under ee/ under a separate ee/LICENSE, so read that file before you use the enterprise features.

Profiles for the agents are at Cline, OpenCode, OpenHands, Aider and Goose.

What an assistant actually has to do

"Coding assistant" covers three jobs, and they place different demands on the server.

Autocomplete. Suggestions appear as you type. Delay is everything: the answer has to arrive in a fraction of a second, so it needs a small, fast model and a server close to the developer. The prompt is short and the output shorter.

Chat. You ask a question about code and get an answer. Latency matters less. A mid-size model works, and a larger context window lets you paste more files.

Agent mode. The tool reads files, edits them and runs commands, in loops. It needs a model with tool calling and a large context, and it uses many requests per task. Ollama's docs ask for at least 64k of context for Claude Code, Codex and OpenCode, and 32K for Cline.

A common mistake is to size a server for chat and then switch on agent mode. Agent loops use many times more tokens and hold the model busy for minutes. Plan for the heaviest job you intend to allow. Check the model card of your completion model for fill-in-the-middle support before you choose it.

Architecture for a team

Developer editors and terminals
        |  HTTPS, API key per user
        v
   Reverse proxy (TLS, auth, rate limits, logs)
        |
        v
   Model server: vLLM or Ollama
        |
        v
   GPU(s) in your rack or a rented host

Each layer has a job.

The model server. Ollama is the quickest start and runs on one machine with an OpenAI-compatible endpoint on port 11434. vLLM is built for many concurrent requests, serves one model per process by default, and speaks the OpenAI protocol on port 8000. For tool calling on vLLM you pass --enable-auto-tool-choice and a --tool-call-parser suited to the model. The vLLM docs list parsers for several model families, including hermes and openai for OpenAI's open models. See Ollama vs vLLM.

The proxy. Ollama has no login. vLLM can check an API key with --api-key, and you can pass several for rotation. A reverse proxy adds TLS and per-user keys, so you can see who is using the GPU and revoke one person without breaking the others.

The clients. Each developer points the tool at your base URL. That is a config line for Continue, a provider setting for Cline, and an opencode.json entry for OpenCode, as in our local coding agent guide. Ollama's docs also list integrations for VS Code, JetBrains, Zed and Xcode.

Models and memory

Pick the model by the heaviest job. From Ollama's library pages:

Model

Size

Context

Where it fits

gpt-oss 20B

14 GB

128K

One 24 GB card, a few users

Qwen3-Coder 30B

19 GB

256K

One 24 to 48 GB card

gpt-oss 120B

65 GB

128K

One 80 GB card; cache is tight with many users

Qwen3-Coder 480B

290 GB

256K

A multi-GPU server; page says 250 GB minimum

Cache scales with context and parallel requests. For five developers in agent mode on a 120B model on one 80 GB card, you will hit memory limits before you hit compute limits. Our GPU requirements for LLMs page works through that sum.

What it costs

Software here is free. The server is the cost.

Rented GPU (example volumes we chose). An 80 GB A100 on Runpod Secure is $1.79 an hour, prices checked 31 October 2026. For a team that uses it 10 hours a day on 22 working days, that is 220 hours, about $394 a month. Left on 24/7 in a 30-day month it is about $1,289. A Runpod Community H100 SXM is $2.69 and Secure is $3.99, and Lambda lists a single H100 SXM at $4.29. Some links go through /go/ and may earn us a fee; it never changes our order.

Hosted open-model API. If you do not need the server to be yours, a hosted API charges per token. Groq lists gpt-oss-120b at $0.15 per million input tokens and $0.60 per million output tokens. Cloudflare Workers AI lists it at $0.35 and $0.75. For a team of five using, say, 40 million input and 8 million output tokens a month between them (an example, not a measurement), Groq's rates give $6.00 plus $4.80, about $10.80. That is far below the cost of a rented GPU, which is why this is a privacy decision before it is a cost decision.

Owned hardware. A workstation with a 48 GB or 80 GB GPU is a capital purchase. Compare it with rental using the break-even sum in our self-host guide.

For any host, check the hosting hub and the interactive hosting compare.

Privacy and control

What you control: where the prompts go, what is logged, how long it is kept, and who can reach it. What you must still check:

  • Telemetry. Each extension and agent has its own usage reporting. Read the docs and disable what you must. Cline's docs say telemetry is on by default in its extensions, desktop app and CLI, with an opt-out in settings or "telemetryOptOut": true in the CLI's global settings. We did not confirm the defaults for Continue, OpenCode or Tabby.
  • Extra services. Web search, web fetch and cloud model options in some tools send data out. Ollama's agent integrations route web search through Ollama's service.
  • Index data. Some assistants build a search index of your repository. Know where it is stored and who can read it.
  • Logs. A proxy that logs prompts for audit is also a store of your source code. Protect it like the repo.
  • Model provenance. Download weights from the publisher, and record the version.

Building the server side, step by step

This is the shared-server path, using commands from the vLLM docs.

1. Install vLLM on a Linux GPU host. The quickstart uses uv:

uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto
vllm download-kernels

Linux is required. vLLM does not support Windows natively, so use WSL if you must.

2. Serve a model with tool calling and a key. Agent mode needs the tool-call flags. The parser must match the model family, so read the tool calling page for yours:

vllm serve <model-id> \
  --api-key YOUR_LONG_RANDOM_KEY \
  --enable-auto-tool-choice \
  --tool-call-parser <parser-for-your-model>

The docs show llama3_json for a Llama example, and list hermes and openai as parsers for other families. The server listens on port 8000 by default and speaks the OpenAI protocol. A wrong parser is the most common reason tool calls fail on a self-hosted agent, so test with a tiny agent task before you roll it out.

3. Check it from a client.

curl http://localhost:8000/v1/models -H "Authorization: Bearer YOUR_LONG_RANDOM_KEY"

4. Put a proxy in front. Terminate TLS, forward to port 8000, and keep the raw port firewalled. Issue one key per developer at the proxy if your proxy supports it, so that you can revoke without restarting vLLM.

5. Point the clients. The base URL is https://your-host/v1, the key is the developer's own, and the model name is what /v1/models reports.

If you prefer Ollama for the first version, the same shape applies with port 11434, OLLAMA_HOST, and a proxy for authentication. See how to self-host an LLM for those steps.

Choosing the client

You want

Lean towards

Why from the docs and repos

Autocomplete plus chat in VS Code or JetBrains

Continue

Apache-2.0 editor extension, active in October 2026

An admin console, user management and a Copilot-like feel

Tabby

Positioned as a self-hosted alternative to Copilot; check maintenance

An agent inside the editor

Cline

Apache-2.0; Ollama documents provider setup and at least 32K of context

A terminal agent

OpenCode

Open source; Ollama documents opencode.json setup

Autonomous tasks in a sandbox

OpenHands

MIT; built as an agent platform

Small, reviewable diffs in git

Aider

Documents its own Ollama setup

Mixing is fine. Many teams run an autocomplete and chat tool in the editor and a terminal agent for larger tasks, all pointing at the same server. For the product comparison of the agents themselves, see AI coding agents and Cline vs Roo Code.

Governance a team needs

A shared model server becomes shared infrastructure, and a few rules save arguments later.

Access. Give each developer a key and a way to lose it. Tie keys to your identity provider if the proxy supports it. Remove access when someone leaves.

Limits. One person's agent loop can starve everyone else. Set per-key rate limits at the proxy and cap context length at the server. Ollama's OLLAMA_NUM_PARALLEL and context settings are the server-side levers.

Logging. Decide what you log. Request metadata, such as who called, when and how many tokens, is enough for capacity planning. Full prompt logging stores your source code in a second place, so only turn it on if audit rules require it, and protect the log accordingly.

Policy. Write down what may go into prompts. Secrets, customer data and licensed third-party code are common exclusions, and a self-hosted server does not remove the need for the rule.

Changes. Treat a model change like a dependency upgrade. Announce it, test it on a sample of real tasks, and keep the previous version available for rollback.

What can go wrong

The server runs out of memory under load. Symptom: it works for one developer and fails for five. Cause: cache grows with parallel requests and context. Fix: cap context, cap parallelism, or add capacity.

Agent edits are wrong. Symptom: the assistant changes unrelated files. Cause: a model too small for the task or a context too short to hold the project. Fix: a bigger model for agent mode, or narrower tasks.

Tool calls break. Symptom: the agent prints JSON instead of acting. Cause: the tool parser does not match the model. Fix: check the vLLM tool calling page for the right parser.

Developers route around it. Symptom: people paste code into a public chatbot anyway. Cause: the private assistant is slower or worse. Fix: measure and improve it, and offer a fast path for the hard cases, with a policy on what may go there.

The tool project goes quiet. Symptom: no releases for months. Fix: prefer clients with recent activity and a permissive licence, and keep the server API-compatible so you can swap clients.

Limits to plan for

  • Quality. Local models are not frontier models. Expect them to struggle on long tasks that touch many files. We have no verified benchmark to put a number on it.
  • Operations. A shared GPU server needs patching, monitoring and a person who owns it.
  • Upgrades. Runtimes and models move fast. Pin versions and upgrade on a schedule.
  • One model per vLLM process. If you want a fast completion model and a big chat model, that means two processes or two servers.

Picking by situation

Situation

Suggested design

Three developers, private repo

One GPU box, Ollama, Continue or OpenCode, VPN access

Ten developers, autocomplete and chat

vLLM with a mid-size model, proxy with per-user keys

Regulated environment, nothing leaves

On-premise server; see on-premise AI

Wants a Copilot-style server with an admin UI

Look at Tabby, after checking its maintenance and licence

Occasional use, no GPU

A hosted open-model API with a data agreement, or a rented GPU by the hour

Rollout plan

  1. Week one. One developer runs Ollama locally with Continue or OpenCode on a real task. Note where it fails.
  2. Week two. Move the model to a shared box. Add the proxy and keys. Invite three colleagues.
  3. Week three. Measure: requests per hour, peak concurrency, memory use from ollama ps or vLLM logs.
  4. Week four. Decide whether to scale, change models, or fall back to a hosted option for hard tasks.

At each step, write down what you learned. The notes are your sizing data for the next purchase.

Our take

The cleanest self-hosted setup is boring: one model server, one open-source client, one proxy, and clear ownership. Choose tools by how active the repository is and how clear the licence is, and be wary of any assistant that has not shipped in months. Keep the privacy claim narrow. "Prompts stay in our network" is true only if every tool, plugin and search feature in the chain stays in the network too. Our conclusions come from documentation and repository data, not from a test of output quality.

Related pages

Questions

What is the best self-hosted AI coding assistant?

It depends on what you need. Tabby is a self-hosted Copilot-style server, Continue and Cline are open-source editor extensions, and OpenCode and OpenHands are agents. All can point at a model you host.

What do I need to host one for a team?

A GPU server running Ollama or vLLM, an assistant that speaks the OpenAI API, a proxy with authentication, and a model with tool calling for agent work.

Is the code private?

Prompts stay on your server if the model and the assistant both run in your environment. Check each tool's telemetry and cloud features.

Can a self-hosted assistant match Copilot or Claude Code?

We have no verified benchmark to say so. Hosted frontier models are likely to lead on hard multi-file tasks; local models trade capability for control.

Loading poll...

Sources

  1. github.com/TabbyML/tabby
  2. github.com/continuedev/continue
  3. github.com/cline/cline
  4. github.com/All-Hands-AI/OpenHands
  5. docs.ollama.com/integrations/vscode
  6. docs.ollama.com/integrations/jetbrains
  7. docs.ollama.com/integrations/cline
  8. docs.vllm.ai/en/latest/features/tool_calling/
  9. docs.vllm.ai/en/latest/getting_started/quickstart.html
  10. runpod.io/pricing
  11. docs.cline.bot/more-info/telemetry

Part of the Wbcom Designs family

The all-in-one WordPress community stack

Also ours: wbcomdesigns.comvapvarun.combrndle.com