Infrastructure Deployment and Management Will Now Be Controlled by CodexMCP

The beauty of building your own system is that the expectations of others do not bind you. You start with an idea, you refine it, and along the way, you learn what works and what doesn’t. CodexMCP is a project that has never been about following industry trends—it’s about solving problems in the best way possible without unnecessary complexity.
Initially, automation in CodexMCP was going to be handled with Ansible. It made sense then: Ansible is an industry-standard tool for infrastructure automation, widely used for provisioning, configuration management, and deployment. It’s powerful, flexible, and well-supported. But the more I worked with it, the more I realized that Ansible itself was an unnecessary layer for what I was building.
This wasn’t a frustration with Ansible itself—I could have gotten it to work. Instead, it was a realization that every hour spent wrangling Ansible to work within the complex, API-driven infrastructure of CodexMCP was an hour spent adding another external dependency to a system that was designed to be self-contained.
The Case for Doing It in Go
CodexMCP is already written in Go. Go is not only a powerful systems language but also perfectly capable of making API calls, managing infrastructure, and executing remote SSH commands. If Go can do everything Ansible can do—but in a way that is natively integrated into the system—why not tie infrastructure automation directly into the core of CodexMCP itself?
This isn’t about rejecting tools for the sake of rejecting tools. It’s about efficiency and maintainability. Despite its power, Ansible introduces its own syntax, set of dependencies, and way of doing things. If something breaks, troubleshooting an Ansible playbook requires stepping outside of the core logic of CodexMCP. The whole point of this project is to reduce complexity, not add another framework that requires maintenance.
A System Without External Dependencies
One of CodexMCP's core philosophical tenets is self-sufficiency. It should not rely on a fragile web of external tools to operate. Every additional dependency is a point of failure, a future update that could break functionality, and another skill set required to maintain the system.
By integrating VM provisioning, software installation, and configuration directly into CodexMCP’s Go code, we achieve:
- Complete control over execution. No unexpected behaviors from third-party tools.
- A single programming model. Everything is in Go—no need to juggle YAML, SSH configs, and playbook logic.
- Tighter integration. The system doesn’t need to shell out to another program to execute automation.
- Better error handling and observability. Logging, debugging, and system state tracking can all be done inside CodexMCP itself.
The Pragmatism of This Pivot
This is not a dogmatic rejection of Ansible, nor a dismissal of tools that have their place in infrastructure management. Ansible is great for many projects, but CodexMCP is unlike most projects. It’s a deeply integrated, API-first operations system that needs to control every single part of its own infrastructure.
The shift away from Ansible is not about frustration or limitations—it’s about alignment. CodexMCP’s mission is to be self-contained, highly efficient, and deeply tied into the infrastructure it manages. That means cutting out anything that doesn’t directly contribute to that mission.
And when the programming language you already use—Go—can handle infrastructure automation just as well as any external tool, why introduce another layer of complexity?
In the end, the decision to abandon Ansible was not about whether it could work—it was about whether it should be here at all. After seeing CodexMCP spin up an entire infrastructure purely from its own Go code, I have no doubt this was the right call.
-Pivots are Normal
--Bryan