What is Flox?
Flox is a next-generation, language-agnostic package and environment manager.
- Define everything your environment needs—packages, tools, environment variables, and services—in one manifest.
- Switch between environments easily, share them with your team, and keep everything in version control.
- Use the same setup across macOS and Linux, on both x86 and Arm.
Flox achieves isolation through pre-configured sub-shells, not containers, so it works seamlessly with your existing tools, shells, and dotfiles. Under the hood, Flox uses Nix to ensure reproducibility—without requiring you to learn Nix.
Flox makes it easy to work locally, test in CI, and deploy to production—all with the same environment.
Get Started
-
Quick start with the Flox CLI
Install
flox
withapt
,yum
,brew
, or a standalone installer to get your dev environment set up in minutes. -
Already using Nix? Start here
Flox brings the power of Nix to your team, and can simplify your workflows.
Examples for getting started in just a few of the many languages Flox supports:
Why Flox?
We encounter the same challenges, no matter the stack: inconsistent environments, dependency drift, and brittle build processes that don’t scale well across machines, teams, or deployment targets. Current solutions often add complexity and fragmentation.
Flox takes a different approach: it provides a consistent, language-agnostic workflow for managing environments, from local development to CI to production.
Use Flox to solve three common use cases:
- Reproducible dev environments
- Reliable package management across systems
- Consistent builds from local to production
Reproducible dev environments
Set up a local developer environment that will work the same across multiple operating systems and architectures. Seamlessly switch between development environments across multiple language ecosystems using a consistent, unified workflow.
Declare all the packages, activation scripts, environment variables and services needed to reproduce the environment in a simple manifest that can be checked into version control along with your source code.
Once your environment is configured, you can simplify the setup instructions in your README to a single command (flox activate
), making it easy to share environments and onboard new developers.
Cross-platform package management for your whole system
Set up your default environment with a set of packages that you always want available, whether you're on macOS or Linux—x86 or Arm.
Then, when you need to set up a new laptop, or keep multiple machines in sync, you can be sure you're using the exact same versions, no matter when or where you need them.
If you're already using Homebrew, you can easily migrate or use Homebrew and Flox together.
Consistent builds from local to CI to production
Flox lets you define what an environment is in a way that can be reused across local dev, CI, and production. Leverage pre-built integrations for GitHub Actions, CircleCI, and GitLab to pull and activate the same environments locally, in CI and in production.
Or use Flox containerize to package your environments as OCI images—fully pinned and runnable anywhere. From bare metal to VMs, from Docker Swarm to Kubernetes to AWS Lambda—the runtime context might change, but Flox environments run and behave the same everywhere.
Need an example? See how the Flox Docs team uses Flox in CI to build, test and deploy this docs site.
And more...
-
Create templates or reusable toolchains to bootstrap new projects by reusing and combining dev environments.
-
Create a portable environment with transparent auth via a third-party secrets manager so cross-platform workflows work the same everywhere: locally, in CI, or in production.