Skip to main content

Magic FAQ

Why did you create Magic?

We created Magic to simplify your developer experience.

When you're developing with MAX and Mojo, your code doesn’t exist in a vacuum. Your project has dependencies and runtime requirements, such as specific Python versions, Python packages, and potentially other Mojo code.

Previously, you might have required separate tools for managing Python toolchains, handling Python dependencies, and managing MAX/Mojo toolchains and dependencies. That could be four or more systems to create a consistent, reproducible build environment.

This is where Magic comes in. Magic is a package manager and virtual environment system that unifies all these dependency management tasks with one tool. It also works seamlessly with popular Python package repositories and tools, while still allowing us to customize the virtual environment, packaging, and build tools for the growing MAX/Mojo platform.

Magic ensures that your builds are consistent, reproducible, and ready for production, no matter where they’re deployed. And, because we built Magic upon the already amazing pixi tool, it provides a smooth experience that feels like magic. 🪄

Install Magic now.

What happened to the modular tool?

It's deprecated. We have no plans to update it.

We will not release any new max or mojo packages through the modular tool beyond the 24.5 release. You must now use Magic or conda to install MAX and Mojo.

Why not just use conda?

We love conda and all the tools in the conda ecosystem, but conda alone doesn't do all the things that we want to do for MAX and Mojo projects. So we were thrilled when we saw that prefix.dev already built a tool that improves upon conda in all the ways that we wanted to. Because Magic is just a small extension to their pixi tool, we suggest you read their explanations for why they built pixi:

That said, the max package is a conda package, and you can also install it using other conda tools. For details, see how to add MAX/Mojo in a conda project.

Why not just use pixi?

We have every intention of contributing changes to the pixi project. However, Mojo is still a very young language, MAX requires some unique environment settings, and we're still building and planning a lot of features for our build and packaging system. So it's simply too soon to contribute some of our changes to a project like pixi, and we currently can't make some of their features work with MAX/Mojo (magic is missing some commands available in pixi).

The pixi team has a much larger developer community that they must prioritize and support. Meanwhile, we're building a new language and new developer tools from the ground up and we need to iterate fast. Quite simply, our projects have different priorities right now. That said, we have a very good relationship with the pixi team. They've been nothing but supportive and helpful in our endeavour, and we look forward to collaborating with them.

Do I have to use Magic?

No. You can also install MAX and Mojo (the max package) using other conda tools.

Why not use pip to install the MAX Python package?

We definitely want to support pip for Python developers. With our limited resources, we decided to first focus on delivering MAX and Mojo as a conda package, and build a virtual environment manager that could meet the needs of both MAX and Mojo.

Is the Magic tool open sourced?

Not today. We worked really hard to get Magic released as quickly as possible, and properly open sourcing any software is also a lot of work. The magic code currently has nothing proprietary in it, so it should just be a matter of time.

What's the alpha-numeric string in the Magic install URL?

The string appended to the https://magic.modular.com URL is a universally unique identifier (UUID) that helps us improve our tools and user experience. Any data associated with this ID is anonymized and not linked to any personally identifiable information.