Skip to content
    Ertas
    Back to blog

    Self-Hosted AI for Indie Apps: Replace GPT-4 with Your Own Model

    A practical guide for indie developers who want to replace expensive cloud AI APIs with a self-hosted fine-tuned model — without becoming an ML engineer.

    A pale astronomical impression in graphite and copper, with a soft amber penumbra on warm paper.An asymmetric engraved lunar crescent with cool cyan rim-light and a faint amber counter-impression.

    You built something cool. Maybe it is a writing assistant, a code reviewer, a customer support bot for your SaaS, or a niche tool that summarises legal documents. It works beautifully — powered by GPT-4o under the hood. Then the users start arriving, and so does the bill.

    At 100 daily active users making moderate requests, you are looking at $300-500/month in OpenAI API costs. At 1,000 users, it is $3,000-5,000. Your $19/month subscription price does not cover the AI cost per user, and you are burning runway on every new signup.

    This is the indie developer's AI cost trap. And self-hosting is the way out.

    What "Self-Hosted AI" Actually Means in 2026

    Let's clear up a misconception: self-hosting AI does not mean training a model from scratch, buying GPUs, or becoming a machine learning engineer. That was 2023 thinking.

    In 2026, self-hosted AI means this: you take an open-source base model, fine-tune it on your specific use case so it performs well at your task, export it as a GGUF file, and run it on a VPS using Ollama. Ollama gives you a local API endpoint that is compatible with the OpenAI SDK. Your app points at localhost:11434 instead of api.openai.com. That is it.

    The model runs on your server. You pay for the server, not per token. Your costs become fixed and predictable.

    Hardware Requirements: Surprisingly Modest

    You do not need an A100 to serve a fine-tuned model. Modern quantised models are remarkably efficient:

    • 7B parameter models (Qwen 2.5 7B, Llama 3.1 8B): Run comfortably on a $30/month VPS with 16GB RAM. No GPU required for low-to-moderate traffic. Response latency is 200-500ms for typical outputs.

    • 13B parameter models: Need roughly 32GB RAM or a VPS with a small GPU. Around $80/month on providers like Hetzner or OVH. Noticeably better quality for complex tasks.

    • For higher concurrency (50+ simultaneous requests): A GPU-equipped instance ($150-300/month) handles it easily. Still dramatically cheaper than API pricing at scale.

    The key insight: a $30/month VPS serving a 7B model can handle the same workload that would cost $500+/month on OpenAI.

    Why Fine-Tuning Matters (Generic Open Source Is Not Enough)

    Here is a mistake indie devs often make: they download Llama 3 from Hugging Face, run it via Ollama, test it on a few prompts, and conclude "open-source models are not good enough." They go back to GPT-4o.

    The problem is not the model. The problem is that a generic base model is a generalist. It is mediocre at everything and excellent at nothing. GPT-4o seems better because you are comparing a generic 7B model against a 200B+ model with extensive RLHF.

    The fix is fine-tuning. When you train a 7B model on 2,000-5,000 examples of your specific task — your app's actual inputs and desired outputs — the quality gap closes dramatically. A fine-tuned 7B model routinely matches or exceeds GPT-4o performance on narrow, well-defined tasks.

    Fine-tuning is what turns "not good enough" into "better than the API, and it runs on my server."

    Step by Step: From API Dependency to Self-Hosted

    Here is the practical workflow:

    1. Collect your training data. Log your current GPT-4o API calls — inputs and outputs. You need 1,000-5,000 high-quality examples. If your app has been running for a few weeks, you probably already have this data.

    2. Fine-tune with Ertas Studio. Upload your dataset to Vault, select a base model, and configure a LoRA training run. Studio handles the GPU provisioning, hyperparameter defaults, and experiment tracking. Training takes 30-90 minutes.

    3. Export to GGUF. Once your adapter performs well on the evaluation set, export a merged GGUF model. Choose your quantisation level — Q4_K_M is the sweet spot for most use cases, balancing size and quality.

    4. Deploy with Ollama. Copy the GGUF file to your VPS. Install Ollama (curl -fsSL https://ollama.com/install.sh | sh). Create a Modelfile pointing to your GGUF. Run ollama serve.

    5. Update your app. In your code, change the base URL from https://api.openai.com/v1 to http://your-vps-ip:11434/v1. Keep using the OpenAI SDK. Everything else stays the same.

    Cost Comparison

    Monthly Active UsersOpenAI GPT-4o CostSelf-Hosted 7B CostSavings
    100~$400/mo$30/mo (VPS)93%
    500~$2,000/mo$30-80/mo96%
    1,000~$4,000/mo$80-150/mo96%
    5,000~$20,000/mo$150-300/mo98%

    These numbers assume moderate per-user usage (roughly 10 requests/day with 500-token average responses). Your actual costs will vary, but the magnitude of savings is consistent.

    The OpenAI SDK Compatibility Advantage

    This is the detail that makes self-hosting practical for indie devs: you do not need to rewrite your application. Ollama exposes an OpenAI-compatible API. If your app uses the OpenAI Python or JavaScript SDK, you change one line — the base URL — and everything works.

    Code example
    const client = new OpenAI({
      baseURL: "http://your-vps:11434/v1", // was https://api.openai.com/v1
      apiKey: "not-needed",
    });

    Your prompt templates, streaming logic, function calling — it all transfers. The migration is measured in minutes, not days.

    Get Started

    Ertas gives you the fine-tuning pipeline without the ML complexity. Upload your data, train your model, export GGUF, deploy on your terms.

    Early-access pricing is locked at $25/month — a fraction of what you are paying OpenAI for a single day of API calls.

    See pricing and take control of your AI costs.


    Further Reading