Architecture decisionUpdated 2026-11-06

Local AI on a VPS: choose the workload before the server

A VPS may fit when the exact model artifact, workload, caller path, data retention and operating responsibility fit a host and its terms. Write those inputs down first. If they are still unknown, pause procurement; this hub helps route each question to the decision page that owns it.

Start with the dependency chain — workload, artifact, runtime, callers and retained data.
Conditional decision. Treat a server label such as “AI VPS,” a model parameter count, or a memory figure as a prompt for verification, not a fit result. Proceed only when the selected artifact and runtime can be checked against the actual host, the intended caller is authorized, persistent data has an owner, and the remaining unknowns are acceptable. Detailed memory sizing, runtime compatibility, security review and full cost arithmetic belong to the linked pages below.

Start with the workload, not a VPS label

“Local AI” can describe very different operating patterns: one person querying an interactive model, a scheduled batch that processes a bounded folder, an API serving several approved clients, or a stack that also embeds documents and retrieves passages. The words do not say how much work arrives, when it arrives, what must remain available, or what happens when the process is busy. A product name cannot answer those questions for you.

Describe the job before comparing plans. Name the real task and the people or workflows that will call it. Separate a private deployment objective from a guarantee: keeping inference on a server you administer may reduce which external services receive prompts, but it does not by itself secure that server, establish model rights, or prove that every adjacent service keeps data local. Record the intended boundary and validate each component against it.

Record the job and caller

Complete one row per materially different workload. Use units and a source for each estimate; if you do not know a value, mark it unknown and assign someone to resolve it. Do not turn a guessed peak into a guaranteed capacity requirement, or omit the peak because average use looks small.

FieldRecordWhy the decision needs it
Task and I/OChat, extraction, classification, embeddings, reranking or other; input and output types and size boundsDifferent tasks may need different artifacts, runtimes and data paths.
Caller and usersNamed users, application or scheduled workflow; owner and authorized sourceIdentifies who needs a route to the service and who can approve access.
Demand windowExpected requests, peak period, concurrency, burst duration and evidence/sourceAverage volume does not describe simultaneous requests or queue behavior.
Context and outputExpected input/context range, output bound, attachments and retentionContext and concurrency affect runtime resources; retained inputs affect storage and privacy choices.
Service objectiveAcceptable wait, availability window, recovery point and recovery time, if definedA single-user experiment and a service with commitments have different operating burdens.
OperatorNamed person or team responsible for updates, monitoring, backup, access review and incidentsA machine without an operator is not a complete service plan.

Keep these as requirements, not claims that a candidate server meets them. Later, compare the requirements to published host fields and a controlled observation on the exact candidate. A result from another model, runtime build, region or time window is not a substitute. Where no observation exists yet, leave the field open.

Keep optional architectures optional

Mark every component selected, rejected or undecided. A simple path may need only inference and a caller. Retrieval-augmented generation (RAG) may add an embedding model, source corpus, vector database and backup. A user interface or orchestration service may add its own process, data and access boundary. A remote API is a different placement choice. These are alternatives or additions only when your design actually selects them.

Do not add every conceivable component into one imagined bill or capacity total. Equally, do not call an unselected component free if it later becomes necessary. For every selected component, record a placement and owner; for an undecided one, record the decision needed and leave its quantities unpriced. If the intended workflow needs a service that is missing from the plan, the plan is incomplete.

Build the dependency ledger

Follow the chain from the exact artifact through the program that serves it, the workload and neighboring processes, the caller and network controls, then the state that must survive an update or failure. The chain ends with provider terms and exit needs. A break in any link can invalidate a purchase even when the headline CPU, RAM or accelerator figure looks attractive.

Keep quantities distinct. Artifact files occupy storage; system RAM, GPU VRAM and runtime allocation describe different resources. Activations and key/value (KV) cache depend on execution choices, while downloads, build caches, RAG data and recovery copies have their own disk paths. A model file size does not imply a universal RAM multiplier. Do not use a single “AI-ready” label to merge these fields.

Identify artifact, runtime, and target host

