Why teams import custom GGUF models into Ollama instead of pulling from ollama.com
A security or platform lead who has approved specific model weights for private use needs those exact files to run inside the organization's boundary. Ollama can serve locally imported GGUF and Safetensors files, so the approved artifact can stay under your control from the moment it is received. Ollama's FAQ states that when it runs locally, it does not see your prompts or data. That statement describes the runtime, not your whole environment, so you still need to verify the configuration. This page covers the import path, model storage, concurrency settings and the decisions about keeping models in a private internal catalog.
Pulling a model from ollama.com ties the model reference, the download and the update cadence to a source outside your change process. Importing a file gives you an artifact you can hash, review, record and store in your own repository or artifact store. Each approved model should have a record that names the weight file, its checksum, the quantization applied and the license terms that apply to the weights. The license of the Ollama runtime, which is MIT, does not answer those questions for the model itself. Confirm the model license with your legal or compliance owner before the import, not after.
The local API listens on 127.0.0.1 port 11434 by default and does not require authentication. That default is safe only while the service stays on the host. If you change the bind address with OLLAMA_HOST or place a proxy such as Nginx in front of it, authentication, transport encryption and access logging become your responsibility. Decide which network segments may reach the API before the first import. Also decide whether cloud features should be disabled with OLLAMA_NO_CLOUD=1 or the server configuration file, and confirm in your own environment that the setting is in effect and that egress rules match your documented position.
Ask any implementation partner to put the scope in writing: the validation steps for each imported file, the storage location set with OLLAMA_MODELS, the concurrency values for OLLAMA_NUM_PARALLEL, OLLAMA_MAX_LOADED_MODELS and OLLAMA_MAX_QUEUE, and how the internal catalog is maintained. Ollama's pricing page says running models on your own hardware is unlimited, while cloud model plans are priced separately. Ask which costs are one-time, such as validation and catalog setup, and which recur, such as patching, model reviews and capacity changes. Ask who signs off on each model before it reaches users.
Choosing between GGUF, Safetensors and a pre-quantized file
This table compares the three starting points a team usually has when bringing its own weights into self-hosted Ollama: GGUF files, Safetensors from a training pipeline, and sharded multi-file checkpoints. Read each row against the Ollama version you run, because Safetensors import support and sharded layouts can change between releases. The main takeaway is that a GGUF file already tested with llama.cpp is the shortest path, and conversion work grows with each step away from it.
| Starting point | When it fits | Preparation needed | Confirm against your Ollama version |
|---|---|---|---|
| GGUF weights ready for llama.cpp | Weights already converted and tested with llama.cpp, often quantized by the team that owns the model. | Confirm the file loads in llama.cpp, record its quantization level, and point the Modelfile FROM line at the file. | Confirm the GGUF format and model architecture are accepted by the Ollama build you run. |
| Safetensors from a training or fine-tuning pipeline | Full-precision weights exported from training, with config and tokenizer files in one directory. | Keep the config, tokenizer and generation files together, then convert and quantize with llama.cpp tools before import. | Confirm whether direct Safetensors import supports your architecture. If not, convert to GGUF first. |
| Sharded multi-file checkpoint | Large models split into numbered Safetensors shards with an index file. | Keep every shard and the index file in one directory, and check that no shard is missing before import. | Confirm the version accepts the sharded layout directly, or merge and convert the checkpoint before import. |
| Pre-quantized file from an outside source | Weights downloaded from a public model hub, already quantized by a third party. | Verify the source, license terms and file hash against your approved catalog before any import. | Confirm the quantization type is supported, then record it in the internal catalog entry. |
Quantizing custom weights with llama.cpp before import
Ollama runs models through a llama.cpp backend, so many teams prepare custom weights with llama.cpp tooling before they import them. Converting and quantizing ahead of time lets you choose the file size and memory footprint of a model instead of accepting whatever the import path produces. The decision you are making is how much precision to trade for a smaller model that fits the hardware you actually operate, and that choice should be made before anyone builds a catalog entry around the file.
Quantization reduces the numeric precision of the weights. Lower precision generally shrinks the model file and the memory it needs at load time, which can decide whether a model fits on a given GPU, on CPU-only nodes, or within the memory budget of a shared host. The cost is output quality, and the loss is not uniform: a model may stay fluent on general prompts while degrading on your domain terms, structured output or long-context tasks. Weigh model size, quality and hardware together. A smaller quantized model on hardware you already run can serve your workload better than a larger one that forces a hardware purchase.
Before you convert anything, confirm which conversion scripts, input formats and quantization types your pinned Ollama release accepts. Ollama bundles its own llama.cpp version, so a format that works with a current upstream release may not import cleanly into the version you have pinned. Check the Ollama release notes and its model import documentation for the exact release, and record the llama.cpp version used for conversion next to the resulting file so the import can be reproduced later.
Quantized output must be tested against your own evaluation set, not only against a generic benchmark. Build a set of representative prompts from your real use cases, including edge cases and the outputs that matter most to your business, then run the same set against the unquantized reference and each candidate quantization. Score the results with criteria your reviewers agree on, and keep the scores with the model record. Repeat this test whenever the conversion tooling, the quantization type or the pinned Ollama release changes.
Ask your internal team or any implementation partner to quote this work against a written scope. The quote should name the conversion and quantization steps, the evaluation set and who builds it, the hardware used for testing, and the number of candidate formats compared. Ask how the evaluation results will be recorded and reviewed before a model is promoted to the internal catalog.
Import a custom model into self-hosted Ollama step by step
This sequence takes a self-hosted Ollama server from a pinned release to a custom model that answers requests on your own network. Each step ends with a check you can record, so the result can be reviewed and reproduced. Run it on a staging host first, then repeat it on production with the same release and the same approved files.
Pin the Ollama release
Choose one Ollama release, install that exact version on the staging host, and record the version string and the package source in your change record. Your team or DeployOpen performs the install from the release channel you approve. Read the release notes on the GitHub releases page before you choose, because Ollama ships frequent releases and a later version may change how models load. The step is complete when the version command on the host returns the pinned value. Use the same release for the test, the production install and the rollback plan.
Disable cloud features and confirm the bind address
Set OLLAMA_NO_CLOUD=1 in the service environment or the server configuration file. Leave the bind address at its default of 127.0.0.1 on port 11434 unless your reverse proxy requires a change through OLLAMA_HOST. Restart the service so the settings take effect. The step is done when the listener on port 11434 is bound only to the loopback interface and the service logs confirm cloud features are disabled. Confirm the exact log wording in your own environment, since it can change between releases.
Prepare the weight files
Collect the Safetensors or GGUF files from your fine-tuning output or approved model store, along with the tokenizer and configuration files the model needs. If you quantize with llama.cpp, run the conversion on a separate build host and record the command line and tool revision. For sharded Safetensors, keep every shard and the index file together in one directory. The step ends with an inventory that lists each file, its size and its SHA-256 hash, filed with the model's approval record.
Verify the weights against the approved source
Compare each file hash with the value in the approval record and confirm the license terms and intended use are on file before import. Check that the shard count matches the index file and that the architecture and tokenizer match what was approved. Confirm that the Ollama release you pinned supports that model format and architecture, because support varies by release. The step is complete when a reviewer signs the inventory and no file differs from its approved hash.
Write the Modelfile
Create a Modelfile with a FROM line that points to the GGUF file, or to the directory holding the Safetensors files, using an absolute path on the Ollama host. Add only the parameters and template that the approved model card specifies. Keep the Modelfile in version control next to the file inventory. The step is done when a reviewer has checked every line of the Modelfile against the approval record and confirmed that no base model is pulled by name from a public library.
Create the model in the local store
Run the create command against the Modelfile, using a name that follows your internal catalog convention, such as an illustrative team prefix and version tag. Ollama writes the model into its local store, under the models directory for your platform unless OLLAMA_MODELS points elsewhere. Confirm that the local list output shows the new name and that the store path sits on a volume you back up. The check passes when the model is listed locally and no push or upload command was run.
Test the local REST API on port 11434
From the Ollama host, send a short generate or chat request to the local API on port 11434 using the model name you created. Confirm the response is coherent and that the request completed without contacting an outside service. Then confirm that cloud endpoints are unreachable from the host, since cloud features are disabled. Save the request, response and network check as an acceptance record. The step closes when the local call succeeds, the cloud check fails as expected and the record is filed.
Sizing storage and concurrency for imported models
The first sizing decision is where imported models live. Ollama's documented default store is ~/.ollama/models on macOS, /usr/share/ollama/.ollama/models on Linux, and the .ollama\models folder in the user's profile on Windows. Imported weights can be large, especially full Safetensors checkpoints before quantization, so most self-hosted deployments set OLLAMA_MODELS to move the store onto a dedicated volume. Confirm that the account running the Ollama service can write to that path on your operating system, and that the volume holds the source files, the created model and every other model in your internal catalog. Set the variable in the service environment, not only in an interactive shell, so restarts keep the same location.
OLLAMA_NUM_PARALLEL controls how many requests one loaded model serves at the same time. Its documented default is 1, so each model handles requests one at a time until you raise it. Raising it is not free. Each parallel slot needs working memory for its context, so higher parallelism increases memory use on the same hardware. For an imported model, measure memory at the context length your applications actually send and at the concurrency your users will generate. Record the figures before you change the setting, so you can tell whether a throughput gain is worth the memory it costs.
OLLAMA_MAX_LOADED_MODELS sets how many models can stay in memory at once. Its documented default is three times the number of GPUs, or three when running on CPU. If your catalog holds several large imported models that get requested together, the loaded-model limit and available memory decide whether requests trigger unloads and reloads. Those reloads add latency that can look like a throughput problem. OLLAMA_MAX_QUEUE, documented at 512 queued requests by default, bounds how much work waits. A deep queue hides overload behind long waits, while a shallow one turns short bursts into refused requests. Confirm how your clients handle a refused request, including whether they retry and with what backoff.
Treat the documented defaults as a starting point. Throughput depends on model size, quantization, context length, accelerator memory and the request mix from your applications, and the defaults know none of these. Run a load test with your own imported models at the context lengths and concurrency your users will produce. Record latency, memory use, unload events and queue depth for each combination of the three settings. Set the variables only after the results show where latency and memory start to diverge. Repeat the test after any model update, Ollama upgrade or hardware change, and ask whoever runs the test to report results per model.
Security controls for an internal Ollama model catalog
Approved weights are only as protected as the runtime that serves them. The controls below decide who can reach the Ollama API, what the server can send outside your network, and how model files are stored and traced. Review them together, because a safe bind address alone does not protect a catalog that other hosts can reach through a misconfigured proxy.
Default loopback binding
Ollama binds to 127.0.0.1 on port 11434 by default. Keep that default unless a specific client must reach the server, and confirm the effective bind address after every service restart or configuration change. Check it from a second host to confirm the port is not reachable where it should not be.
Authenticating reverse proxy
When OLLAMA_HOST exposes the API beyond loopback, place an authenticating reverse proxy such as Nginx in front of it. The proxy should enforce identity, restrict which routes are reachable, and terminate TLS. Confirm that clients cannot bypass the proxy by connecting directly to the Ollama port on the same host or network.
No built-in API authentication
The local Ollama API at port 11434 does not require authentication. Anyone who can open a connection to it can list, pull, create and run models. Treat network reachability as access control, and document that the proxy or network layer is the only authentication boundary for the catalog.
Disabling cloud features
Set OLLAMA_NO_CLOUD=1, or the equivalent entry in the server configuration file, so the runtime does not use cloud features on hosts that must keep data internal. Verify the setting in the running service's environment, not only in a file, and confirm with your own tests which network destinations the host still contacts.
Access logging at the proxy
Enable access logs on the reverse proxy to record the caller identity, request path, method, status and time for each API call. Ship these logs to your central log platform and set retention to match your audit policy. Ask your security team which fields they need, since the Ollama API itself does not provide per-user audit records.
Model directory permissions
Ollama stores models in a default directory per operating system, and OLLAMA_MODELS moves that location. Restrict write access to the service account, keep read access narrow, and make the directory separate from general user storage. Verify ownership and mode after every import, because a new model file with loose permissions weakens the catalog's approval record.
Keeping approved models in a private internal catalog
The operating model for approved custom models is simple to state: each GGUF or Safetensors artifact is checksummed when it is accepted, stored on internal storage, imported into Ollama with a documented Modelfile, and recorded in an internal register that names the owner, the source, the quantization and the approval reference. Nothing enters a serving host unless it has passed that path. The register is the document your auditors, incident responders and platform team will read first, so it should be treated as a controlled record rather than a wiki page that drifts.
The checksum step deserves attention because it is the only proof that the file serving users today is the file that was reviewed. Record the hash algorithm you use, store the hash in the register next to the artifact path, and verify it again before every import and after every copy between storage locations. Keep the Modelfile in version control with the same review rules as application code, so that the system prompt, template and parameter values are as traceable as the weights. Where a model is sharded, the checksum set and the shard order must be recorded together.
Keeping models on internal storage has a clear security reason. Ollama can publish custom models to ollama.com, and a model that contains proprietary fine-tuning data, internal prompts or licensed weights should not leave your network through a publish step that someone runs by habit. The local Ollama API on your hosts does not require authentication by default and does not expose prompts or data when it runs locally, so the protection comes from your storage, network and access controls. Confirm with your platform team that the import hosts cannot reach the public registry for push operations, and that the cloud features are disabled where policy requires it, for example with OLLAMA_NO_CLOUD=1.
Change control and model review have to map onto this workflow, and that mapping is specific to your organization. Ask your change advisory board and model risk or AI governance owners which step counts as approval: the artifact acceptance, the Modelfile review, the import into a staging host, or promotion to production. Confirm who may write to the internal storage location, who may run the import, and who may update the register. Decide how a rollback works when a model is withdrawn, and whether the register entry, the file and the running model are removed together.
Plan for drift and for the register itself becoming stale. Models will be re-quantized, re-imported after Ollama upgrades and retired, and each change should create a new register entry rather than overwrite the old one. Schedule a periodic reconciliation between the register, the storage contents and the models listed on each host, and treat any mismatch as an incident to investigate. Ask your compliance lead which records must be retained and for how long, because that retention period will decide how much history the register and the stored artifacts must keep.
What to confirm before importing a model
Importing a custom model touches file formats, hardware, licensing, access control and the Ollama release itself. Each check below depends on your own servers, documents and plan terms, so confirm it with evidence before the model enters your internal catalog.
Format and sharding support
Confirm that the Ollama release you run accepts your exact file format, whether GGUF or Safetensors, and your sharding layout, including how multi-part weight files are referenced in the Modelfile. Support can differ by architecture and quantization type, so test a full import of each model variant on a staging server before the catalog accepts it. Record the exact release tag with the model entry so the import can be reproduced.
Memory for the quantized size
Measure memory against the quantized file you will load, not the original full-precision weights. Load the model on hardware that matches production, then check memory under your expected concurrency, since OLLAMA_NUM_PARALLEL and OLLAMA_MAX_LOADED_MODELS both affect how many requests and models share memory at once. Ask the team that produced the quantized file for its size and the context length they tested, and store both in the catalog entry.
License terms of base weights
Read the license attached to the base weights before you fine-tune, quantize or redistribute them. Derivative models can carry obligations from the original license, such as attribution duties, use restrictions or limits on commercial use. Ollama's MIT license covers the runtime, and it says nothing about the weights you load. Have legal review the license file that ships with each model, and keep a copy beside the imported model in your internal catalog.
Enterprise features on self-hosted servers
Ask Ollama whether model access controls, which its Enterprise plan lists, apply to a deployment you run yourself, and under which terms. Running models on your own hardware is listed as unlimited, but plan features are priced and scoped separately, so confirm coverage in writing before you design access around it. If the controls do not reach your server, plan authentication at a reverse proxy or gateway you operate and document that boundary for your assessors.
Release-specific import behavior
Check how v0.40.5, released on 14 October 2026, and the v0.40.6 pre-release, published on 16 October 2026, change import behavior before you upgrade. Pre-releases can alter parsing, quantization handling or default settings, so test your imported models against both versions in staging. Pin the server version in your deployment manifest, and review the release notes for import-related changes before promoting any update to production.
What does a custom model import cost and how long does it take?
What drives the cost of importing a custom model into Ollama?
The cost depends mainly on scope: how many models you import, whether they arrive as Safetensors or GGUF, and whether they need conversion and quantization with llama.cpp tooling. Quantization testing adds work because each level needs comparison against your own evaluation prompts. Hardware and storage sizing matter because large weights and multiple quantized variants consume disk and memory. Catalog and access design, including who can pull which model, adds configuration and review time. Running models on your own hardware is always unlimited according to Ollama's pricing page, so the main recurring spend is your infrastructure. Cloud plans are priced separately and only apply if you use them. Ask for each driver to be itemized in the written scope.
How long does a custom model import usually take to complete?
Duration follows the same drivers as cost, so the honest answer depends on your scope rather than a fixed figure. A single GGUF file that already meets your format and quantization needs moves much faster than a set of sharded Safetensors models that need conversion, testing and catalog setup. Approval steps for model licenses, data handling review and access policy often take longer than the technical import itself. Hardware procurement or cloud account provisioning can also set the pace. Any timeline should appear in the written scope with the assumptions behind it, including who provides inputs and by when. Confirm the timeline against your own change calendar and environment before you commit to a date.
Who pays for what during a model import engagement?
Engagements are usually fixed-scope, so you pay DeployOpen for the agreed deliverables: planning, conversion and import work, quantization testing, catalog configuration, documentation and handover. You pay for everything in your environment, including servers or GPUs, storage, cloud accounts, network components and any commercial model licenses. Ollama is open source under the MIT license, so the runtime itself carries no license fee for local use. If your team also uses Ollama's cloud models, those plans are billed separately by Ollama. Clarify in writing which party holds model licenses, which party owns the imported artifacts and which party pays for infrastructure changes made during the work.
What is one-time work and what recurs with each Ollama upgrade?
One-time work includes designing the import pipeline, converting and quantizing the initial models, building Modelfiles, setting up the internal catalog and documenting the process. Recurring work begins with each Ollama upgrade. Ollama ships frequent releases, for example v0.40.5 on 14 October 2026 and a v0.40.6 pre-release on 16 October 2026 according to its GitHub releases page, so you should expect regular checks. After each upgrade, you need to re-test imported models, confirm that concurrency settings such as OLLAMA_NUM_PARALLEL still fit your load, review storage growth and update configuration. Ongoing testing and upgrade support can be contracted as a retainer, or your team can keep it in-house.
Can our own team import custom models without an outside partner?
Yes, many teams can, provided they have engineers comfortable with model formats, llama.cpp conversion and quantization, and Linux service administration. The core steps are documented: create a Modelfile that points at your weights, import the model, and move storage with OLLAMA_MODELS if needed. The harder parts are evaluation and control. Your team must decide which quantization is acceptable, build repeatable tests, and place the local API behind an authenticated proxy, because the local API at port 11434 does not require authentication. A partner adds most value when you have many models, tight approval deadlines or no spare engineering capacity. Ask your team to estimate the internal effort honestly before comparing it with a written quote.
What does the import work need from our team before it starts?
Expect to supply the model weights, their license terms, model cards or training notes, and the intended use for each model. You also need evaluation material such as representative prompts, expected outputs and acceptance criteria, because quantization decisions depend on them. Provide the target hardware or cloud accounts, storage location, network policy and any required proxy or identity setup. Name a business owner who approves which models enter the internal catalog and who can access them. A technical contact should be available for questions about your environment, change windows and security review. Missing inputs are the most common reason an import schedule slips, so confirm each one in the scope before work begins.
What should a written quote for a model import include?
A useful quote lists the number of models and their formats, the conversion steps required, and the quantization levels to test with the criteria used to compare them. It should state the hardware and storage assumptions, the catalog and access design, and the handover documents. Include the upgrade test scope if you want re-testing after Ollama releases, and separate that from one-time work. Exclusions should be explicit, for example hardware procurement, model licensing or changes to your identity provider. The quote should also show milestones, acceptance criteria and who signs off each deliverable. DeployOpen does not publish a price list, so request a quote built from the written scope and compare it line by line with your internal estimate.
How DeployOpen scopes and delivers a custom Ollama model import
DeployOpen plans and delivers custom model imports on Ollama inside infrastructure you control, from the written scope through handover and ongoing support. Each engagement is fixed-scope, so the models, formats, catalog rules and deliverables are agreed in writing before work starts. The deliverable is a private internal model catalog that your team can run, document and maintain.
How we scope
- Inventory each model's source format, whether GGUF or Safetensors, its size, license and intended users.
- Confirm the target Ollama version, hardware, storage path and whether any model files are sharded.
- The written scope lists which models, quantization levels, catalog rules and test cases are included and excluded.
How we build
- Write a Modelfile for each import that sets the base weights, template, parameters and system prompt.
- Quantize with llama.cpp tooling where needed, and record the tool version and settings used.
- Reassemble sharded files, verify checksums, and load each model on a test host before cataloging it.
How we hand over
- A private internal catalog listing each model with its owner, source, license and approved use.
- A runbook covering import steps, the OLLAMA_MODELS storage location, model updates and retirement.
- Test results and documentation showing how each model was imported, quantized and validated.
How we support
- Ongoing support is available as a retainer for new model imports, Ollama upgrades and catalog changes.
- Agree in writing who approves new model weights and how they reach the catalog without public registry pushes.
- Agree how Ollama version changes are tested against existing models before any re-import on production hosts.

