Skip to content

asaptf/swift-os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

077bdaa · Jun 24, 2026

History

1,020 Commits
Jun 16, 2026
Jun 24, 2026
Jun 24, 2026
Jun 4, 2026
Jun 17, 2026
Jun 24, 2026
Jun 16, 2026
Jun 24, 2026
Jun 24, 2026
Jun 24, 2026
Jun 23, 2026
Jun 24, 2026
Jun 24, 2026
Jun 24, 2026
Jun 23, 2026
Jun 9, 2026
Jun 8, 2026
Jun 16, 2026
Jun 7, 2026
Jun 24, 2026
Jun 7, 2026
Jun 20, 2026
Jun 5, 2026
Jun 8, 2026

Repository files navigation

swift-os

A modern operating system written from scratch in Embedded Swift for 64-bit ARM — a small, capability-isolated, fast-booting core, built by removing legacy rather than emulating it. Small enough to trust; real enough to run nginx and Node.js.

🌐 The page at https://swiftos.tech is served by SwiftOS itself. It runs on a bare-metal Hetzner Cloud ARM VM — nginx, statically linked against our own newlib port, on top of our own kernel, syscall ABI, and in-kernel TCP/IP stack. Not QEMU, not a container.

What works today

  • Freestanding Embedded Swift kernel — swift.org toolchain, target aarch64-none-none-elf, no Foundation, no full standard library. Value types and Unsafe* pointers at the metal; ARC and classes only above the heap.
  • Real MMU isolation — one address space per process — with a capability/principal security model (authorization is principal + capability mask, never uid == 0).
  • A native Swift userland — coreutils, an interactive shell, ps/top, sshd — on our own POSIX-like syscall ABI. No Linux ABI, static linking only, no dynamic loader.
  • An in-kernel TCP/IP stack — DHCP, TCP, UDP, DNS, HTTP, TLS — with a sans-IO, pure-Swift protocol core.
  • SMP — schedules across multiple cores (tested at -smp 4) with cross-CPU TLB shootdown and spinlock-protected kernel state (make smp-test, make s5-test).
  • A three-tier filesystem — an immutable signed read-only base, a RAM tmpfs scratch tier, and a persistent, fsync-durable /data tier, durable enough to back SQLite (make datafs-sqlite-test).
  • Runs real softwarenginx serving HTTPS (make nginx-test, make nginx-tls-test), and Node.js 24.16 brought up on V8 in --v8-lite-mode (jitless, so it needs no RWX pages): node -e "console.log(6 * 7)" prints 42.
  • Boots on real hardware — a bare Hetzner Cloud ARM VM via ACPI + GICv3 + PCIe ECAM/virtio-pci, not just QEMU virt (make hetzner-deploy-test).

It is a learning project: intentionally minimal, rough in places, and not production. Some pieces stay in C/asm on purpose — third-party code (busybox, the newlib port) and the MMIO / boot / syscall bridges — but the rule is Swift by default. The goal is a small, testable, modern core.

Try it

# See it live — this site is served by SwiftOS itself:
#   https://swiftos.tech

# Or build and boot it yourself under QEMU (macOS Apple Silicon / Linux):
make newlib && make busybox     # one-time: cross-build the libc + bring-up shell
make build && make run          # boot the kernel under QEMU virt
make test                       # host unit tests + in-QEMU boot assertions

The project is not a Linux clone or a legacy-Unix compatibility exercise. The same minimalist core targets three profiles — application & AI hosting (flagship), embedded/appliance, and desktop (not excluded) — which differ mainly in which optional services and devices are present, not in the kernel.

Current Status

The bring-up phase is complete; the system runs a native Swift userland with networking, schedules across multiple cores (SMP), serves a persistent /data tier, hosts nginx over HTTPS, and boots on real Hetzner Cloud ARM hardware. Development continues under Phase 1: hardening for the product profile — completing the capability/handle model and moving drivers toward restartable userland services (see docs/RISK_REMEDIATION_ROADMAP.md).

