Get Started with darwinOS
A guided path from "what is this?" to "I'm running darwinOS and pushing patches." The project is early — expect rough edges, and expect your contributions to matter.
A guided path from "what is this?" to "I'm running darwinOS and pushing patches." The project is early — expect rough edges, and expect your contributions to matter.
Darwin is the open-source foundation underneath macOS and every other Apple operating system. It's a hybrid of the Mach microkernel and a BSD personality, wrapped in a driver framework (IOKit), a service manager (launchd), a dynamic linker (dyld), and a C-library umbrella (libSystem). All of it has been open-sourced, piece by piece, over the last two decades.
darwinOS is a community-driven project to assemble those pieces — plus the missing glue — into a living operating system. Not a macOS fork, not a redistribution of Apple's shipping binaries. A clean, buildable Darwin that runs on hardware you choose and welcomes contributors who want to work on it.
The fastest way to see darwinOS is to boot a pre-built image in a virtual machine. Images track the main branch and are rebuilt on every merge.
On Linux and Windows, use QEMU. On macOS, UTM is the most convenient wrapper.
Building darwinOS from source takes about an hour on a modern machine. You'll need a recent clang, a working Swift toolchain, and a handful of BSD-style build tools. The build is driven by a top-level Makefile that drops a bootable image into `build/` when it finishes.
The Build from source guide covers host requirements, checking out the monorepo, and the first `make world`. If your host is missing something the guide calls out how to install it on Linux and macOS.
Once you have a darwinOS image running, the smallest meaningful thing you can do is build and run a userland program against it. The Darwin ABI is stable and familiar — if you've written C or Swift for macOS, nothing about the link step will surprise you.
The hello-world guide walks through compiling a C program on the host, pushing the binary into a running darwinOS VM, and tracing its syscalls.
darwinOS lives as a monorepo. The top level is a thin build system; everything real lives under `components/`, with one directory per upstream open-source drop (xnu, launchd, dyld, libsystem, …) plus `glue/` for the code that ties them together.
The Architecture overview is the best map of where each subsystem lives and who owns it.
darwinOS is community-run. There is no sponsoring company, no product roadmap driven from above, and no private Slack. What happens next depends on who shows up.
The Contribute page lists on-ramps for people who write C, people who write Swift or Objective-C, people who want to help without writing code, and people who want to port darwinOS to new hardware. The Community page has chat links, meeting times, and working groups.
How Mach, BSD, IOKit, launchd, dyld, and libSystem fit together.
What works today, what's partial, what's broken.
On-ramps for every skill level and background.
Source code, issue tracker, and discussions for darwinOS.