Projects · AIForge
Why AI needs a platform
The real distance between an LLM prototype and a production AI system, the seven failure modes teams keep hitting, the honest case against building a platform, and the scope AIForge commits to.
Why AI needs a platform
This is the only document in Volume 1 with no commands in it, and it is the one that decides whether the other two are worth building.
I want to make an argument here, not a pitch. Platforms are expensive. They take months, they need an owner, and a badly scoped one becomes an internal product nobody asked for that everybody has to route around. So before I build one, I owe you a real case, including the part where the answer is "do not build this".
The honest size of the gap between a working prototype and a production AI system, the seven failure modes that show up in every organisation that skips the platform step, the three situations where building a platform is the wrong call, and the exact scope AIForge commits to as a result.
1. The prototype is not small. It is incomplete
Let me start by being fair to the prototype, because engineers who build platforms tend to be unfairly dismissive of them.
The prototype is genuinely impressive engineering compression. Twenty lines of Python, an API key, and you have something that would have been a research paper five years ago.
That is a real capability. It is not a toy.
But look at what those twenty lines silently assume. They assume somebody else owns the compute, the model weights, the scaling, the availability, the key rotation, the rate limits, the logging, the cost accounting, and the data boundary. Every one of those is a real job that a real person does. When you move to self hosted models, or regulated data, or multiple tenants, those jobs do not disappear.
This is the single most useful reframe I can give you.
A hosted API prototype is not "AI without infrastructure". It is AI on somebody else's infrastructure, with their reliability, their pricing, their data policy, and their roadmap. That is often the correct trade. It stops being correct the moment your data cannot leave, your cost becomes material, or your latency becomes a product feature.
AIForge exists for the moment that trade stops working.
What actually changes when you self host
The prototype has one arrow. Self hosted production has a topology.
Count the decision points. Seven things have to be true before a single token is generated, and one more has to happen after. Each one is a component, an owner, a failure mode, and a dashboard.
That is not complexity for its own sake. Remove any one of them and name what breaks:
| Remove this | What breaks, specifically |
|---|---|
| Authentication | Anyone on the network can spend your compute budget and read your retrieval index |
| Tenant scoping | Tenant A's question retrieves Tenant B's documents. This is the worst bug in this list |
| Rate limits and quotas | One badly written retry loop saturates the model server for everybody |
| Routing and fallbacks | One model server restart becomes a full product outage |
| Retrieval | The model confidently invents answers about your internal policies |
| Telemetry | You cannot answer "is it slow", "is it wrong", or "who spent the money" |
2. The seven failure modes
I did not derive these from a whitepaper. These are the patterns that show up whenever several teams adopt LLMs without a shared platform underneath them. Some I have watched happen, some are the direct consequence of infrastructure problems I have dealt with in other contexts, and all seven have the same root cause: capability arrived faster than the operating model.
2.1 Duplicated infrastructure work
Three teams, three model servers, three ingress setups, three sets of Helm charts that started identical and drifted within a month.
The cost is not the compute. The cost is that a security fix now has to be applied three times, by three people, who each have to relearn their own setup first.
2.2 Inconsistent security
Team A puts the model server behind OIDC. Team B uses a shared static token in a ConfigMap because they were shipping on a Friday. Team C exposes a NodePort "temporarily".
This is the part people underestimate. When each team implements its own controls, your effective security posture is not the average of the three. It is the weakest one, because an attacker only needs the weakest one.
A platform inverts that. Controls implemented once, at the platform layer, apply to every workload including the one shipped on a Friday.
2.3 Inconsistent observability
Every team logs something. No two teams log the same thing. One emits Prometheus metrics, one writes JSON to stdout, one has a Grafana dashboard nobody else can find.
Then a customer says "the assistant is slow" and answering that question requires three people, two Slack threads, and an hour, because there is no shared definition of what slow even means.
2.4 Poor GPU utilization
This one is specific to AI and it is expensive.
A GPU that sits at 20 percent utilization costs exactly the same as one at 90 percent. When each team owns a dedicated model server for a workload that gets traffic six hours a day, you are paying full price for a fraction of the value. Without shared serving, batching, and autoscaling, low utilization is the default outcome, not an accident.
| Pattern | Typical utilization | What it means for the bill |
|---|---|---|
| One dedicated model server per team, always on | Low, and idle at night and weekends | You pay for peak capacity around the clock |
| Shared serving with continuous batching | Substantially higher for the same traffic | Requests interleave instead of queueing behind idle capacity |
| Shared serving plus autoscaling and scale to zero | Highest, with cold start as the trade | You pay closer to what you actually use |
I am deliberately not putting invented percentages in that table. The shape of the argument holds regardless of the exact numbers, and Volume 4 measures the real ones on the real lab.
2.5 Uncontrolled cost
Ask a typical organisation six months into LLM adoption what a single customer support conversation costs them. Most cannot answer.
Not because it is hard mathematically. Because nobody attributed tokens to a tenant, nobody attributed GPU hours to a workload, and the invoice is one line.
2.6 Weak tenant isolation
The AI specific version of this failure is genuinely nasty, and it is worth stating precisely.
Classic multi tenancy is about compute and network isolation. RAG adds a new surface: the vector index itself.
If retrieval is not filtered by tenant at query time, a perfectly authenticated user of Tenant A can ask an innocent question and receive text from Tenant B's private documents in the answer. No exploit, no privilege escalation, no alert. It just quietly works, and it looks like a good answer.
That is why isolation in AIForge is enforced in layers, and why the retrieval filter is treated as a security control rather than a query optimisation. Volume 3 covers the layers, Volume 2 covers the filter.
2.7 Operational complexity
The final failure mode is the one that gets people to actually fund a platform: nobody can operate the sprawl.
The person who built Team B's serving stack changed jobs. The runbook is a Notion page from March. When it breaks at 2am, the on call engineer is reading unfamiliar YAML while a customer waits.
3. So what is a platform, precisely?
The word gets used loosely, so here is the definition I am working to.
A platform is a product for internal users that turns a repeated, complex, high stakes task into a self service one, while centralising the decisions that should not be made repeatedly.
Three parts of that definition are doing real work.
"Product for internal users." It has users, it needs a UX, and if developers route around it, it has failed regardless of how elegant the internals are. This is why Volume 3 spends real effort on the API design and not just the Kubernetes plumbing.
"Self service." A platform where you file a ticket and a human runs a script is a service desk with extra steps. The measure is whether a developer can go from intent to running workload without a human in the loop.
"Centralising decisions that should not be made repeatedly." How do we do authentication. What does isolation mean. Where do logs go. What does a deployment look like. These have exactly one correct answer per organisation, and re deciding them per team is pure waste.
The intent to infrastructure translation
Here is the whole idea in one diagram. A developer submits intent. The platform performs a translation. Kubernetes objects come out the other side.
Notice what the developer never sent: no YAML, no image reference, no resource limits, no ingress annotation, no scrape config. Notice what the platform created anyway: a NetworkPolicy and a ServiceMonitor, because the platform is allowed to have opinions the developer never has to hold.
That last point is the entire value proposition. Good defaults, applied invisibly, every single time.
4. The honest case against building a platform
If I only made the positive case, you should not trust the rest of this documentation. So here are the three situations where building AIForge would be a bad decision, stated as strongly as I can make them.
Do not build a platform for one team.
A platform's value comes from amortising decisions across many consumers. With one team, you have added an abstraction layer between that team and their own infrastructure, and slowed them down to solve a coordination problem you do not have.
The correct move at one team is a good repository template, a Helm chart, and a CI pipeline. Revisit at three or four teams.
Can you name at least three teams who will use it, one person who owns it, and one pressure that makes hosted APIs unworkable?
If the answer to any of those is no, build the Helm chart instead and come back in six months. A platform is a commitment, not a component.
5. What AIForge commits to as a result
Given that argument, here is the scope I am holding myself to. This is the contract for the rest of the documentation.
| Commitment | How it is demonstrated | Where |
|---|---|---|
| Developers deploy AI workloads without touching Kubernetes | A control plane API that accepts intent and emits validated Kubernetes objects | Volume 3 |
| Model serving is shared, standardised, and swappable | vLLM behind a LiteLLM gateway, with KServe as the higher level abstraction | Volume 2 |
| Private knowledge is usable without leaking across tenants | A RAG pipeline with tenant filtered retrieval treated as a security control | Volume 2 |
| Isolation is enforced in layers and actively tested | Identity, RBAC, namespaces, NetworkPolicy, quotas, and application level checks | Volume 3 |
| Everything is reproducible from source control | Terraform, Helm, Argo CD, and a destroy and rebuild that actually works | Volume 3 |
| Every workload is observable by default | Metrics, logs, traces, and LLM specific telemetry attached at deploy time, not later | Volume 4 |
| Cost is a measured metric, not a surprise | Tokens, utilization, and cost per tenant and per million tokens | Volume 4 |
| Failure paths are rehearsed, not assumed | Deliberate failure drills with symptom, detection, diagnosis, mitigation, and lesson | Volume 4 |
And what it explicitly does not commit to
Scope discipline is part of the engineering, so let me name the exclusions.
- No model training or fine tuning. AIForge runs models. It does not make them. That is a different discipline with different infrastructure.
- No claim of hyperscale readiness. This is a lab scale platform with a documented path upward, not a system proven at thousands of requests per second.
- No GPU benchmark numbers. I do not have the hardware, and inventing plausible figures would poison everything else in this documentation.
- No agent frameworks. Retrieval and serving are in scope. Tool calling orchestration is a layer above, and adding it would double the surface without deepening the infrastructure story.
A platform that promises everything is a platform that finishes nothing. Every item in that exclusion list is a real feature somebody would want, and every one of them would have made the eight commitments above shallower.
Choosing what not to build is the part of platform engineering that does not photograph well and matters most.
6. What I would watch for
Honest risks, written down now so the later volumes can be judged against them.
The platform becomes a bottleneck. If adding a new model requires a code change in the control plane, developers will route around it within a month. The mitigation is configuration driven model registration, which Volume 2 covers with LiteLLM and MLflow.
The abstraction leaks under pressure. The first time a developer hits a scheduling problem, they will need to see Kubernetes reality. A platform that hides too well becomes undebuggable. The mitigation is that AIForge hides complexity by default and exposes it on request, never the other way round.
The lab flatters the design. Everything works beautifully at one user and three pods. The mitigation is Volume 4, where I break it deliberately, and the deviation register, where every gap between lab and production is written down.
CPU only distorts my judgement. Without GPU pressure, I might make serving decisions that look fine and fall apart on real hardware. The mitigation is being explicit about which conclusions are hardware independent, which are hardware dependent, and never blurring the two.
Next
You now have the argument. Next comes the design.
The reference architecture walks every layer, names what each component is responsible for, sets the call rules between layers, and traces one request from a user all the way to a token and back.