What exists today, in the order it was built:

  • Phase 0 — bring-up (historical, M0–M8): the kernel boots at EL1 on QEMU virt; UART, exceptions, GIC timer interrupts, the MMU, and preemptive EL0 scheduling are up; each process has its own address space; fork/exec/waitpid work; a VFS exposes a read-only base FS plus a writable tmpfs; static ELF64 programs load and execute from the VFS. The bring-up userland was a statically linked busybox sh (a legacy tool used to prove the syscall surface); the native Swift userland is now the direction (see below). make test covers host-side unit checks and QEMU boot assertions.

  • M9 — HAL + device tree: the kernel reads its own DTB at boot and populates a global Platform struct; UART/GIC/RAM addresses come from the device tree instead of being hardcoded.

  • M10 (a/b/c) — UEFI boot from GPT disk: a minimal AArch64 PE32+ EFI loader (BOOTAA64.EFI) calls ExitBootServices and hands off to the Swift kernel. make disk produces build/swift-os.img, a sparse GPT image with an EFI System Partition. make disk-run boots it under QEMU+AAVMF (edk2) with no -kernel. The direct -kernel path is kept as a fallback and both are tested by make test.

  • M10.5 — VirtualBox ARM prep: the EFI loader emits diagnostics before handoff; a procedure for manually testing on VirtualBox ARM is in docs/VIRTUALBOX.md.

  • M11 (a–d) — virtio-blk + packed read-only base FS from disk: a deterministic signed packed base image format (SWOSBASE v3); a host packer (tools/basepack.swift); a polled virtio 1.0 block driver; the VFS mounts the packed image at boot and serves /bin, /etc, and other base files directly from disk. The kernel no longer embeds any userland binary; the image shrank from ~1.4 MiB to ~208 KiB. Every make run / make test invocation attaches build/base.img as a virtio-blk device.

  • M12 (a–d) — capability/principal security + console-login as init: a typed ProcessSecurityContext (principal, session, capability mask — not Unix uid==0); a base-image identity store /etc/swos/passwd with SHA-256-hashed passwords; console-login authenticates a principal, calls SYS_LOGIN, and execves the shell with the adopted context; when a session ends, init loops back to a fresh login prompt.

  • M13 (a–c) + follow-ups — VFS capability enforcement, file ownership, shell redirection: vfsOpen checks the caller's capability mask at open time (capFsRead, capTmpWrite); tmpfs namespace mutations (mkdir/rm/mv) require capTmpWrite; vnodes carry an owner (principal) and mode written at creation or packed from the base image; ls -l shows permission strings, owner names, sizes, and real timestamps (PL031 RTC); fcntl (F_DUPFD_CLOEXEC, F_GETFD/F_SETFD, F_GETFL) and close-on-exec semantics make shell I/O redirection (echo > file, >>, pipe-into-redirect) work correctly.

  • Native Swift userland coreutils: a growing set of pure-Embedded-Swift EL0 utilities over the userland/lib/swift_user.* bridge, all packed into the base image: ls (with -l), cat, echo, pwd, ps, top, id, mkdir, rmdir, rm, mv, chmod, chown, head, touch, wc, date, calc (an interactive expression REPL that exercises Swift String/Array/ Dictionary/ARC), kv (an in-memory key-value REPL), and console-login. The userland free-capable allocator (K&R free-list over sbrk) backs ARC for these apps.

  • Network stack (N-series, in-kernel, sans-IO core): a TCP/IP/UDP/ARP/ICMP/ DNS stack in Embedded Swift. The protocol core (kernel/net/) is pure Swift (no MMIO/heap-per-packet), compiled into both the kernel and host unit tests. The virtio-net driver (kernel/drivers/virtio_net.swift) provides the DMA path. Capability-gated socket syscalls (socket/bind/sendto/recvfrom/ listen/accept/connect/resolve) are exposed to EL0. Userland tools: /bin/udpecho, /bin/tcpecho, /bin/tcpget, /bin/nslookup, /bin/httpd (a concurrent poll()-driven static-file HTTP server with MIME types and directory listings), and /bin/llmd (TinyStories inference over HTTP). A ChaCha20-Poly1305 AEAD module (kernel/crypto/) is built and tested as TLS groundwork. DNS queries resolve against slirp's nameserver by default.

  • Restartable driver-service and device-discovery smoke: the C5a-C5f path stages /bin/drvsvcdemo and /bin/drvinputd. The supervisor starts an input-driver service, exchanges endpoint IPC messages, discovers and claims virtio-input.0 when QEMU exposes a keyboard device, falls back to pseudo-input.0 in headless boots, surfaces virtio-mmio base/length as discovery metadata, proves future hardware-authority bits stay clear, keeps the current device grant metadata-only, transfers an opaque device handle, proves the grant moves, stays busy while the service owns it, is reclaimed after exit, and recovers with C5a OK: restartable driver service recovered over IPC, C5b OK: opaque device handle transferred and released, C5c OK: virtio-input device grant discovered and matched, C5d OK: virtio input discovery metadata surfaced, C5e OK: device authority withheld until explicit handoff, and C5f OK: device grant rights stayed metadata-only. The aggregate acceptance gate is make c5-test; real MMIO, IRQ, DMA, and virtio-input queue ownership are still roadmap work.

  • Threading runtime: thread_create/futex (FUTEX_WAIT/FUTEX_WAKE) syscalls; EL0 threads share one address space; a futex-based mutex test proves correct concurrent increment across preemption.

  • Process teardown reclaims frames: address_space_destroy walks and frees all user-half page tables and leaf frames on process exit/exec/reap; a boot- time reclaim test asserts zero leak across fork+exec+spawn round-trips.

  • Package and ports fixtures: .swpkg packages, writable package-store images, signed static repository catalogs, and target-side pkg install NAME are covered by executable fixtures. The current ports path also cross-builds static AArch64 Lua, zlib, bzip2, zstd, xz, libarchive, OpenSSL, pcre2, nginx, and sqlite on the host, packages the pinned ca-certificates and tzdata bundles as data, publishes all twelve into one signed seed repository, emits a static-hostable repository root that can be served to QEMU, and proves install from a DNS-resolved hosted-style repository URL.

  • Product-profile hardening (post-M13): SMP across cores (S0–S5: per-CPU scheduling, cross-CPU TLB shootdown, spinlock-protected kernel state; boots and runs the existing workloads at -smp 4); a persistent, fsync-durable /data tier (datafs on a dedicated virtio-blk disk, durable enough to back SQLite); nginx serving static HTTP and HTTPS/TLS from the base image and /data; Node.js 24.16 cross-built for SwiftOS and running on V8 in --v8-lite-mode (jitless); and a bare-metal Hetzner Cloud ARM bring-up (ACPI tables, GICv3, PCIe ECAM + virtio-pci, DHCP, headless boot to sshd). Gates: make smp-test, s5-test, datafs-sqlite-test, nginx-test, nginx-tls-test, hetzner-deploy-test.

