Documentation

What EuroOS can do, today.

EuroOS is a from-scratch operating system written in Rust: its own UEFI boot, kernel, filesystem, network stack, security model and desktop, no inherited code. This page documents every subsystem that already runs today, verifiable in QEMU and on hardware. It is early (alpha), and it is genuinely working.

Rust · no_std · x86-64 UEFI 987 host tests green EUPL-1.2 Runs unmodified musl binaries

Boot & kernel

What it is. EuroOS’s own UEFI bootloader and kernel bring-up: it boots on standard UEFI firmware, captures the framebuffer, calls ExitBootServices, and from then on runs entirely on its own GDT/IDT/paging, no GRUB, no shim, no inherited kernel.

Why we do it this way. A sovereign OS must own the machine from the first instruction; relying on a foreign bootloader or kernel would put the trust boundary outside our control. Single-stage UEFI keeps the boot path small and auditable.

How it's used / how you use it. Flash the image to USB or run ./scripts/run-qemu.sh; the serial log narrates every boot step ([euro] …). On real hardware it boots to the desktop in ~1.5–2 s.

EuroOS boots itself on standard UEFI hardware, leaves the firmware behind, and runs entirely on its own code, no GRUB, no inherited kernel.

Own UEFI bootloader works

Boots via UEFI (GOP framebuffer, 8×8 font), then calls ExitBootServices and runs on its own stack. After that point no UEFI service is used.

GDT, TSS & IDT works

