Skip to content
StatusQuickstartDocsArchitectureDesign Run locally
Quickstart

Run swift-os in about ten minutes.

No OS-internals knowledge needed. You'll clone the repo, cross-build a small toolchain once, and boot a real swift-os image in QEMU. First login is root / swordfish.

You'll need~2 GB free disk, qemu-system-aarch64, and the pinned Swift toolchain (see docs/NOTES.md). macOS Apple Silicon is the primary, best-tested path.

Install the toolchain

QEMU via Homebrew, plus the pinned Swift toolchain. Exact versions live in docs/NOTES.md (overridable with make SWIFTC=…).

Terminal — zsh
$ brew install qemu llvm lld
# Swift toolchain: see docs/NOTES.md (e.g. swift-6.3.2-RELEASE)

Clone the repository

Terminal — zsh
$ git clone https://github.com/asaptf/swift-os
$ cd swift-os

Cross-build newlib + busybox (once)

A one-time step that builds the C runtime and the busybox shell the userland links against.

Terminal — zsh
$ make newlib busybox

Build & boot

Build the kernel + signed base image, then launch QEMU on the serial console.

Terminal — zsh
$ make build base-image build/virt.dtb
$ make run

Expected output:

qemu · swift-os
[ ok ] swift-os kernel (Embedded Swift, signed)
[ ok ] MMU enabled · EL1 · 256 MiB
[ ok ] virtio-net up · DHCPv4 10.0.2.15/24
[ ok ] httpd listening on :8080

swift-os login: root
Password: ••••••••
Welcome to swift-os, root
root@swift-os:~$ 

Say hello

Log in as root / swordfish, then inspect your principal, the network, and the read-only base.

swift-os shell
root@swift-os:~$ id
session: principal=1 session=1 caps=63
root@swift-os:~$ netinfo
ipv4 10.0.2.15/24  gw 10.0.2.2  dns 10.0.2.3
root@swift-os:~$ cat /etc/motd
Zero-setup optionWant to skip the toolchain? Boot swift-os right in your browser at /try.
To quit QEMUPress Ctrl A then X. Anything you wrote to /tmp is gone on the next boot — that's intended.