Philosophy

The design is intentionally narrow:

  1. Lightweight by design. Every always-on subsystem must justify its memory cost, CPU cost, boot-time cost, and security surface.
  2. Simple enough to trust. Prefer explicit, testable mechanisms over clever machinery.
  3. Secure by construction. Separate address spaces, capability-based handles, small privileged code. Kernel authorization is principal/capability, not uid==0.
  4. Correctness proven by tests. Each milestone must build, boot, satisfy its acceptance criterion, and ship executable checks.
  5. Modern over legacy. Rebuild tools against the swift-os ABI instead of importing Linux compatibility or old platform assumptions.

See docs/PHILOSOPHY.md for the full project stance.

Documentation

The public documentation starts at docs/DOCUMENTATION.md. That map now includes role-based paths for first-time operators, deployment owners, administrators, application developers, package maintainers, service operators, AI hosting operators, support engineers, and security reviewers.

  • Getting Started: build, boot, log in, run commands, and attach QEMU networking.
  • Concepts: core SwiftOS terms, images, filesystem, identity, packages, services, testing, and roadmap boundaries.
  • Installation Guide: choose and verify direct QEMU, UEFI/GPT, graphical smoke, and VirtualBox ARM boot profiles.
  • Deployment Guide: prepare, validate, hand off, and roll back application, AI, package, and appliance deployment candidates.
  • Release Notes: shipped features, verification gates, known limits, and upgrade notes for the current checked-in snapshot.
  • Update And Rollback Guide: rebuild immutable artifacts, update boot profiles, verify candidates, and roll back safely.
  • Update Store: A/B update-store image layout, target commands, and rollback behavior.
  • User Guide: accounts, capabilities, filesystem, process tools, networking tools, and current system limits.
  • Administration Guide: maintain accounts, capability masks, base configuration, package images, and services.
  • Command Reference: command syntax, examples, limits, and acceptance coverage for the current base image and package overlay.
  • Host Tool Reference: host-side package, repository, ports catalog, static-host, hosted URL, base-image, and model-bundle tools.
  • Settings Guide: where each setting lives across the base image, /data, and /tmp, and how to change it when /etc is read-only.
  • Configuration Reference: build variables, boot profiles, QEMU/test knobs, artifacts, and seeded guest defaults.
  • Testing Guide: choose focused gates, run the full suite, interpret failures, and add host or QEMU acceptance tests.
  • Operations Guide: boot profiles, package overlays, network workflows, AI operation, logging evidence, and verification gates.
  • Networking Guide: virtio-net boot profiles, host forwarding, DNS, TCP/UDP, TLS, IPv6 smoke paths, and network tests.
  • Service Guide: run, observe, test, and design SwiftOS services such as httpd, llmd, echo tools, and the C5a-C5f driver-service smoke.
  • AI Hosting Guide: run local TinyStories inference, serve completions over HTTP, and operate verified model bundles.
  • Performance And Sizing Guide: measure resource usage, throughput guards, service metrics, and current sizing limits.
  • Observability Guide: read boot health, structured log markers, process snapshots, service metrics, and panic evidence.
  • Logging Reference: understand kernel log lines, ring buffers, export samples, filtering, and log authority.
  • Troubleshooting: build, boot, login, filesystem, network, package overlay, LLM, and QEMU test failure diagnosis.
  • Support Guide: evidence collection, support bundles, severity levels, report templates, and handoff checklists.
  • FAQ: common product, install, compatibility, package, networking, AI, and support questions.
  • Examples: copy-paste workflows for common SwiftOS tasks.
  • Compatibility Guide: supported platforms, application paths, porting constraints, packages, and non-goals.
  • Security Guide: current login flow, capability bits, handle rights, confinement, immutable images, and security limits.
  • Base Image: immutable packed filesystem contents, build inputs, and base-image verification.
  • Developer Guide: write native Embedded Swift programs, port C/newlib programs, and stage binaries into the base image.
  • Porting Guide: evaluate and port source-built applications to the SwiftOS ABI, filesystem, package, and test model.
  • Application Cookbook: copy-paste recipes for SwiftOS commands, C utilities, package overlays, and tests.
  • Package Guide: build, inspect, boot, test, and troubleshoot .swpkg, repository, package-store, ports, static-host, and hosted URL artifacts.
  • Package Management: package-system design, current implementation status, and roadmap boundaries.
  • Package Build Automation Guide: package recipe, seed package fixtures, CI smoke-test, and repository publishing workflow for maintainers.
  • Package Ecosystem Goal: end-state package ecosystem goals and current package roadmap.
  • Package Manager Implementation Plan: historical package-manager implementation plan.
  • Package Manager Session Prompts: reusable package-manager session and milestone prompts.
  • SWPKG Format: .swpkg container layout, manifest, payload, and verification rules.
  • Package Store Format: package-store image, activation record, and local install layout.
  • Static Package Repository: signed static HTTP catalog layout and repository install flow.
  • API Reference: API recipe index, syscall table, structure layouts, handle rights, native Swift bridge, and compatibility API notes.
  • Server Software Catalog: prioritized server packages, current package limits, and porting prerequisites.
  • Ports Seed Catalog: seed ports catalog and recipe validation rules.
  • SMP Mutable State Audit: machine-checked SMP mutable-state inventory.
  • Next Session: current handoff notes for the next engineering session.
  • Hetzner Deployment: bare-metal bring-up handoff for a Hetzner Cloud ARM (CAX) VM running SwiftOS as the actual OS.

