avyos.dev

module
v0.0.0-...-ba0b20d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2026 License: GPL-3.0

README

AvyOS Logo

AvyOS

A Linux-based operating system written entirely in pure Go —
no external packages, no CGO, no POSIX compatibility.

Interface

What is avyos?

avyos is an operating system project. It uses the Linux kernel for hardware support and booting, but rethinks the “system layer” (init, services, core tools, UI stack) in pure Go with CGO disabled.

If you’re not an OS person: you can think of avyos as “a Linux-based OS image with its own Go-written system core”.

What makes it different?

  • Immutable system core
    The OS core is mounted at /avyos and treated as read-only at runtime.

  • Clear separation of state
    Apps, configuration, user data, and runtime files live in separate writable locations (/apps, /config, /users, /cache).

  • Service-driven capabilities
    Instead of letting apps poke low-level system resources directly, privileged operations are intended to be exposed via services and accessed through authenticated IPC.

  • Optional Linux compatibility layer
    A distro root filesystem can be provided at /linux and run in a restricted container for compatibility and reuse of existing Linux userland resources.

For the detailed system breakdown and code map, see ARCHITECTURE.md.


Try avyos (no source code required)

You can try avyos in QEMU using prebuilt release images.

This tool downloads the right release ZIP for your architecture and starts QEMU:

go run avyos.dev/tools/runimage@latest

Supported flags (from tools/runimage):

  • --arch <arch>: target architecture (default: your host GOARCH, e.g. amd64, arm64)
  • --branch <name>: release tag/branch to download (default: main)
  • --cpu <n>: CPU cores for QEMU (default: 2)
  • --memory <size>: RAM for QEMU (default: 2G)
  • --vnc <display>: start VNC server (example :0)
  • --dbg-port <port>: forward host:port → guest:5037 (default: 5037, 0 disables)

Any extra arguments after the flags are passed directly to QEMU.

Examples:

# Run with VNC on :0
go run avyos.dev/tools/runimage@latest --vnc :0

# Use 4 cores and 4G RAM
go run avyos.dev/tools/runimage@latest --cpu 4 --memory 4G

# Disable dbgd port forwarding
go run avyos.dev/tools/runimage@latest --dbg-port 0

Requirements: Go + QEMU installed on your machine.

Option B: Download a release ZIP and run QEMU manually

Releases are published on GitHub Releases page

Each release provides assets arch-specific ZIP named like:

  • avyos-<release>-amd64.zip
  • avyos-<release>-arm64.zip

The ZIP contains:

  • disk.img
  • firmware
  • variables

Unzip it, then run QEMU from that directory.

amd64
qemu-system-x86_64    \
  -smp 2 -m 2G        \
  -serial mon:stdio   \
  -nic user,model=virtio-net-pci,hostfwd=tcp:127.0.0.1:5037-:5037   \
  -vga none           \
  -device virtio-gpu-pci \
  -device virtio-keyboard-pci \
  -device virtio-mouse-pci   \
  -drive if=pflash,file=firmware,readonly=on,format=raw \
  -drive if=pflash,file=variables,format=raw \
  -drive file=disk.img,format=raw
arm64
qemu-system-aarch64   \
  -M virt -cpu cortex-a57   \
  -smp 2 -m 2G        \
  -serial mon:stdio   \
  -nic user,model=virtio-net-pci,hostfwd=tcp:127.0.0.1:5037-:5037   \
  -vga none           \
  -device virtio-gpu-pci \
  -device virtio-keyboard-pci \
  -device virtio-mouse-pci   \
  -drive if=pflash,file=firmware,readonly=on,format=raw \
  -drive if=pflash,file=variables,format=raw \
  -drive file=disk.img,format=raw

Notes:

  • The networking rule forwards host TCP 5037 to the guest dbgd service on 5037. Remove the hostfwd=... part if you don’t want it.
  • Add -vnc :0 to enable VNC output.

Docs


License

See LICENSE.

Directories