Own segment table and interrupt descriptor table with exception handlers (#GP, #PF, #DF, breakpoint), and a panic handler that paints a red screen + serial trace.

COM1 serial debug works

Full serial logging that keeps working after ExitBootServices, the backbone for debugging a bare-metal kernel.

PS/2 keyboard & mouse works

IRQ-driven keyboard (scancode ring buffer) and a PS/2 mouse driver (IRQ12, 3-byte packets), real input, no firmware.

Memory & paging

What it is. EuroMM: a bitmap physical frame allocator built from the real UEFI memory map, plus hand-built 4-level paging with per-process address spaces and guarded kernel stacks.

Why we do it this way. Owning memory management is what makes the security guarantees real: W^X, SMEP/SMAP and per-process isolation are enforced in our own page tables, not inherited. Guard pages turn silent stack overflows into deterministic faults.

How it's used / how you use it. It’s transparent to you, every process gets an isolated 2 MiB arena and its own CR3; free/mem in the shell show live usage. A faulting program is killed without taking down the system.

Own physical and virtual memory management, built from the real UEFI memory map.

Frame allocator (EuroMM) works

A bitmap physical frame allocator built from the UEFI memory map, sized on the highest usable region. Supports contiguous allocation.

4-level paging works

Own page tables (own CR3), identity-mapping the lower memory with 1 GiB huge pages; the user region carries the User bit at every level.

Kernel heap works

A working alloc heap so the kernel uses Vec, String, Box, the slab allocator is a planned upgrade.

Scheduler & tasks

What it is. A preemptive scheduler (100 Hz APIC timer) with full register-saving context switches, the Unix process model (fork/execve/wait/pipes/futexes), SMP with per-CPU run-queues, and EuroInit (PID-1) supervising services.

Why we do it this way. Real preemption + per-CPU queues are required to run a responsive desktop and untrusted programs side by side; an in-house scheduler lets us bind each task to its EuroGuard identity for the audit trail.

How it's used / how you use it. Run programs by name in the shell or let EuroInit start services; ps lists tasks, kill stops them, services/euroctl shows the supervised daemons. Crashed services restart with an anti-storm cap.

Real preemptive multitasking across kernel threads and ring-3 processes.

Preemptive scheduler works

A PIT-timer (100 Hz, 8259 PIC) drives a round-robin scheduler with a full register-saving context switch, code is interrupted and resumed transparently.

Concurrent processes works

Kernel threads + multiple ring-3 processes run at once, each with its own kernel stack (TSS.rsp0 switched per task). A live counter proves they advance in parallel.

Background daemon works

A loaded program scheduled as a real preemptible task that makes its own syscalls, the on-screen "EuroMonitor" heartbeat.

EuroFS, filesystem

What it is. A from-scratch copy-on-write filesystem with an A/B dual superblock, XXH3 end-to-end checksums, a background scrubber, CoW snapshots + rollback, and a VFS mount table, on virtio-blk and NVMe.

Why we do it this way. Integrity-first by design: CoW + an A/B superblock survive torn writes (the top reliability risk for any FS), and per-file checksums catch bit-rot instead of returning silent garbage. This was audited and the crash-consistency logic verified sound.

How it's used / how you use it. Files persist across reboots automatically; fsck/scrub verifies integrity, eurosnap takes/rolls back snapshots, df shows per-mount usage. A degraded superblock self-heals from its A/B copy on mount.

A crash-resistant copy-on-write filesystem with end-to-end checksums.

Copy-on-write works

Existing data is never overwritten until the new data is fully written, a power loss mid-write cannot corrupt your files. Crash-consistent checkpoints.

XXH3 checksums + data scrub works

Every inode and directory block is checksummed, and every file carries an XXH3 over its full contents, so bit-rot in a data block is caught: a corrupt block makes read fail loudly instead of returning silent garbage, and fsck/scrub verifies every file's data. A mount-scan rebuilt allocator, no on-disk bitmap to desync.

Read & write from userspace works

Programs create, read and write files through standard C calls (fopen/fread/fwrite); the shell can copy files and redirect output to disk.

Symbolic links works

Real symlinks, ln -s, readlink, transparent following during path lookup (absolute & relative targets), with loop detection. Writing through a link follows to its target.

Write-through block cache works

The live root filesystem runs through a concurrent write-through block cache (lock-free read hits, CLOCK eviction), faster repeat reads with the same crash-consistency guarantees.

Storage interoperability

What it is. Alongside its own EuroFS, EuroOS mounts the world's filesystems: FAT32, exFAT and Linux ext2, read + write (ext3/4 read), and SMB2/3 + NFSv3 network shares, with a format/mkfs command, an auto-detecting mount/umount/lsblk, USB-stick auto-mount and a TRIM/discard path.

Why we do it this way. Sovereignty doesn't mean isolation. To be usable, an OS has to read the USB sticks, disks and shares people already have, so every driver was written from scratch and verified against the real reference tools (fsck.fat/mtools, mkfs.exfat, mkfs.ext4, Samba, Linux nfsd), never a mock.

How it's used / how you use it. Plug in a disk and mount it, or mount //server/share and mount nfs://server/export; lsblk shows each volume and its type, format prepares a new disk. The whole stack was load- and stress-tested across many disk sizes.

Mount FAT32, exFAT, ext2/3/4, SMB2/3 and NFSv3 alongside EuroFS, each verified against the real reference tools.

FAT32, read & write works

Mount a FAT32 disk or partition and fully read and write it, create, grow, rename and delete files and directories. Cross-checked against fsck.fat and mtools.

exFAT & ext2, read & write works

Now read and write exFAT and Linux ext2 (create / write / delete files and directories), plus ext3/4 read with extent trees, verified against real mkfs.exfat / mkfs.ext4 images (journalled-fs and extent-file mutation are safely refused).

USB sticks · auto-mount works

Plug in a USB mass-storage device and its FAT/exFAT volume auto-mounts at /usb (read-only on boot, EuroOS never writes to your removable media unprompted). Real xHCI BOT/SCSI block path.

TRIM / discard works

A discard (TRIM) path runs through the whole block stack to the device (VIRTIO_BLK_T_DISCARD); EuroFS reports its copy-on-write-freed blocks, deferred one checkpoint so crash-rollback stays intact.

SMB2/3 network shares works

A from-scratch SMB2/3 client with NTLMv2 authentication, list, read and write files on a Windows/Samba share. Boot-verified over the live NIC against a real Samba server.

NFSv3 network shares works

An ONC-RPC/XDR NFSv3 client (portmap, mount, lookup, read, write, readdir) over TCP. Boot-verified over the live NIC against a real Linux nfsd.

format · mount · lsblk works

A format/mkfs command (FAT32 or EuroFS) and an auto-detecting mount/umount/lsblk that recognises FAT, exFAT, ext2/3/4, EuroFS and GPT partitions.

Multi-disk · load & stress tested works

Several disks at once, tested 8 MiB → 64 GiB: format → fill → verify → delete → reformat, cross-disk copy, plus a sustained stress test that fills the on-disk root to full and recovers cleanly.

Userspace & syscalls

What it is. Ring-3 userspace: a SYSV64 syscall path, an ELF loader that verifies an Ed25519 signature before executing any binary, ~200 Linux syscall dispatch arms, and validated user-pointer access at the kernel boundary.

Why we do it this way. Verify-before-execute means only signed code runs, the foundation of a trustworthy platform. The recent audit hardened the syscall boundary (user pointers are now bounds-checked against the calling process’s arena) and made the ELF loader overflow-safe.

How it's used / how you use it. Build a program with the EuroToolchain, sign it, drop it in /bin, and run it by name; an unsigned or tampered binary is refused ([sec] … GEWEIGERD).

Real ring-3 isolation with a SYSCALL/SYSRET interface and a growing POSIX-style syscall set.

Ring-3 isolation works

Programs run in ring 3 with their own page mappings and the User bit; the kernel runs in ring 0. SMEP/SMAP-aware. Faults are contained.

SYSCALL / SYSRET works

A real fast syscall path (EFER.SCE, STAR/LSTAR/FMASK MSRs) that preserves all user registers across the boundary.

ELF64 loader works

Loads multi-page ELF programs from EuroFS, applies R_X86_64_RELATIVE relocations, and builds a SysV stack (argc/argv/envp/auxv).

Linux / musl compatibility

What it is. A Linux ABI bridge: unmodified musl-libc binaries run via the syscall shim + a dynamic linker (DT_NEEDED resolution, GOT relocation).

Why we do it this way. Compatibility is a convenience, not the identity, it lets existing tooling run while the sovereign core (EuroGuard/EuroIPC/EuroFS) remains the real surface. It is deliberately a shim on the side, never the thing that defines the OS.

How it's used / how you use it. Compile ordinary C/musl programs and run them as-is; the kernel maps their Linux syscalls onto EuroOS facilities. Native EuroOS programs use the sovereign API directly.

EuroOS runs unmodified programs linked against musl libc, the path to a real software ecosystem.

Linux syscall ABI works

A compatibility layer translating Linux x86-64 syscalls (write, writev, read, openat, mmap, brk, arch_prctl, set_tid_address, clock_gettime, …) to EuroOS handlers.

musl static-PIE binaries works

A program built with musl-gcc -static-pie, using real printf, malloc, fopen, getenv, loads, relocates and runs in ring 3.

TLS & the SysV contract works

Thread-local storage via arch_prctl(SET_FS) (verified with %fs:0), plus a full argc/argv/envp/auxv stack, exactly what a musl _start expects.

Environment variables works

Programs inherit a system environment and read it with getenv(), LANG, TERM, PATH, HOME and more.

Sovereign platform & hardware

What it is. The hardware + platform breadth. EuroOS boots on a modern machine and installs onto it: PCIe ECAM config, from-scratch NVMe and AHCI/SATA storage drivers with install-to-and-boot-from disk, Intel e1000 and USB ethernet NICs, real xHCI USB (through hubs, report-descriptor-driven HID, mass storage, and USB audio), Intel HD-Audio, ACPI (power button + an AML interpreter), MSI-X interrupts, and a unified device model, with crash-dump recovery and a SMART health engine.

Why we do it this way. A desktop OS needs genuine hardware drivers, not emulation shims, each was written from scratch and boot-verified against the real device protocols so the platform is honest about what works.

How it's used / how you use it. Plug in a USB keyboard/storage device and it just works; lsdev shows the device tree, eurohealth the SMART/FS/memory health score, eurocrash the last kernel crash dump.

The Phase-2 layer: real device drivers and a security spine that is the actual European USP, hardware-anchored, tamper-evident, capability-governed. Every item below is boot-verified.

USB (xHCI) works

A full USB-3 host-controller driver: enumeration through hubs, HID keyboard/mouse/touchpad driven by the device's own report descriptor, Bulk-Only-Transport mass storage, and USB audio (UAC1) over isochronous transfers.

Intel HD-Audio works

CORB/RIRB codec enumeration, output routing and a stream-DMA that actually plays a mixed tone (the DMA position register advances).

NVMe & AHCI storage works

From-scratch NVMe (PRP-list I/O, MSI-X completion) and AHCI/SATA (LBA48 DMA) class drivers, the storage every modern machine has.

Install & boot from disk works

The installer writes a real GPT + EFI System Partition + EuroFS root to a blank NVMe or SATA disk; UEFI boots it back and the kernel runs standalone with its root on that disk. The boot medium is structurally protected.

Intel e1000 & USB ethernet works

An Intel e1000/e1000e gigabit driver plus CDC-ECM USB ethernet (dongles / phone tethering); the whole network stack runs on either.

Driverless print & scan works

Printing over IPP Everywhere and scanning over eSCL/AirScan, discovered by mDNS and spoken over HTTP, with no per-vendor driver.

Device model & ACPI/AML works

A unified device tree + driver registry (lsdev/hwprobe), an AML interpreter over the firmware DSDT, and the ACPI power button wired to a clean shutdown, plus battery/AC decode.

TPM 2.0, measured boot works

An MMIO driver over both the discrete (TIS) and firmware (CRB, Intel PTT / AMD fTPM) interfaces: GetRandom, PCR read/extend, seal/unseal. The hardware root of trust for full-disk encryption and sealed secrets.

Full-disk encryption works

Transparent per-block ChaCha20 encryption under any EuroFS, keyed by a TPM-generated 256-bit key, sovereign data-at-rest.

Immutability & audit works

Per-file immutable / append-only flags enforced even against root (gated by CAP_IMMUTABLE_ADMIN), and a tamper-evident append-only audit log.

CoW snapshots & rollback works

eurosnap, copy-on-write snapshots as frozen root-pointers; instant rollback that keeps the live filesystem intact.

Policy, vault & health works

A declarative capability-policy engine (europol), an encrypted capability-gated secrets vault (vault), Prometheus metrics, crash dumps, and a SMART eurohealth score.

Security

What it is. The sovereignty spine: EuroGuard capabilities, an append-only tamper-evident audit log, per-file immutability, a TPM 2.0 driver (measured boot), ChaCha20 full-disk encryption keyed from the TPM, the EuroPol policy engine, and the EuroVault secrets store.

Why we do it this way. Security is an architectural property, not a feature bolted on: every binary is signed, every privileged action is a capability that is logged, and the trust anchor is the local TPM, not a remote cloud. A full-stack security audit (see below) verified the crypto and capability model sound and hardened the rest.

How it's used / how you use it. caps/euroguard shows the capability model, audit the tamper-evident log, europol the policy, vault the secrets store; FDE + measured boot run automatically when a TPM is present.

Protection is built into the kernel, not bolted on. Two pillars are real today.

Capability tokens works

Every program is granted explicit capabilities (console, file, process-info, network). The kernel enforces least-privilege at the syscall boundary, in both the native and Linux ABIs. A program without NET simply cannot reach the network.

Ed25519 verify-before-execute works

Before any program runs, the kernel verifies a real Ed25519 signature over its bytes against an embedded public key. Tampered code is cryptographically rejected.

Signed package install works

The shell can install a signed package into EuroFS only after its Ed25519 signature checks out, a sovereign software supply chain on the OS itself.

App sandboxing works

Apps are isolated in their own address space & capability set; the desktop shows per-window security badges (sandboxed / encrypted / network).

EuroNet, networking

What it is. EuroNet: a from-scratch TCP/IP stack with EuroTLS 1.3 (own X.509 validator + a 25-root EU trust store), a stateful firewall (EuroFW), and a sovereign forward-secret VPN (EuroVPN).

Why we do it this way. Network sovereignty means the security-critical path, TLS, certificate validation, the VPN handshake, is our own auditable code anchored in an EU trust store, with no foreign dependency. The audit confirmed the TLS key-schedule, AEAD, signature verification, X.509 parser and VPN key-separation are sound; TLS entropy is now TPM-seeded and the VPN has an anti-replay window.

How it's used / how you use it. ping/nslookup/fetch/https exercise the stack; firewall shows the packet filter, vpn your sovereign tunnel key (WireGuard-style config).

An own network stack with a real virtio-net driver. EuroOS is on the network, IPv4 and IPv6.

virtio-net driver works

Own PCI scan, virtqueue setup and TX/RX path, real Ethernet frames go out and come back, verified in a packet capture.

IPv4: ARP · ICMP · UDP works

Own implementations, RFC-conform with correct checksums. The OS resolves the gateway via ARP and gets ICMP echo replies (ping). It also answers inbound pings and returns a proper ICMP port-unreachable (RFC 792) for unsolicited UDP, so closed ports signal correctly. Bad checksums and IP fragments are rejected on parse.

DHCP & DNS works

A DHCP client obtains a real lease (address, router, DNS, lease time); a DNS client resolves real domain names to real IPs.

IPv6: NDP · SLAAC · ICMPv6 works

Stateless address autoconfiguration (link-local + global via Router Advertisement), Neighbor Discovery, and ping6, full dual-stack.

TCP · HTTP · TLS 1.3 works

An own three-way handshake, sequencing and teardown; every segment is checksum-verified against the IPv4 pseudo-header, and a SYN to a closed port gets a proper RST (connection refused). HTTPS runs over an own TLS 1.3 (X25519 · ChaCha20-Poly1305).

X.509 certificate validation works

An own DER/ASN.1 parser, signature verification (ECDSA P-256/P-384, RSA PKCS#1 & PSS, Ed25519) and chain validation against a bundled EU-first root store, hostname, validity and the full signature chain are checked, so a man-in-the-middle with a valid-but-wrong certificate is refused. Verified against live public HTTPS.

# the network stack, live at boot (verified on the wire)
[net] virtio-net OK, MAC 52:54:00:12:34:56
[net] DHCP ACK: lease 10.0.2.15 (router 10.0.2.2, dns 10.0.2.3)
[net] DNS: example.com = 104.20.23.154
[net] IPv6 SLAAC: fe80::5054:ff:fe12:3456 · global fec0::…
[net] PING6 router: echo-reply OK

EuroDesktop

What it is. EuroDesktop: a compositor with a real Wayland wire-protocol display server over AF_UNIX, drawing app windows with an in-house AA font rasterizer and the EuroDesign light theme.

Why we do it this way. A sovereign desktop needs its own display server and protocol so the whole UI stack, input routing, window management, rendering, is auditable and not tied to foreign middleware.

How it's used / how you use it. It comes up at boot showing a live System window and an interactive Terminal; apps connect over the display socket to open windows.

A graphical desktop on an own compositor, windows, a mouse, a sidebar.

Compositor & windows works

Software-rendered overlapping windows with rounded corners, shadows, a z-order, click-to-focus and drag-to-move.

Mouse & cursor works

A live mouse cursor with save-under, driven by the PS/2 mouse, drag windows, focus by clicking title bars.

Design system (EDS) works

A design-token system (spacing, radius, the security colour language) drives a calm, consistent interface.

Shell

What it is. An interactive terminal with pipes (a | b), redirection, a GNU-compatible coreutils set, and every subsystem exposed as a command.

Why we do it this way. A real shell with composable built-ins makes the whole OS explorable and scriptable today, and the coreutils are pure, host-tested functions so their behaviour matches GNU exactly.

How it's used / how you use it. Type help for the live list; pipe built-ins (cat f | grep x | sort), run signed programs by name, and reach every subsystem (vault, europol, euroagent, locale, eurosuite, …).

An interactive shell in the terminal window with a classic Unix feel.

Run programs by name works

Type a program name and the kernel loads it from EuroFS, verifies its signature, and runs it in ring 3 with the right capabilities and ABI.

Pipes & redirection works

a | b connects one program's output to the next's input; > and >> redirect output to a file in EuroFS.

Arguments & install works

Command-line arguments flow into main(argc, argv); install <pkg> verifies and installs a signed package.

Live network commands works

ping <ip|name>, ping6 and net operate on the live NIC.

Built-in command reference all work today

Everything below runs in the terminal right now, type help for the live list. Program names are loaded from EuroFS and run in ring 3; the rest are shell built-ins.

Filesystem

ls cat write mkdir rm rmdir mv/rename df fsck/scrub fsck repair

System & processes

uname -a hostname free mem date uptime ps kill dmesg lspci reboot shutdown/poweroff clear help

Users & session EuroID · K1

login su sudo logout whoami id eurousers list eurousers show <name> eurousers add <name> <pw> [groups] eurousers passwd eurousers lock/unlock eurousers del eurousers groups eurousers audit --verify-chain · sovereign Argon2id credentials, per-user EuroGuard capabilities, failed-login lockout, and a tamper-evident hash-chain audit log (NIS2 / GDPR / ISO 27001).

Network

net netstat ping ping6 nslookup/resolve fetch/wget https tcpserve firewall/eurofw vpn/eurovpn

Coreutils GNU-compatible

echo seq head tail wc tac rev nl fold sort uniq cut tr grep find printf expr test factor numfmt sha256sum sha512sum base64 base32 cksum cp touch stat truncate basename dirname · pipes cat f | grep x | sort · tee

Agents EuroAgent

euroagent/agent, sovereign agent-first runtime: WASM agents with a declarative capability manifest, capability-isolated at the kernel, an open MCP gateway, every tool call audited.

Localisation & install 24 EU langs

locale locale <tag> (number/currency/date/plural/collation for all 24 EU languages) · euroinstall euroinstall live (guided installer / live-image planner)

Security & sovereignty

caps/euroguard europol vault audit eurosnap eurocrash eurohealth lsdev metrics

Services, containers & updates

services/euroctl container/ctr euroupdate/eup install <pkg> sprof

Toolchain & packages

What it is. The build + distribution stack: the EuroToolchain (freestanding C/musl → signed ring-3 ELF), the eupkg package format (ZIP + manifest + SHA-256 + Ed25519), the EuroPkg dependency resolver, and EuroRepro reproducible-build attestations.

Why we do it this way. Sovereignty requires verifiability: a third party must be able to prove a binary comes from the published source. Signed packages, semver dependency resolution, and independent-builder reproduction consensus close the source→binary→signed-image chain.

How it's used / how you use it. Build + sign a program, package it as .eupkg (tampered packages are rejected); europkg resolves dependencies into an install order; eurorepro shows the deterministic build attestation.

A complete toolchain to build, sign and install software for EuroOS.

EuroToolchain works

Compiles freestanding C and musl programs to position-independent ring-3 ELF binaries that run on the kernel.

eupkg package manager works

Builds and verifies signed .eupkg packages (ZIP + manifest + SHA-256 + Ed25519). Tampered packages are rejected.

Reproducible & open planned

Reproducible builds and the public repository land with the first alpha. The full source goes public under EUPL-1.2.

EuroLocale, 24 EU languages

Sovereign localisation for all 24 official languages of the European Union.

What it is. A CLDR-style library covering number/currency formatting, date patterns, plural rules and collation for every EU language, built from scratch, no external data blobs.

Why we do it this way. A European OS must speak every EU language, not just English; baking localisation into the core (and tying screen-reader labels and document language to it) makes that a property of the system, not an add-on.

How it's used / how you use it. locale lists the 24 languages; locale <tag> (e.g. locale de-DE) shows that language’s number, currency, date and plural formatting live.

Number & currency works

Per-language grouping/decimal separators and € or the national currency (BGN/CZK/DKK/HUF/PLN/RON/SEK) with correct symbol placement.

Dates & plurals works

DMY vs ISO date patterns + month names; the full CLDR plural systems (one/two/few/many/other) across the Slavic, Baltic, Celtic and Romance families.

Collation works

Diacritic folding so é sorts by e, plus per-language tailoring: Swedish å/ä/ö after z, German ä≈a, Spanish ñ after n, Czech č after c.

Coreutils, GNU-compatible userland

A from-scratch, GNU-compatible coreutils set, composable through pipes.

What it is. Each command is a pure fn(args, input) → bytes tested against expected GNU output, wired into the shell with real pipe-stdin, redirection and tee.

Why we do it this way. A usable shell needs a real userland; writing the coreutils as pure functions means their behaviour matches GNU exactly and is verifiable by host tests with no VM.

How it's used / how you use it. Use them like on Linux: cat f | grep x | sort | uniq -c, find / -name '*.txt', printf, sha256sum, base64. They compose with pipes and redirection.

Text & search works

cat head tail wc sort uniq cut tr grep nl fold tac rev + find (own glob, -name/-type/-maxdepth).

Compute & encode works

printf expr test factor numfmt seq + sha1/224/256/384/512sum md5sum b2sum base64 base32 cksum (own from-scratch hashes, verified against known vectors).

Files, links & text-tail works

ln -s readlink realpath mktemp env printenv + comm join split shuf, links resolve on EuroFS symlinks.

Pipelines works

Built-ins thread stdout→stdin through the shell; tee writes and passes through; head/tail -N shorthand. Composes in the desktop terminal too.

EuroAgent, sovereign agent runtime

The sovereign answer to agent-first platforms: AI agents run capability-isolated in the kernel, not a cloud.

What it is. Agents are WASM modules with a declarative capability manifest; the trust boundary is the kernel (EuroGuard), an open MCP gateway exposes OS tools, and a local LLM is the default. Every tool call is capability-gated and audited.

Why we do it this way. Unlike platforms that put the trust boundary in a remote cloud + mandatory identity provider, EuroAgent keeps it in the kernel: an agent never exceeds the granting user’s capabilities, runs sandboxed WASM, and works fully offline. EU data residency by construction.

How it's used / how you use it. euroagent shows the runtime; euroagent caps/mcp list/inspect/llm/dispatch test <intent> explore it. An agent’s manifest + WASM ship as an Ed25519-signed .euroa bundle.

Capability isolation host-tested

(required ∪ granted) ∩ user_caps − policy_denied, an agent can never get more than its parent user; elevated caps force user confirmation. (Audited: no bypass.)

MCP gateway over AF_UNIX works

JSON-RPC 2.0, 10 tools each gated on its capability, every call audited to the tamper-evident log; served over a real /run/euroagent/mcp.sock socket.

WASM agent host works

Agent code runs in the EuroWASM interpreter; its host imports route through the cap-gate to real EuroFS, boot-proven: with the cap it writes a file, without it the gateway denies.

Signed bundles + registry works

Ed25519-signed .euroa bundles (manifest‖wasm); the registry pins a name to its publisher so a different signer can’t hijack it.

Local LLM, cloud opt-in host-tested

An Ollama-compatible LlmBackend + the model→tool→result→model loop; cloud is opt-in per user with the key in EuroVault and every cloud call audited.

EuroSuite, office suite

A sovereign office suite on one Universal Document Model.

What it is. Writer, Calc and Impress share a single document model (EuroDoc); EuroDocIO reads/writes OOXML (.docx) and ODF (.odt) and exports HTML; EuroCalc is a real spreadsheet formula engine.

Why we do it this way. One model for all three apps means import/export and styling are written once and stay consistent; reading the formats Europe actually uses (OOXML + ODF) with our own from-scratch XML parser keeps the document path sovereign.

How it's used / how you use it. Today the computational cores run and are host-tested; eurosuite shows the capabilities and eurosuite calc =SUM(A1:A3)*2 evaluates a formula live. The GUI apps in the compositor are the next (attended) step.

Universal Document Model host-tested

Document (Writer/Sheet/Deck) + blocks/paragraphs/runs/tables/cells/slides + a style registry with inheritance + text/word/char statistics.

OOXML + ODF + HTML I/O host-tested

Own XML parser + .docx read/write (round-trip), .odt read, HTML export, the docx → model → HTML pipeline works end-to-end.

Formula engine (Calc) host-tested

Tokenizer + precedence parser + evaluator: cell refs, ranges A1:B3, SUM/AVERAGE/MIN/MAX/IF/ROUND, recursive formula cells, cycle detection, no floating-point libm.

Writer / Calc / Impress apps attended next

The three editors rendered in the compositor (cursor/selection, grid + live recalc, slide canvas), the GUI front-end is the attended next step.

Sovereign trust, CA, attestation, identity

Run your own root of trust: a local CA, remote attestation, and identity → capabilities.

What it is. EuroCA is a local certificate authority; EuroAttest is TPM-based remote attestation; EuroIDM maps users/groups to EuroGuard capabilities with signed tokens; EuroPkg + EuroRepro make the software supply chain verifiable.

Why we do it this way. Sovereignty means not depending on a foreign CA hierarchy or identity provider: an organisation runs its own root, proves machine state from the local TPM, and verifies that binaries come from published source, all anchored locally.

How it's used / how you use it. euroca shows the root-CA fingerprint, euroattest the measured-boot PCRs + attestation key, euroidm the identity→capability mapping, europkg/eurorepro the package + reproducible-build verification.

EuroCA works

TPM-seeded root CA: issue certs on a CSR, full chain verification (signature + validity + CA flag), revocation, a sovereign trust anchor, no foreign CA hierarchy.

EuroAttest works

Remote attestation: a nonce-bound quote over the real measured-boot PCRs; a verifier accepts a fresh quote but rejects replays and any untrusted state. Zero-trust admission.

EuroIDM host-tested

Users → groups → EuroGuard capabilities, with signed OIDC-style tokens (verify + expiry); a privilege-escalation attempt fails the signature.

Verifiable supply chain host-tested

EuroPkg resolves semver dependencies; EuroRepro proves source→binary with signed attestations + independent-builder consensus.

EuroAccess, accessibility

An EN 301 549 accessibility layer with a multilingual screen reader.

What it is. An AT-SPI-equivalent: an accessibility tree (roles/names/states), keyboard focus management, and a screen reader that announces each element in the user’s language (labels from EuroLocale).

Why we do it this way. Accessibility is a procurement requirement in the EU (EN 301 549), so it belongs in the core; sourcing labels from EuroLocale means the screen reader speaks every EU language.

How it's used / how you use it. euroaccess shows a sample dialog’s accessibility tree with the Dutch screen-reader announcements; the live EuroDisplay wiring + audio TTS are the attended next step.

Accessibility tree + focus host-tested

11 ARIA-style roles, reading-order focus with cyclic Tab navigation, text-field/checkbox state.

Multilingual screen reader host-tested

Announces each element per language (knop: … / Schaltfläche: … / bouton: …), labels from EuroLocale.

Live events + TTS attended next

EuroDisplay → the accessibility tree with focus/text events + audio TTS through EuroAudio, the attended next step.

Security & correctness audit

A full-stack audit verified the foundations and hardened the rest.

What it is. A 5-track parallel audit reviewed the whole stack (kernel, storage, crypto/net, userland, agent sandbox) for memory-safety, isolation, crypto and parser-robustness defects. Findings + status are in docs/SECURITY-AUDIT.md in the repository.

Why we do it this way. “What audits clean is as important as what doesn’t”: an honest OS publishes its audit. The security-critical foundations were confirmed sound, and the concrete defects were fixed and re-verified by boot.

How it's used / how you use it. The fixes are in the build you can download; the audit report lists every finding, its severity, and its status (fixed / tracked).

Foundations verified sound works

TLS 1.3 key-schedule/AEAD/signature-verify, the X.509 DER parser + chain validation, all Ed25519 signing encodings, the capability model + MCP cap-gate, A/B-superblock crash-consistency, CoW commit ordering, VPN key-separation.

Fixed & re-verified works

User-pointer validation at the syscall boundary, virtio queue/bounds guards, TPM-seeded TLS entropy, a VPN anti-replay window, WASM-interpreter bounds + memory cap, JSON/formula depth limits, GPT-CRC + filesystem bounds, and a linear glob matcher.

Tracked for hardening tracked

A few design-level items (full-disk-encryption keystream model, a complete per-arena syscall sweep) are documented for a focused, attended hardening sprint.

This documentation describes a project in active development. "Works" means it runs and is verified today in QEMU (and on hardware); "planned" means it is on the roadmap. Nothing here is a mock-up.  ← Back to euro-os.eu