Architecture

EL0  userland      native Swift coreutils + network tools; future Swift apps, Node.js, JVM (busybox: legacy bring-up)
      ----------   syscall boundary: swift-os POSIX-like ABI, not Linux ABI
EL1  kernel        Embedded Swift: runtime, mm, sched, vfs, drivers, net, security, tty
      arch/aarch64 boot (UEFI loader + direct -kernel fallback), exception vectors, context switch

Key architectural decisions:

  • Target: aarch64, QEMU virt (primary), QEMU+AAVMF UEFI (primary boot path), VirtualBox ARM (best-effort). make run defaults to one CPU; SMP hardening has dedicated -smp N tests and readiness gates.
  • Boot: UEFI (BOOTAA64.EFI on an ESP in a GPT disk image) is the primary path; direct -kernel is kept as a fallback.
  • Hardware discovery: a boot-time DTB reader populates a global Platform; driver and PMM initialization read from it instead of hardcoded constants.
  • Kernel language: Embedded Swift, freestanding, no Foundation, no full standard library.
  • Isolation: real MMU-based process isolation, one address space per process.
  • Filesystem: three-tier. A signed packed read-only base image (SWOSBASE v3) served off a virtio-blk device; a RAM tmpfs for writable scratch; and a persistent, fsync-durable /data tier (datafs on a dedicated virtio-blk disk) for state that must survive reboot. No FS journaling — crash-safety relies on honest fsync plus the application's own journaling.
  • Security: capability/principal model. /etc/swos/passwd is the identity source; /etc/passwd is a generated compatibility view for busybox/newlib only.
  • ABI: a small swift-os syscall surface, POSIX-like where useful, explicitly not the Linux syscall ABI.
  • Linking: static userland only; no dynamic loader.
  • Network: in-kernel, virtio-net, sans-IO pure-Swift protocol core; capability-gated socket ABI.