For each artifact, save its repository or source URL, exact revision or immutable identifier, file format, quantization/tensor metadata when supplied, file names and byte sizes, shard count, and associated projector, adapter or other sidecar. A repository name or a shorthand such as “7B Q4” is not a complete inventory: repositories can contain variants and GGUF can use mixed tensor encodings. Verify the files you would actually retrieve and the rights attached to them.

Then record the runtime, exact release or commit, build method, operating system and architecture, and whether the candidate exposes the required CPU instructions or accelerator and driver path. Compatibility is a gate to check against the chosen release documentation; it is not established by an API being described as OpenAI-compatible. That phrase does not promise complete feature fidelity, equivalent behavior or security controls. Runtime documentation changes, so capture the version and the documentation date alongside the decision.

For the host candidate, record provider, product and region as selected by you, published CPU architecture, RAM, storage allocation and accelerator details if disclosed. Mark unavailable specifications as unknown. Do not infer a GPU, VRAM amount, driver access, stock, support entitlement or suitability from an “AI” product label. Detailed artifact and memory fields go to the model and memory worksheet; processor requirements go to the CPU/GPU procurement checklist.

Identify data, network, and exit needs

List input sources, derived data, indexes, logs and application state separately. For each, note where it lives, who owns it, its retention period, access rules, backup method and acceptable loss. If you use a vector database, count its source corpus, indexes, replicas, exports and recovery copies as separate structures; a database label is not a complete storage inventory. The RAG and vector-data page owns that detailed inventory.

Draw the caller path in words: caller location, destination service, name or address used, network boundary crossed, and control that authorizes access. A process bind, container port publication, host firewall, provider network policy and application authentication are different layers. A successful local request does not demonstrate that a remote caller can reach the service safely. The endpoint reachability guide owns the per-topology review.

Finally, record what must be recoverable and what must be removable when you leave. Distinguish a model that can be retrieved again from prompts, private documents, adapters, configuration and indexes that may not be reproducible. Identify the person who will export and verify a copy, the destination, retention, and the recipient or deletion authority. Runtime unload, stopping a host, destroying a host, deleting files and canceling a subscription are separate actions. Keep this hub at the handoff level: the lifecycle and repull page details those states.

Decide whether the operating model fits

Fit is more than whether a model might start. It includes whether you can operate the service, maintain the selected software path, protect the intended caller boundary, retain the required data, and absorb the costs and recovery work. This is a decision framework, not a promise that a VPS or any vendor will meet an unmeasured target.

Usually worth evaluating

Continue to a candidate comparison when the workload has a named operator; inputs, outputs, peak window and caller are bounded well enough to investigate; you can identify the exact artifact and runtime release; and a plausible host path exists for verification. You should also know what state persists, how it is recovered, what rights and provider terms need checking, and who will review exposure before a service is reachable beyond its intended boundary.

A limited trial may be a sensible next decision if it has a defined scope, authorized data, a time window, stop criteria and an owner. Decide in advance what evidence would change your mind: for example, a required build feature unavailable on the candidate, a resource observation outside your stated limit, an unacceptable caller path, or unresolved terms. A trial is not automatically representative of production, and this article does not claim to have run one.

Pause or choose another path

Pause procurement if the required model or its rights are unclear; a runtime/build or host capability is unknown and decisive; required availability has no operator or recovery plan; a caller needs an unreviewed public endpoint; the provider terms are unresolved; or you cannot estimate the selected data and recurring obligations well enough to approve them. An empty requirement is a reason to investigate, not evidence that the requirement is zero.

Possible alternatives include reducing the task to a bounded batch, using a remote service after reviewing its data and terms, or postponing until the requirements are known. None is universally cheaper, safer or more suitable. Compare only the alternatives that meet the same workload and data boundary. If the unresolved issue is legal or contractual, collect the relevant text and obtain appropriate review; this page is not a legal verdict. Product permission, provider acceptable-use terms, model and dataset licenses, and rights in derived material are separate questions.

Stop condition: do not turn an unverified network setting into the security plan. If the design requires broader access than a reviewed caller and control matrix permits, keep the service unavailable to that caller until an authorized operator resolves the gap.

Walk the procurement sequence

Move in dependency order and carry the same workload ledger forward. Each destination returns information for this decision; it does not make a purchase recommendation without your requirements. Keep dates, versions and evidence with the fields they support.

