Khaja Omer is a senior software engineer at Akamai working on managed Kubernetes infrastructure and the systems that run AI inference. His work spans cluster management, storage integration and autoscaling: creating clusters, connecting applications to persistent storage and provisioning capacity for workloads that need it.
His Kubernetes work includes cloud-controller-manager, CSI drivers, Cluster API Provider Linode and Karpenter-related autoscaling. These are collaborative projects with distinct responsibilities. Cluster API Provider Linode creates, configures and manages Kubernetes clusters; the Linode Block Storage CSI driver connects workloads to block storage; and the Linode Karpenter provider provisions nodes for pods that cannot otherwise be scheduled, then removes capacity when it is no longer needed. Khaja’s work within these efforts connects application resource requirements to the cloud infrastructure that can satisfy them.
Connecting cloud operations and AI
Khaja’s experimental linode-mcp server connects AI assistants to the Linode API through the Model Context Protocol. Its first package release appeared in March 2025. The documented initial tool lists available regions; instance creation, inspection, reboot and deletion are planned additions. That distinction matters: the project establishes an interface for cloud operations, while broader instance management remains proposed functionality.
His AI work also includes inference experiments on personal GPU hardware and Kubernetes clusters, with interests in GPU startup, model serving and cost-aware scaling. In Agents That Own Their Inference, co-presented with Du'an Lightfoot and credited to Akamai Technologies, Khaja develops the optimization exercises after Du'an introduces inference measurements, memory budgets and caching.
Khaja changes the serving deployment to an FP8 model, repeats load tests and checks simple output-quality cases. He then tests speculative decoding, where a draft model proposes tokens for the main model to verify. In the demonstration, generation falls from roughly 58 tokens per second to 16. Rather than treating the technique as an automatic improvement, he examines draft acceptance, model compatibility and GPU contention, then returns to the baseline.
The example makes his approach to inference tuning concrete: compare a configuration against the actual model, hardware and workload, and assess output quality alongside speed. The workshop also examines the point where additional concurrency stops increasing throughput while latency continues to rise. Its final comparison carries an important limitation: a notebook failure changes the model being tested, which the presenters acknowledge. The result illustrates a tuning process rather than a clean, universally applicable performance claim.
Using maintenance to uncover defects
Khaja’s writing on Go linting explains another practical engineering decision. While updating dependencies for a Kubernetes provider project, his team migrated to GolangCI-Lint v2 and revised its checks. Enabling contextcheck exposed tests using a background context rather than the test’s own context. Replacing those calls with t.Context() tied the work to the test lifecycle.
He recommends introducing checks incrementally, fixing the problems they reveal and keeping exclusions narrow. The article explains why the migration was useful through the defect it caught, rather than treating a larger set of enabled checks as an achievement in itself.
Du'an Lightfoot and Khaja Omer work through dedicated GPU inference with vLLM: how context consumes memory, why FP8 helps their workload, how speculative decoding makes it slower, and what a sequence limit changes under load.
Agent latency includes repeated model calls and tool steps. Trace the whole task alongside server-level token metrics.