See docs/ARCHITECTURE.md for subsystem boundaries, driver strategy, long-horizon runtime constraints, and explicit non-goals. See docs/SWIFTCUBE_DESIGN.md for the recorded SwiftCube design — a record-only note for a Swift-native cluster orchestrator that schedules applications as Cells.

Repository Map

boot/
  efi/            UEFI loader (AArch64 PE32+): loader.c, efi.h, kernel_blob.S
kernel/
  arch/aarch64/   boot.S, exception vectors, context switch, linker script, FDT reader, platform
  crypto/         ChaCha20-Poly1305 AEAD (TLS groundwork)
  drivers/        PL011 UART, GICv2, virtio-blk, virtio-net, virtio-input, framebuffer
  mm/             physical page allocator (PMM), virtual memory / address space management
  net/            sans-IO Ethernet/ARP/IPv4/ICMP/UDP/TCP/DNS core; socket layer
  runtime/        freestanding runtime support for Embedded Swift
  sched/          preemptive process/thread scheduler, futex
  security/       process security context, principal/capability model
  signal/         signal delivery, pending mask
  syscall/        syscall dispatch
  timer/          ARM generic timer, PL031 RTC
  tty/            line discipline, termios, canonical/raw mode
  user/           ELF loader, process/thread lifecycle, exec
  vfs/            VFS (disk-backed base + tmpfs), fcntl, capability enforcement
userland/
  lib/            swift_user bridge (svc ABI, allocator, atomic ops, putchar),
                  crt0, newlib syscall stubs, compat headers
  compat/         POSIX/Linux shim headers and stubs for busybox/newlib cross-build
  busybox/        busybox 1.38.0 build config
  *.swift         native Swift EL0 utilities: ls cat echo pwd ps top id mkdir rmdir
                  rm mv chmod chown head touch wc date calc kv nslookup udpecho
                  tcpecho tcpget httpd console-login threadsdemo …
  hello.c         original bring-up C program (kept for reference)