Path Synopsis
api
dbg
apps
background command
Background controls your desktop wallpaper and desktop menu.
Background controls your desktop wallpaper and desktop menu.
demo command
Demo App is a showcase of built-in interface controls.
Demo App is a showcase of built-in interface controls.
dock command
Dock gives quick access to pinned and running apps.
Dock gives quick access to pinned and running apps.
files command
File Manager lets you browse folders and manage files.
File Manager lets you browse folders and manage files.
gallery command
Image Viewer opens and previews image files.
Image Viewer opens and previews image files.
launcher command
App Menu helps you quickly find and open apps.
App Menu helps you quickly find and open apps.
notepad command
Notepad is a simple editor for plain-text files.
Notepad is a simple editor for plain-text files.
oobe command
Welcome (OOBE) guides first-time setup on a new system.
Welcome (OOBE) guides first-time setup on a new system.
power command
Power shows quick session and system actions.
Power shows quick session and system actions.
settings command
Settings Manager is where you change desktop and system preferences.
Settings Manager is where you change desktop and system preferences.
tasks command
Task Manager shows running apps, processes, and system usage.
Task Manager shows running apps, processes, and system usage.
terminal command
Terminal lets you run command-line tools and scripts.
Terminal lets you run command-line tools and scripts.
waylayer command
Waylayer provides Wayland compatibility support.
Waylayer provides Wayland compatibility support.
cmd
asciify command
`asciify` converts an image into ASCII art for terminal output.
`asciify` converts an image into ASCII art for terminal output.
copy command
`copy` copies files and directories.
`copy` copies files and directories.
delete command
`delete` removes files or directories.
`delete` removes files or directories.
distro command
`distro` manages the optional Linux distro compatibility layer in AvyOS.
`distro` manages the optional Linux distro compatibility layer in AvyOS.
dltest command
Command dltest exercises the pure-Go ELF dynamic loader (pkg/dl).
Command dltest exercises the pure-Go ELF dynamic loader (pkg/dl).
driver command
`driver` manages kernel modules.
`driver` manages kernel modules.
filter command
`filter` searches text content in files (grep-like behavior).
`filter` searches text content in files (grep-like behavior).
find command
`find` locates files by name pattern.
`find` locates files by name pattern.
identity command
`identity` manages user identities and capabilities.
`identity` manages user identities and capabilities.
info command
`info` shows filesystem metadata for a path.
`info` shows filesystem metadata for a path.
init command
`init` is the AvyOS init process (PID 1).
`init` is the AvyOS init process (PID 1).
link command
`link` creates symbolic links.
`link` creates symbolic links.
list command
`list` shows directory contents.
`list` shows directory contents.
mkdir command
`mkdir` creates directories.
`mkdir` creates directories.
mount command
`mount` manages filesystem mounts.
`mount` manages filesystem mounts.
move command
`move` moves or renames files and directories.
`move` moves or renames files and directories.
net command
`net` provides network interface and routing utilities.
`net` provides network interface and routing utilities.
open command
`open` launches a file or directory using app associations.
`open` launches a file or directory using app associations.
power command
`power` performs power and session actions.
`power` performs power and session actions.
process command
`process` inspects and manages running processes.
`process` inspects and manages running processes.
read command
`read` reads and inspects text files.
`read` reads and inspects text files.
request command
`request` provides connectivity and network request tools.
`request` provides connectivity and network request tools.
service command
`service` manages init services.
`service` manages init services.
session command
`session` starts and supervises the desktop user session.
`session` starts and supervises the desktop user session.
shell command
`shell` is the interactive AvyOS command shell.
`shell` is the interactive AvyOS command shell.
showoff command
`showoff` prints a compact system summary with AvyOS ASCII branding.
`showoff` prints a compact system summary with AvyOS ASCII branding.
system command
`system` provides system information and configuration tools.
`system` provides system information and configuration tools.
tree command
`tree` prints a directory tree view.
`tree` prints a directory tree view.
uevent command
`uevent` manages device-event inspection and monitoring.
`uevent` manages device-event inspection and monitoring.
write command
`write` prints formatted text to stdout, stderr, or a file.
`write` prints formatted text to stdout, stderr, or a file.
pkg
dl
Package dl implements a pure-Go ELF dynamic loader / runtime linker for Linux amd64 and arm64.
Package dl implements a pure-Go ELF dynamic loader / runtime linker for Linux amd64 and arm64.
fs
ini
net
pty
sutra
Package sutra provides an IPC framework for inter-process communication.
Package sutra provides an IPC framework for inter-process communication.
services
dbg command
`dbgd` is the AvyOS remote debugging daemon.
`dbgd` is the AvyOS remote debugging daemon.
display command
`display` is the core display/compositor service.
`display` is the core display/compositor service.
distro command
`distro` is the backend service for the `cmd/distro` tool.
`distro` is the backend service for the `cmd/distro` tool.
login command
`login` provides login screen and user session orchestration.
`login` provides login screen and user session orchestration.
service command
`service` is the internal service-management API daemon package.
`service` is the internal service-management API daemon package.
settings command
`settings` is the internal settings API daemon package.
`settings` is the internal settings API daemon package.
uevent command
`uevent` is the device-event monitoring and catalog service.
`uevent` is the device-event monitoring and catalog service.
tools
apigen command
dbg command
docgen command
genimage command
runimage command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL