Cost worksheetUpdated 2026-11-06

Local AI VPS storage and egress cost worksheet

Calculate from the files, copies, transfers, billing units and period you actually select. A blank rate is unknown, not zero; an included allowance is a provider-specific term, not proof that every transfer is free.

Decision rule. First decide what runs where and what must persist. Then inventory the selected artifacts and copies, map each transfer to a billing period, and apply only a rate and unit verified for that exact provider product. Keep unknown quantities and charges visible in the result. This page owns the complete local-AI cost roll-up; model memory fit belongs to the artifact and memory worksheet, while detailed Qdrant sizing belongs to the RAG data guide.

Select a billing period and scope

A total only means something when its boundary is stated. Choose a calendar month, provider invoice cycle, or another explicit interval, and decide whether you need startup cost, a steady period, or both. Month one can include initial pulls and setup copies that do not recur; later periods can include updates, backups, caller responses, or a migration. Do not compare one-time totals with recurring totals without labeling the time basis.

Fix the period and currency

Write down the provider and exact product, quote or checkout date, currency, billing cycle, and the units shown beside each price. Record whether a charge is per provisioned capacity, actual use, event, hour, month, or a one-time purchase. Capture the source URL and the date and person who checked it. If tax, currency conversion, minimum duration, rounding, or renewal treatment is not confirmed, enter UNKNOWN and keep it out of any claimed subtotal.

Keep provider facts separate from your workload estimates. A public page may define a unit or allowance but not your actual traffic, while your file inventory cannot establish the provider’s rate. Preserve both the quoted billing basis and the observation method. If an invoice cycle is not a calendar month, convert estimates only when the provider’s proration and measurement rules are known.

Mark selected and excluded components

Draw a short boundary for the candidate: host or hosts, runtime, optional vector service, source data, recovery destination, callers, and any external service. Mark each item SELECTED, EXCLUDED, or UNDECIDED. Price only the selected path. A same-host arrangement and a split-host arrangement are alternatives; do not add both host bills to one scenario. Likewise, a local model and a remote API, or an optional replica and a single copy, are not automatically simultaneous line items.

State which costs this worksheet includes: compute if needed for a total, persistent disk, separate volume, backup or snapshot, transfer, and separately evidenced fees or tax. The cost tool may hold general host charges, but carry its selected values into this one period ledger so storage and traffic are not lost. Avoid counting a provider-included disk twice as both base capacity and an add-on.

Inventory persistent and temporary data

Inventory by location and lifecycle, not by vague labels such as “model space.” Disk bytes describe files on storage. System RAM, GPU VRAM, runtime allocation, activations, and KV cache describe memory use; they are not disk line items and must not be converted into disk charges with a universal multiplier. Temporary extraction, download, build, or migration space can peak above the retained footprint, so write its peak requirement separately.

Model and runtime artifacts

For each selected artifact, record repository or origin, exact revision, file names, format, encoding metadata where available, shard count and bytes, and any projector, adapter, tokenizer, or other sidecar actually required. Add runtime image layers, downloaded model copies, build outputs, compile caches, and retained prior versions as separate rows. A tag or parameter count alone does not give exact bytes. Prefer a measured file inventory from the selected source or host; label estimates with their method and date.

Record destination path or volume, number of copies, retention rule, and whether re-downloading is acceptable. Separate the source registry’s remote bytes from the local stored bytes: compression, packaging, retries, or transfer accounting may differ. A runtime cache can coexist with an explicitly downloaded model; do not assume deduplication across applications, images, hosts, or provider products. If you cannot determine whether two paths share stored bytes, leave the count unresolved until inspected.

RAG, user data, and recovery copies

For a retrieval setup, inventory source corpus, processed chunks, embedding inputs or outputs, vector database files, payloads, indexes, exports, and logs according to what you actually retain. Article 6 owns Qdrant structure estimates and quantities; bring its per-structure and per-copy disk results here without reusing them as RAM estimates. Count original data and recovery data once per actual location.

Distinguish live data, an application export, a provider snapshot, a backup product, an independent off-host copy, staging during migration, and a replica. These names do not guarantee independent failure domains or equal billing. A snapshot may have a separate provider charge, consume provisioned capacity, or use a different billing rule; verify the selected product. A replica may be live availability capacity rather than a restorable backup. Record retention and deletion ownership for each copy so a “temporary” export does not quietly remain billable.

Use one row per retained object or group whose billing treatment is genuinely the same. Include the location, count, size unit, measurement date, owner, retention period, and the evidence that supports the number. Unknown restore or export sizes remain open pending a documented estimate or a measured, non-production sample appropriate to the selected version.

Temporary space and headroom

List peak temporary space for a model pull followed by extraction, a container image update, compilation, index rebuild, snapshot creation, or migration. These operations may overlap with the retained source and destination, so the peak can exceed the final footprint. Do not assume that free space is recycled immediately, that a cache is shared, or that a tool uses atomic replacement.

Temporary capacity is not necessarily a separate billed item if it fits within already provisioned disk, but it can force a larger disk tier or an additional volume. Mark the resulting billable capacity separately from the temporary byte estimate. If the peak method is unknown, record UNKNOWN, identify who will verify it, and treat the candidate as not yet sized. Operational headroom is a capacity margin, not an invented vendor fee.

Convert inventory into billable quantities

Now map each inventory row to a provider rule. Copy the rule as written, including unit, direction, period, threshold, and whether the quantity is measured, provisioned, included, or metered. Match units before multiplying. Decimal GB and binary GiB are different units; record the source unit and the conversion applied rather than silently treating them as identical.

Disk and storage tiers

For the exact candidate, capture included disk, provisioned disk, extra-volume capacity and rate, tier boundaries, minimum volume size, snapshot or backup treatment, and any per-copy or retention charge. Note whether a selected volume is billed while the host is stopped and whether deleting the compute resource affects it; these are product-specific questions. Cite the provider page or quote beside each answer. If included capacity covers your files, do not invent a disk surcharge; still account for any separately billed storage or required larger tier.

Fill one row for each capacity class or separately charged object:

Storage itemNeeded / provisionedIncluded or boundaryBillable unit and ratePeriod / retentionSource, owner, unknown
Host disk, exact artifacts and OS/runtime[bytes or GB; scope][included amount; tier][unit; rate or UNKNOWN][billing period][URL; checked date; owner]
Additional volume, if selected[provisioned capacity][minimum / threshold][unit; rate or UNKNOWN][attached / retained rule][URL; checked date; owner]
Snapshot, backup, or independent copy[count and bytes][included? unknown until verified][unit; rate or UNKNOWN][retention window][URL; checked date; owner]

Do not add mutually exclusive tier prices together. If capacity crosses a step, calculate the chosen tier or the chosen volume model according to the provider’s actual rule. Keep base compute, storage included in that base, extra storage, and backup distinct so the same gigabyte is not charged twice by arithmetic alone.

Egress and repeated transfers

Make each transfer event a separate row. The observed or estimated byte count is your workload input; the billing unit, included allowance, and rate are provider inputs. Record the response boundary: which host or service sends the bytes, to which counterpart, and in which direction. In a split design, container-to-host, cross-host private traffic, external caller responses, and provider-to-provider export may have different paths and rules. Do not assume their billing treatment from a process address or network label.

The worksheet below contains the exact fields to copy. Duplicate the row for each event and billing scope; keep unknown source or destination region explicit rather than guessing a distance band.

Transfer eventDirectionSourceDestination or counterpartSource/destination region or distance pairBytes and measurement periodBilling unit and rateProvider source URL / unknownsOwnerNext action
[initial model pull][in/out per provider definition][registry, region][host / volume][known pair or UNKNOWN][bytes; one-time or window][unit; rate / allowance / UNKNOWN][URL; checked date; unresolved][named person or role][resolve listed unknown / measure transfer; due date]
[update, rebuild, or repull][direction][origin][target][known pair or UNKNOWN][bytes; count per period][unit; rate / allowance / UNKNOWN][URL; checked date; unresolved][named person or role][resolve listed unknown / measure transfer; due date]
[image pull, backup, export, or restore][direction][registry / source host][host / recovery destination][known pair or UNKNOWN][bytes; event count / period][unit; rate / allowance / UNKNOWN][URL; checked date; unresolved][named person or role][resolve listed unknown / measure transfer; due date]
[selected caller/API responses][outbound from response sender][AI host or service][caller / network][known pair or UNKNOWN][response bytes × requests / period][unit; rate / allowance / UNKNOWN][URL; checked date; unresolved][named person or role][resolve listed unknown / measure transfer; due date]

Initial model transfer, an update, a repull after deletion, and a rebuild are distinct events. Include image-layer pulls, source imports, Qdrant snapshots, migration staging, and independent restore copies when selected. For client traffic, define whether bytes are counted at the model service, host, proxy, or another boundary. Use measured traffic over a representative window or an explicitly labeled estimate; do not multiply a peak rate across a whole month without saying so.

Provider allowances, included directions, regions, measurement windows, thresholds, and overage basis change by product and can change over time. AI49 is a dated Contabo help capture with product-specific traffic wording, not a universal egress schedule. It does not establish a current rate for every plan or another provider. Check the live product terms and keep the URL and date next to the row.

Unknowns and nonzero assumptions

Use UNKNOWN for a missing rate, unit, allowance, retained-volume rule, traffic count, tax treatment, or region. Do not replace an unknown with zero, “unlimited,” or a competitor’s number. A total with unresolved charge-bearing inputs is an incomplete estimate; show the known subtotal and the exact unresolved rows beside it. If a value is optional, mark it contingent and calculate a separate scenario rather than blending it into the selected case.

Record a verification owner and next action: for example, obtain the current product quote, identify whether a snapshot is retained storage, or measure a bounded transfer window. A reader should be able to update one field without rebuilding the entire inventory.

Calculate subtotals and total

Use provider-specific arithmetic only after quantities and units are aligned. For a provisioned storage item, multiply the billable capacity by the verified rate for the matching period, following the provider’s minimums and tier rules. For traffic, apply the documented allowance and overage basis to the matching direction and window. Some products may charge by provisioned capacity rather than measured occupancy; others may use a different structure. There is no universal vendor formula.

Build a period ledger with a status column and a named Stop / proceed check for each selected line. Compare its selected quantity, unit, source and current rate with the evidence. Mark STOP while any of those charge-bearing inputs is unresolved; proceed to a buying decision only when they are all verified or the decision owner explicitly accepts the uncertainty. Sum only rows whose units, scope, and rate are verified. Keep unverified items visible in an “incomplete / contingent” section, not in a numeric zero column. For a tiered charge, preserve the inputs and the selected branch so the result can be recomputed after a quote changes.

SubtotalCalculation inputTime basisStatus / evidenceStop / proceed check
Recurring compute and selected host(s)[selected architecture price and any separate fees][period][verified URL/date or UNKNOWN][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]
Recurring disk and volumes[chosen tier / provisioned units × verified rule][period][verified URL/date or UNKNOWN][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]
Backup, snapshot, and retained copies[each selected copy under its own rule][period / retention][verified URL/date or UNKNOWN][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]
One-time transfers[events × bytes, then documented billing basis][startup / migration][measured or estimated; rate status][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]
Recurring traffic or overage[period bytes, allowance, threshold, rate][period][verified URL/date or UNKNOWN][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]
Other fees and tax[separately evidenced amounts][one-time / period][verified or UNKNOWN][STOP if selected quantity, unit, source, or rate is unresolved; otherwise PROCEED]

Present a known recurring subtotal, known one-time subtotal, and unresolved exposure separately. The full total is ready for a buying decision only when every selected charge-bearing row has a known quantity, unit, scope, and current rate, or the decision owner explicitly accepts the uncertainty. Keep tax unknown until the applicable checkout or written quote establishes it.

If you use a toy calculation to check the spreadsheet, mark every input hypothetical and use neutral tokens rather than a provider-like price. For example, if a selected copy is 3 billing units and the verified rate is R per unit per period, the recurring line is 3 × R for that period, subject to the provider’s minimum and tier rule. This is a formula demonstration, not a quote. Replace R and the unit from the chosen source; do not publish the toy output as a market estimate.

Review for double counting: base plan versus included capacity; source model versus its retained duplicate; a snapshot versus an independent backup; both sides of a transfer where only one side is billable; or optional hosts counted together. Also check omissions: image and model repulls, response egress, retained unattached storage, backup retention, taxes, and renewal terms. A spreadsheet should show the row owner and evidence date, not just the final currency cell.

Cost handoffs for architecture and exit

This worksheet prices a chosen architecture. It does not choose hardware or tell you to retain every optional service. For workload-first placement and host selection, start with the Local AI decision hub. Carry the same selected-host and data rows into adjacent decisions, and keep alternative scenarios separate so their totals can be compared fairly.

CPU/GPU, same/split, and optional services

Use the CPU versus GPU procurement checklist to define candidate host requirements without treating a hardware label as a performance result. Use the same-box versus split placement guide to identify which services and data copies are resident on each host. Transfer only the selected candidate’s compute, disk, recovery, and network rows into this total. A split design can add a host and cross-host paths; it may also change which data copies exist. Measure and price each chosen path independently.

For optional embedding, reranking, user interface, vector search, or remote inference, record selected status before adding a charge. Article 6 supplies Qdrant quantity fields; this page alone combines them with host, storage, and transfer rates. Do not reproduce a second cost calculator in a child page.

Deletion and repull scenario

Price an exit as a sequence of states, not as one assumed deletion event. An application unload, host stop, compute destruction, file deletion, retained-volume cleanup, and subscription cancellation can have different effects. For a selected product, identify which artifacts remain, who checks them, what recurring charges continue, and which transfer is required to restore or move them. Then estimate a future pull from the origin and any export to a new destination as separate rows in the transfer worksheet.

Article 9 owns the operational distinctions and the recovery/cancellation route. Follow its stop, delete, repull, and cancellation checklist; return here with actual retained-copy quantities and product terms. Do not assume a cache will deduplicate a repull, that deletion cancels a storage subscription, or that a stopped host has no billable resources. The Vultr captures AI29 and AI30 describe bounded Vultr-specific stop and destruction cases; they say nothing universal about Contabo or other products. Confirm current terms for the exact resource before relying on them.

Provider questions

Ask neutral, product-specific questions and attach the answer to a row: What capacity is included and how is extra capacity billed? Are snapshots, backups, and unattached volumes charged separately? What is retained after stopping or destroying compute? Which transfer directions and counterpart regions count toward an allowance? What measurement period, rounding, threshold, or overage unit applies? Are image or model transfers measured differently? What must be canceled separately, and how are tax and renewal shown at checkout?

Do not treat a help article, a cached quote, or a plan name as a current offer for every region. Capture the exact product, date, currency, URL, and any support answer. Contabo terms captured in December 2025 and Vultr terms captured March 11, 2026 are bounded historical examples in the source packet, not current universal approvals or billing commitments. The captures of Vultr stopped-instance billing and Vultr Cloud GPU destruction are specific to the documented product; check current selected-resource behavior. For usage-policy questions, see the terms and acceptable-use checklist; it does not supply this page’s prices.

Evidence and update gate

Source capture(s) checked 2026-11-06. The source packet includes Qdrant storage, memory-tier, snapshot, and capacity-planning documentation; Contabo terms and traffic help material; bounded Vultr stop, destroy, GPU FAQ, and acceptable-use captures; and three individual issue reports used only as narrow prompts for inspection. None provides the reader’s selected file sizes, traffic volume, current quote, tax, or product-specific checkout result. Issue reports AI42, AI44, and AI45 do not establish prevalence, root cause, supported cleanup behavior, or a vendor promise; AI45 is a feature request, not evidence that a feature exists.

Before purchase, refresh mutable product terms, prices, units, capacity boundaries, allowances, and cancellation treatment against the exact current product page or quote. Record when and by whom each row was verified. If the evidence is unavailable, leave the row UNKNOWN and keep the total marked incomplete. Method and evidence handling are described on the Methodology page. This article is an editorial worksheet; no instance, transfer, restoration, benchmark, or billing account was operated for it.