base/             host seed tree for the packed base image (etc, www, …)
tools/
  basepack.swift  host-side packed base image packer
scripts/          build-busybox.sh, build-newlib.sh, make-disk.sh, …
tests/            host unit tests (Swift) + QEMU boot assertion scripts (bash)
docs/             philosophy, architecture, package ecosystem, hardware/toolchain notes

Build And Run

The default tool paths are pinned for the current macOS Apple Silicon bring-up environment in docs/NOTES.md. They can be overridden from make if your local installation differs.

Prerequisites (run once):

make newlib    # cross-build newlib 4.6.0 into ./sysroot
make busybox   # cross-build busybox 1.38.0

Then:

make tools-check
make build
make run       # direct -kernel boot with base.img attached

UEFI boot (primary path):

make disk      # build BOOTAA64.EFI + GPT disk image (build/swift-os.img)
make disk-run  # boot under QEMU+AAVMF from the GPT disk

Other useful targets:

make test      # full test suite: host unit tests + QEMU boot assertions
               # (both -kernel and UEFI/disk paths are tested)
make uefi-run  # UEFI boot from a QEMU virtual FAT directory (quick, no GPT)
make debug     # boot QEMU paused with a gdbstub on :1234
make gdb       # attach aarch64-elf-gdb to the paused kernel
make base-image  # pack build/base.img from base/ + staged userland ELFs
make clean

make run starts:

qemu-system-aarch64 -M virt -cpu cortex-a72 -m 256M -nographic \
  -global virtio-mmio.force-legacy=false \
  -device loader,file=<dtb>,addr=...,force-raw=on \
  -drive file=build/base.img,...,readonly=on \
  -device virtio-blk-device,drive=swosbase \
  -kernel build/kernel.elf

make disk-run starts:

qemu-system-aarch64 -M virt,acpi=off -cpu cortex-a72 -m 256M -nographic \
  -bios <AAVMF_CODE> \
  -drive file=build/swift-os.img,format=raw,if=virtio \
  <base.img as second virtio-blk>

Exit QEMU serial with Ctrl-A X.

Toolchain Notes

The current pinned target is:

aarch64-none-none-elf

The kernel is built with a swift.org Embedded Swift toolchain, LLVM clang, ld.lld, llvm-objcopy, and QEMU. Exact versions and the rationale for the current flags live in docs/NOTES.md; do not guess or cargo-cult Embedded Swift flags across toolchain versions.

Roadmap

Work is organized in phases. Each milestone must remain buildable, bootable, tested, and reviewable before moving on.

Phase 0 — bring-up (done, historical)

The bring-up arc proved the kernel and syscall surface end to end. busybox was the bring-up userland (a legacy tool); the native Swift userland is now the direction.

  • M0: boot skeleton and UART output. Done.
  • M1: runtime hooks, exception vectors, heap, page allocator. Done.
  • M2: GIC and timer interrupts. Done.
  • M3: virtual memory and MMU. Done.
  • M4: processes, scheduling, EL0 trap path. Done.
  • M5: syscall entry and VFS skeleton. Done.
  • M6: libc subset, ELF64 loader, spawn. Done.
  • M7: TTY, termios, signals. Done.
  • M8: static busybox sh with ls, cat, and echo. Done.
  • M9: HAL + runtime hardware discovery from DTB. Done.
  • M10 (a/b/c): UEFI boot from a GPT disk image under QEMU+AAVMF. Done.
  • M10.5: VirtualBox ARM validation prep. Done (prep only; manual run needed).
  • M11 (a–d): virtio-blk driver, packed SWOSBASE format + host packer, base FS served read-only from disk, disk-first executable lookup, embedded kernel blob removed. Done.
  • M12 (a–d): capability/principal security core, identity store, console-login as init, SHA-256 password hashing. Done.
  • M13 (a–c): VFS capability enforcement at open time, tmpfs mutation gating, file ownership + ls -l. Done.
  • Post-M13 follow-ups: shell I/O redirection + fcntl; native Swift userland coreutils (ls cat echo pwd ps top id mkdir rmdir rm mv chmod chown head touch wc date calc kv …); busybox vi; PL031 RTC + per-file mtime; free-capable allocator for Swift ARC; threading (thread_create + futex); process teardown frame reclaim. Done.
  • N-series (networking): virtio-net driver, sans-IO Ethernet/ARP/IPv4/ICMP/ UDP/TCP/DNS core, capability-gated socket syscalls, /bin/udpecho, /bin/tcpecho, /bin/tcpget, /bin/httpd (concurrent poll-driven static-file HTTP server), /bin/nslookup, DNS resolver, TCP robustness + ephemeral-port allocator, ChaCha20-Poly1305 AEAD (TLS groundwork). Done.

Phase 1 — hardening for the product profile (active)

The dedicated plan lives in docs/RISK_REMEDIATION_ROADMAP.md. It completes the capability/handle model (C-arc), treats SMP as a required deliverable (S0–S5 series), moves drivers and the network stack toward the documented restartable userland service model, and makes global kernel state concurrent-safe. Each sub-milestone follows the strict rule: builds, boots (including -smp N), has tests, is committed, then review. SMP and "restartable services" are tracked work, not non-goals; C5a-C5f now prove the supervisor/service IPC shape, virtio-input discovery metadata, fallback pseudo-device discovery, surfaced virtio-mmio metadata, opaque device-handle transfer, withheld hardware authority, and metadata-only grant rights before real device handoff lands.

Phase 2 — full-OS capabilities (forward, record-don't-build-yet)

Toward a complete hosting/embedded OS: richer observability and metrics; production update channels beyond the checked A/B validation paths; kernel-slot health confirmation; the native Swift application runtime plus Node.js and JVM hosting; the embedded footprint profile (small static image, deterministic boot, fewer services); TLS 1.3 record layer and handshake; Cells (kernel-native capability-based isolated execution domains); and a hot-update-friendly kernel structure. Recorded, not implemented early.

Non-Goals (minimalism by removing legacy)

These boundaries are deliberate. They are how the OS stays minimal — it removes legacy surface rather than carrying it. They are not constraints on the hosting/embedded/desktop profiles, which the same core already serves; they constrain how it serves them.

  • Linux ABI compatibility;
  • dynamic linking;
  • amd64/x86-64 support;
  • full Cells isolation (the architecture is designed for it; the implementation is future work — see docs/ARCHITECTURE.md and docs/CAPABILITIES.md);
  • Docker/OCI compatibility;
  • journaling or persistent writable filesystem guarantees;
  • broad loadable kernel-module ABI;
  • GPU/NPU acceleration;
  • graphics as the primary display path (a basic VT100 framebuffer console + virtio-input keyboard exist for QEMU graphical mode; desktop use is not excluded, but a rich display stack is Phase 2 work, not a current target).

(See the risk remediation roadmap for the current status of SMP and restartable driver services — they are no longer blanket non-goals.)

SMP is a delivered capability, not a non-goal. The S0–S5 series in docs/RISK_REMEDIATION_ROADMAP.md brought up per-CPU scheduling, cross-CPU TLB shootdown, and spinlock-protected kernel state; the system boots and runs the existing workloads at -smp N (tested at -smp 4). make run still defaults to one CPU for speed. Phase 1 continues with completing the handle-based capability model and moving drivers toward restartable userland services.

Networking is not a non-goal: a TCP/UDP/ARP/ICMP/DNS stack and a set of userland network tools are present and tested. The long-term target (userland network service reachable only via capability-gated IPC, after the C-arc + basic SMP) is recorded in the risk remediation roadmap. What remains future work today is TLS in userland, high-pps optimizations, and the actual service-ization.

These boundaries are not accidental omissions. They keep the kernel surface small enough to measure, test, and trust.

License

swift-os is licensed under the Apache License, Version 2.0 — see LICENSE and NOTICE. New source files we author carry an // SPDX-License-Identifier: Apache-2.0 header.

Bundled third-party components keep their own licenses and are not covered by the Apache license above: userland/busybox (GPL-2.0-only) and libc/newlib (BSD-style / permissive). See NOTICE for details.