Select artifact and memory worksheet

First identify the files and execution context. The artifact, quantization and VRAM worksheet separates file bytes, system RAM, VRAM, runtime allocation, activations, KV cache, concurrency, context, download cache and temporary/recovery disk. Return the actual file inventory and unresolved memory fields here. Do not choose a host from parameter count alone. Next, the runtime comparison checks whether a selected runtime and release support the needed format, platform, API behavior and operating requirements.

Context guidance is version-sensitive. The captured Ollama context page describes VRAM-based context defaults while its FAQ describes a 4096-token default with an override. Treat this discrepancy as a version and configuration check, not a universal default. Likewise, documented q8 or q4 KV-cache ratios apply to KV cache only, not model weights or total VRAM, and can have accuracy tradeoffs. These details belong in the relevant worksheet, not a one-number shortcut here.

Choose CPU/GPU and calculate cost

With a runtime path in view, use the CPU versus GPU checklist to compare disclosed architecture, device access, driver/toolkit responsibility, runtime build and security boundary. It does not rank speed or infer that basic CPU support equals GPU performance. Keep a candidate open if the required hardware or software details are missing.

Then pass selected host, disk, traffic, copies and period to the storage and egress cost worksheet, which alone owns the aggregate cost roll-up. Verify current units, included quantities, rates, taxes and terms directly for the chosen product and date. Unknown prices remain unknown; there is no general assumption of free or unlimited ingress or egress. Do not add mutually exclusive host options to the same total.

Check terms, reachability, and exit

Review the actual provider acceptable-use and service terms, the selected model and data licenses, and the intended activity separately. Captured Contabo material dated December 2025 and Vultr material dated March 11, 2026 are bounded historical examples, not current approvals or universal rules. Confirm the exact current terms for the chosen service and date. Fair use depends on context; an editorial checklist cannot decide it for you. The rights and terms checklist tracks those distinct questions.

Before exposing a service, enumerate callers and intended destinations, then test only from authorized vantage points under an approved plan. Process bind is not network authorization, and CORS is not authentication. Docker publication, host firewall rules and provider controls can affect different paths. See the private-network and bind guide for the topology worksheet and stop conditions. Separately, model retrieval, retained disks and recurring subscriptions can have different exit consequences. See the stop, deletion and repull guide before deciding what can be removed and who may approve it.

Add RAG and n8n only when selected

If retrieval is actually required, send collection, embedding, vector-index, payload, replica, snapshot and recovery requirements to the RAG and vector database storage guide. Its structures have separate disk and memory behavior; do not count them as a single “database size.” Keep the original source corpus and recoverable exports visible.

If n8n is part of the selected service, decide where its resident processes and AI/data services will run using the same-box versus split placement guide. This hub does not cover workflow construction, payload handling, runners or n8n security settings; those remain with the n8n decision pages. Once a child review is complete, bring its candidate values and still-open questions back into the fit ledger. Do not treat a link click as verification.

Fit worksheet and handoff

Copy one row per selected component and one separate row for each undecided component that could change the architecture. “Exact version/source” should be a URL or immutable identifier plus date; “evidence needed” names a document, field or authorized observation. Give every open value an owner and due decision. Preserve unknowns through handoff instead of filling blanks with zeroes.

Selected componentExact version / sourceHost or remote placementResource and data dependenciesNetwork callerPersistent stateOwnerUnknown / next checkDestination
Inference modelRepository, revision, format and file list: ____________Disk; separate RAM/VRAM/runtime fields: ____________Artifact, config, adapter: ____________Exact files and rights: ______Artifact and memory
Serving runtimeRelease, build and docs date: ____________Platform, accelerator, cache: ____________Configuration and logs: ____________Compatibility/API behavior: ______Runtime fit
Host candidateProduct, region, quote date: ______CPU/GPU/remote: ______Published CPU, RAM, disk, device: ____________Volumes and backups: ____________Undisclosed field or observation: ______CPU/GPU; cost
Caller and controlsApplication/version and control source: ____________Ports, route and auth boundary: ______Source, destination, vantage: ______Credentials owner (never record secret): ____________Authorized reachability review: ______Network path
Data / retrievalCorpus, embedding and DB versions: ____________Sources, indexes, replicas, copies: ____________Retention, export and recovery: ____________Recovery and terms: ______RAG data
Optional orchestrationSelected service/version: ______Same box / split / undecided: ______Resident resources and failure boundary: ____________State owner: ____________Placement decision: ______n8n placement

Acceptance gate: every selected component has an owner, placement and next check; every network caller has an intended path and review; every persistent item has a retention and recovery or deletion decision; provider and artifact terms have a dated source; and undecided components remain visibly undecided and unpriced. The handoff is not complete while a decision-critical unknown is ownerless. Attach the completed ledger to your procurement review, then ask the cost page to calculate from the selected values only.

For the candidate comparison, state the requirement and evidence side by side: requirement ______; candidate field ______; source and date ______; observation still needed ______; acceptance threshold and owner ______. If the candidate misses a threshold or the evidence cannot be obtained, stop and revise the architecture or the requirement with its owner. Do not quietly relax a privacy, availability or rights requirement to make a server appear to fit.

Route map: choose the next open decision

Decision still openRouteHandoff retained here
Does this workload fit, and which question must be resolved next?this page /use-cases/local-ai-vps/Selection sequence; keep unknowns with an owner and exit gate.
What storage and egress quantities belong in the selected-period total?Storage and egress cost worksheetCost roll-up; verify current units and rates there, with no formula or price assumed here.
Which CPU or GPU host fields must be verified for this workload?CPU versus GPU procurement checklistAccelerator fit; keep undisclosed host and compatibility fields open.
What do the exact model files require across disk, memory and runtime?Model quantization and VRAM worksheetSeparate artifact bytes, RAM, VRAM and runtime allocation; retain unresolved measures.
Which serving runtime and release match the selected platform and behavior?Ollama, vLLM and llama.cpp runtime comparisonRuntime choices; verify release, build and operating requirements.
What retrieval data, Qdrant structures and recovery copies are selected?RAG and vector database storage guideQdrant dataset, formulas and snapshot recovery; preserve topology and version unknowns.
Do the actual provider terms, intended use and artifact rights fit?Self-hosted AI terms and rights checklistCheck current provider terms and specific rights; leave legal conclusions to appropriate review.
Which authorized callers need each endpoint, and what controls apply?Private network and bind guideBindings, callers and firewall controls; retain topology and authorization gates.
What remains, bills or must be recovered after unload, stop or deletion?Stop, delete and model repull guideModel lifecycle and billable side effects; record owner, remaining state and recovery or exit gate.
Should optional n8n and AI/data services share a host or be split?n8n same-box versus split placement guideOptional n8n placement; leave resource, caller and recovery needs undecided until selected.

Evidence and updates

This selection hub preserves the existing Local AI route while replacing generic model-volume assumptions with a workload-led decision and child-page handoffs. It uses captured primary documentation for bounded technical context: Ollama context, FAQ, hardware, Linux and Docker documentation; vLLM installation, quantization, cache, CPU and API documentation; llama.cpp build and server documentation; Qdrant storage, memory tiers and snapshots; Docker publishing/firewall guidance; and provider/model rights materials. Sources establish only their stated scope and capture date.

Version-sensitive defaults, release compatibility, provider terms, product availability, billing units, price and user-specific capacity remain open until checked for the selected release, region and date. The captured Ollama context page and FAQ differ on their default-context wording; resolve against the deployed release and explicit configuration. llama.cpp commit material records source lineage, not a broadly released behavior. A source’s API examples do not establish security or deployment suitability.

Community issue captures are individual reports or requests. They are useful as prompts to inspect disk, context or recovery behavior in the reader’s chosen version; they do not establish frequency, root cause, support commitments or a general product defect. AI22 and AI28 were rejected captions and are not used as positive evidence. The lineage records AI46 and AI50 do not prove a release. Duplicate reacquisitions AI52–AI54 are not independent confirmation.

Source capture(s) checked 2026-11-06. This is an editorial source and structure review, not a deployment, benchmark, purchase, network test or legal review. Recheck mutable documentation and provider terms before acting. For evidence method and limitations, see Methodology.