carthage-software/mago
Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It brings Rust-inspired speed and reliability to PHP projects with a modern toolchain and great developer experience, plus multiple install options (script, Homebrew, Composer).
The project was initially named "fennec", after the fennec fox native to North Africa. However, due to a name conflict with another tool, we had to choose a new name.
We decided on "Mago" to stay true to our roots at Carthage Software. Mago of Carthage was an ancient Carthaginian writer known as the "Father of Agriculture." Just as he cultivated the land, we aim to help developers cultivate their codebases.
The name also has a wonderful double meaning. In Spanish and Italian, "mago" means "magician" or "wizard."
This blend of inspirations is perfectly captured in our logo: a fennec fox (our original mascot) dressed as a wizard, with his hat and robe adorned with the ancient Carthaginian symbol of Tanit.
/ˈmɑːɡoʊ/ — pronounced mah-go.
This breaks down to two syllables:
Yes. A Language Server Protocol (LSP) implementation is planned for the 2.0.0 release. While originally scheduled for 1.0.0, we decided to delay it to ensure we deliver a feature-complete, high-quality LSP rather than a minimal implementation.
For a detailed explanation of this decision, see our blog post: Why Mago 1.0.0 Won't Ship With an LSP
No. We will focus exclusively on implementing the LSP standard. We will not maintain editor-specific plugins or extensions. If your editor supports LSP integration (e.g., Helix, Neovim via lspconfig, VS Code with a generic client), it will work with Mago. We encourage the community to build and maintain editor-specific extensions, and we will happily feature well-regarded ones on our website.
Yes, but this is not a priority for the 1.0.0 release. Our goal is for plugins to be written in Rust, compiled to WASM, and loaded by Mago. This is a post-1.0.0 roadmap item.
Our long-term vision is for Mago to be a complete QA and development utility for PHP. While the formatter, linter, and analyzer are the core features for 1.0.0, we plan to add more tools in the future, such as:
No. Composer is a fantastic tool that is primarily I/O-bound. A rewrite in Rust would not yield significant performance benefits, would fragment the PHP ecosystem, and would make it very difficult to support Composer's PHP-based plugin architecture.
Absolutely not. The PHP runtime is incredibly complex. Major efforts by large companies (e.g., Facebook's HHVM, VK's KPHP) have struggled to reach full parity with Zend Engine. Achieving this as a smaller project is infeasible and would lead to community fragmentation. We are focused on tooling, not runtimes.
How can I help you explore Laravel packages today?