SecureOS is an experimental operating system focused on zero-trust by default behavior. Every process runs in total isolation and requires explicit user consent to access any resource.
# Clone and run — that's it
git clone https://github.com/rwrife/SecureOS.git
cd SecureOS
# macOS / Linux
./start.sh
# Windows (PowerShell)
.\start.ps1The start script automatically:
- Checks for Docker and QEMU (installs them if missing, with your confirmation)
- Builds the OS inside a Docker container
- Boots SecureOS in QEMU
| Flag | Description |
|---|---|
--graphics / -Graphics |
Boot with VGA display window |
--build-only / -BuildOnly |
Build without booting |
--setup-only / -SetupOnly |
Install dependencies only |
--clean / -Clean |
Remove artifacts before building |
--skip-setup / -SkipSetup |
Skip dependency checks |
For iterative development, use the scripts separately:
./scripts/build.sh [kernel|disk|all] # Build (default: all)
./scripts/boot.sh [console|graphics] # Boot (default: console)
./scripts/test.sh [test_name|--all] # Run testsWindows:
.\scripts\build.ps1 [kernel|disk|all]
.\scripts\boot.ps1 [console|graphics]
.\scripts\test.ps1 [test_name|--all]Only two tools are needed on your host machine:
- Docker — all compilation happens inside a container
- QEMU — runs the OS with hardware emulation
The setup scripts handle installation:
- macOS:
./scripts/setup-macos.sh - Linux:
./scripts/setup-linux.sh - Windows:
.\scripts\setup-windows.ps1
After booting (via ./start.sh or ./scripts/boot.sh), interact with the OS:
secureos> help
secureos> apps
secureos> run filedemo
secureos> cat appdemo.txt
secureos> exit pass
For graphics mode with the VGA display:
./start.sh --graphicskernel/— Minimal kernel: process isolation, capability system, hardware abstractionuser/— User-space libraries, apps, and OS commandsbuild/— Dockerfile, internal build scripts, QEMU configsscripts/— Host-side entry points (setup, build, boot, test)manifests/— Capability manifests for processesdocs/— Architecture decisions, ABI reference, test plansdocs/abi/— canonical ABI reference (OS_ABI_VERSION = 0): syscall surface, IPC wire format, capability handle representation, launcher manifest schema, and theOS_ABI_VERSIONpolicy. Seedocs/abi/README.mdfor the full index.
plans/— Planning documents for future worksdk/— Public SDK scaffold (M6, BUILD_ROADMAP §5.6):sdk/include/os/abi.hre-exportsOS_ABI_VERSION_*fromuser/include/secureos_abi.h,sdk/VERSIONpinsMAJOR.MINOR.PATCH. Slice 1 only;libos.aand theos-cc/os-pack/os-runwrappers arrive in later slices. Seesdk/README.md.
- Capability-native: All resource access goes through explicit capability gates
- Deny-by-default: Processes start with zero permissions
- User consent: Hardware/resource access requires interactive confirmation
- Deterministic builds: Pinned Docker toolchain ensures reproducibility
- Multi-architecture ready: HAL layer abstracts hardware (x86 target first)
See CONTRIBUTING.md for full contributor guidance.
For the M7 in-OS toolchain execution frontier, start with docs/development/pickup-guide-m7.md.
Released SecureOS images that statically link TinyCC (LGPL-2.1) must
ship with a compliance bundle produced by
build/scripts/build_release_compliance_bundle.sh. The bundle's layout
and obligations are documented in
docs/legal/lgpl-compliance.md and
verified by the release_compliance_bundle host test (SKIP-pinned
until #408 Phase 3 lands TinyCC into the image).