<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eric-Octavian </title>
    <description>The latest articles on DEV Community by Eric-Octavian  (@ionablokchain).</description>
    <link>https://dev.to/ionablokchain</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3983797%2Fa952416d-441a-4bbc-b1a9-b3be15bafb0c.png</url>
      <title>DEV Community: Eric-Octavian </title>
      <link>https://dev.to/ionablokchain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ionablokchain"/>
    <language>en</language>
    <item>
      <title>Running Android on my own hypervisor — what I learned in one month. 11 partitions, 1.7GB sparse images.</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Sat, 25 Jul 2026 08:51:09 +0000</pubDate>
      <link>https://dev.to/ionablokchain/running-android-on-my-own-hypervisor-what-i-learned-in-one-month-11-partitions-17gb-sparse-5em2</link>
      <guid>https://dev.to/ionablokchain/running-android-on-my-own-hypervisor-what-i-learned-in-one-month-11-partitions-17gb-sparse-5em2</guid>
      <description>&lt;p&gt;I've been building IONA OS — a sovereign operating system written entirely in Rust — for the past 13 years.&lt;/p&gt;

&lt;p&gt;This month, I decided to run Android on it.&lt;/p&gt;

&lt;p&gt;Not as a virtual machine, not as an emulator, but as a &lt;strong&gt;real guest&lt;/strong&gt; running on my own hypervisor, written from scratch, in Rust, in Ring -1 (EL2).&lt;/p&gt;

&lt;p&gt;Here's how I did it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why run Android on a custom hypervisor?
&lt;/h2&gt;

&lt;p&gt;IONA OS is a sovereign operating system. It has its own kernel, its own GUI, its own blockchain protocol, its own programming language (Flux), and its own AI running in Ring 0.&lt;/p&gt;

&lt;p&gt;But a phone needs apps. And the biggest app ecosystem is Android.&lt;/p&gt;

&lt;p&gt;Instead of building a compatibility layer from scratch, I built a &lt;strong&gt;hypervisor&lt;/strong&gt; that can run a real Android system (AOSP) as a guest, completely isolated from IONA OS.&lt;/p&gt;

&lt;p&gt;The goal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IONA OS runs in EL1/EL0 (native, unchanged)&lt;/li&gt;
&lt;li&gt;Android runs in a separate EL1/EL0 guest&lt;/li&gt;
&lt;li&gt;EL2 (the hypervisor) manages the isolation&lt;/li&gt;
&lt;li&gt;The user sees a unified UI, but the two systems are completely separate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Suveranitate totală&lt;/strong&gt; — IONA OS remains untouched&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compatibilitate completă&lt;/strong&gt; — all Android apps work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Securitate maximă&lt;/strong&gt; — a compromised Android guest cannot affect IONA&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Week 1: The real AOSP diagnostic
&lt;/h2&gt;

&lt;p&gt;Most people would search Stack Overflow. I downloaded the actual AOSP source code from &lt;code&gt;android.googlesource.com&lt;/code&gt; and read it.&lt;/p&gt;

&lt;p&gt;The error message wasn't about a missing file. It was about a &lt;strong&gt;parsing failure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 1: &lt;code&gt;androidboot.slot_suffix&lt;/code&gt; missing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The kernel command line was missing &lt;code&gt;androidboot.slot_suffix&lt;/code&gt;. The fstab entries had &lt;code&gt;slotselect&lt;/code&gt;, which requires this property.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Add &lt;code&gt;androidboot.slot_suffix=_a&lt;/code&gt; to the kernel command line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2: GPT composite disk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;super.img&lt;/code&gt; was attached as a raw disk without a partition table. Android expects named partitions: &lt;code&gt;boot_a&lt;/code&gt;, &lt;code&gt;metadata&lt;/code&gt;, &lt;code&gt;super&lt;/code&gt;, &lt;code&gt;vbmeta_a&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Built a real GPT disk with &lt;code&gt;sgdisk&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;sgdisk -o /dev/sdb&lt;br&gt;
sgdisk -n 1:2048:+64M -t 1:EF00 /dev/sdb # boot_a&lt;br&gt;
sgdisk -n 2:... -t 2:8300 /dev/sdb # metadata&lt;/p&gt;

&lt;p&gt;Then wrote each image with &lt;code&gt;dd&lt;/code&gt; at the correct sector offset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 3: &lt;code&gt;/dev/block/by-name/*&lt;/code&gt; symlinks missing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;realpath /dev/block/by-name/super&lt;/code&gt; failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Read &lt;code&gt;devices.cpp&lt;/code&gt; in AOSP. The symlink is only created if &lt;code&gt;androidboot.boot_devices&lt;/code&gt; is set correctly. For ARM64 under QEMU, the correct value is &lt;code&gt;4010000000.pcie&lt;/code&gt;, not the PCI address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 4: Sparse images&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;super.img&lt;/code&gt; and &lt;code&gt;userdata.img&lt;/code&gt; were in Android sparse format (magic: &lt;code&gt;3aff26ed&lt;/code&gt;). &lt;code&gt;liblp&lt;/code&gt; reported "invalid geometry magic signature".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Converted with &lt;code&gt;simg2img&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;simg2img super.img super.raw&lt;br&gt;
simg2img userdata.img userdata.raw&lt;/p&gt;

&lt;p&gt;1.7GB sparse → 8GiB raw each.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 5: AVB (Android Verified Boot)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;libfs_avb: vbmeta digest error isn't allowed&lt;/code&gt; — AVB was blocking boot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Read &lt;code&gt;fs_mgr/libfs_avb/fs_avb.cpp&lt;/code&gt; and &lt;code&gt;util.cpp&lt;/code&gt;. The standard development property is:&lt;/p&gt;

&lt;p&gt;androidboot.verifiedbootstate=orange&lt;/p&gt;

&lt;p&gt;This is used by every &lt;code&gt;-userdebug&lt;/code&gt; build, not a hack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 6: APEX module ambiguities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apexd-bootstrap&lt;/code&gt; aborted repeatedly, once for each module with two variants installed (&lt;code&gt;gatekeeper&lt;/code&gt;, &lt;code&gt;graphics.composer&lt;/code&gt;, &lt;code&gt;keymint&lt;/code&gt;, &lt;code&gt;camera.provider.hal&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Read &lt;code&gt;apexd&lt;/code&gt; error messages. Each pointed to the exact property:&lt;/p&gt;

&lt;p&gt;ro.boot.vendor.apex.gatekeeper&lt;br&gt;
ro.boot.vendor.apex.graphics.composer&lt;/p&gt;

&lt;p&gt;Set them correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 7: &lt;code&gt;/data&lt;/code&gt; mounted read-only&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fstab required &lt;code&gt;ext4&lt;/code&gt; for &lt;code&gt;/data&lt;/code&gt;, but &lt;code&gt;userdata.img&lt;/code&gt; was actually formatted as F2FS (verified with &lt;code&gt;file&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Changed &lt;code&gt;androidboot.hardware=cf.f2fs.hctr2&lt;/code&gt; — the correct fstab variant for F2FS.&lt;/p&gt;

&lt;p&gt;Result: &lt;code&gt;__mount(..., type=f2fs)=0: Success&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 2: The vsock investigation
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SurfaceFlinger&lt;/code&gt; and several vendor HALs (&lt;code&gt;light&lt;/code&gt;, &lt;code&gt;uwb&lt;/code&gt;, &lt;code&gt;ril-daemon&lt;/code&gt;, &lt;code&gt;bt_hci&lt;/code&gt;) were stuck in a restart loop.&lt;/p&gt;

&lt;p&gt;The real cause: reading the Rust source of the lights HAL (&lt;code&gt;lights.rs&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;An &lt;code&gt;.unwrap()&lt;/code&gt; on creating an &lt;code&gt;AF_VSOCK&lt;/code&gt; socket was failing. Without &lt;code&gt;virtio-vsock&lt;/code&gt; transport, it fails guaranteed. Real Cuttlefish runs companion processes on the host (&lt;code&gt;casimir&lt;/code&gt;, &lt;code&gt;netsimd&lt;/code&gt;, &lt;code&gt;wmediumd&lt;/code&gt;) for these HALs.&lt;/p&gt;

&lt;p&gt;We don't have that. The fix would have been:&lt;/p&gt;

&lt;p&gt;We skipped it. The HALs are not critical for a booting Android system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 3: The real gap in the hypervisor
&lt;/h2&gt;

&lt;p&gt;You asked: &lt;em&gt;"repară breșa din kernel"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The dispatch loop in &lt;code&gt;hypervisor_launch_linux_image()&lt;/code&gt; didn't know what to do with a real &lt;code&gt;hvc&lt;/code&gt; from a guest. Any trap other than a stage-2 fault would "stop and report".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; A new &lt;code&gt;psci&lt;/code&gt; module in &lt;code&gt;hypervisor.rs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Real PSCI emulation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;PSCI_VERSION&lt;/code&gt; — returns &lt;code&gt;0x10000&lt;/code&gt; (version 1.0)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SYSTEM_OFF&lt;/code&gt; — powers off the guest&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SYSTEM_RESET&lt;/code&gt; / &lt;code&gt;RESET2&lt;/code&gt; — resets the guest&lt;/li&gt;
&lt;li&gt;Everything else — honest &lt;code&gt;NOT_SUPPORTED&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All constants verified from real Linux kernel headers (&lt;code&gt;include/uapi/linux/psci.h&lt;/code&gt;), not from memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verified organically:&lt;/strong&gt; The real Android kernel queried &lt;code&gt;PSCI_VERSION&lt;/code&gt; through IONA's own EL2 (not QEMU firmware) and received the correct response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verified synthetically:&lt;/strong&gt; New dedicated test: &lt;code&gt;guest_psci_reset_test&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regression caught before it happened:&lt;/strong&gt; Our own test hvc calls (&lt;code&gt;hvc #22&lt;/code&gt;, &lt;code&gt;#98&lt;/code&gt;, etc.) used imm≠0, but real PSCI uses imm=0. Without this distinction, the synthetic boot test would have silently broken.&lt;/p&gt;

&lt;p&gt;Verified on &lt;strong&gt;both paths&lt;/strong&gt; (normal EL1 + virtualized EL2): &lt;code&gt;ECDSA&lt;/code&gt;/&lt;code&gt;ECDSA-KAT&lt;/code&gt; all PASS, no regression.&lt;/p&gt;




&lt;h2&gt;
  
  
  The final test
&lt;/h2&gt;

&lt;p&gt;I deliberately provoked a known error (removed &lt;code&gt;slot_suffix&lt;/code&gt; again) to trigger a real, controlled reboot:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Android crashes: &lt;code&gt;InitFatalReboot: signal 6&lt;/code&gt; → &lt;code&gt;reboot: Restarting system with command 'bootloader'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;IONA genuinely intercepts that &lt;code&gt;SYSTEM_RESET&lt;/code&gt; through its own EL2: &lt;code&gt;PSCI call fid=0x84000009 -&amp;gt; guest power request&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hypervisor_launch_linux_image()&lt;/code&gt; returns (for the first time ever with a real guest attached) — the loop no longer blocks indefinitely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guest #1 (IONA itself) boots&lt;/strong&gt; — for the first time in any test run with a real external guest attached: &lt;code&gt;launching real guest: IONA kernel boot continuation at el1_native&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What this means
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IONA OS can run Android as a guest&lt;/strong&gt;, isolated in its own EL1/EL0 space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The hypervisor can intercept, emulate, and handle real requests&lt;/strong&gt; from a real Linux kernel (PSCI, stage-2 faults, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When Android crashes and reboots, IONA survives&lt;/strong&gt; — it intercepts the reboot, tears down the guest, and resumes its own boot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The isolation works.&lt;/strong&gt; Android cannot affect IONA OS. The kernel is completely unchanged.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This is not a finished product yet. But the foundation is solid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IONA OS runs the hypervisor (EL2) — unchanged&lt;/li&gt;
&lt;li&gt;IONA OS runs the native kernel (EL1) — unchanged&lt;/li&gt;
&lt;li&gt;Android runs as a guest (EL1) — isolated&lt;/li&gt;
&lt;li&gt;The hypervisor manages the transition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU acceleration for the Android guest&lt;/li&gt;
&lt;li&gt;Audio and input routing&lt;/li&gt;
&lt;li&gt;Integration into the IONA OS UI (Android apps appearing in the launcher)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The code
&lt;/h2&gt;

&lt;p&gt;You can find the full source code (including the hypervisor, the PSCI emulation, and the AOSP integration) in the IONA OS repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Ionablokchain/Iona-OS" rel="noopener noreferrer"&gt;github.com/Ionablokchain/Iona-OS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is not yet production‑ready — but the foundation is solid.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Running Android on my own hypervisor was one of the hardest things I've done.&lt;/p&gt;

&lt;p&gt;But it's also proof that &lt;strong&gt;one person can build sovereign infrastructure&lt;/strong&gt; — a hypervisor, a kernel, a blockchain, a language, an AI — all from scratch, all working together.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;iona.zone&lt;/a&gt;&lt;br&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;13 years of research. Every line written from scratch. And it works.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>mobile</category>
      <category>rust</category>
      <category>software</category>
    </item>
    <item>
      <title>I wrote a Post-Quantum SSH server in Rust — from scratch, in the kernel</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:40:54 +0000</pubDate>
      <link>https://dev.to/ionablokchain/i-wrote-a-post-quantum-ssh-server-in-rust-from-scratch-in-the-kernel-2pd4</link>
      <guid>https://dev.to/ionablokchain/i-wrote-a-post-quantum-ssh-server-in-rust-from-scratch-in-the-kernel-2pd4</guid>
      <description>&lt;p&gt;&lt;em&gt;No OpenSSH. No OpenSSL. Just Rust and a kernel.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I've been building IONA OS — a sovereign operating system written entirely in Rust — for the past 13 years.&lt;/p&gt;

&lt;p&gt;Last week, I finished one of the most complex components I've ever written: a full SSH server and VPN stack, both with &lt;strong&gt;post-quantum cryptography&lt;/strong&gt;, running inside the kernel itself.&lt;/p&gt;

&lt;p&gt;No external libraries. No OpenSSH. No OpenSSL. Just Rust, bare metal, and a lot of math.&lt;/p&gt;

&lt;p&gt;Here's how I did it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why post‑quantum?
&lt;/h2&gt;

&lt;p&gt;Quantum computers are coming. When they arrive, they will break RSA and ECC — the cryptographic foundations of almost everything on the internet.&lt;/p&gt;

&lt;p&gt;The US government has set a deadline: by &lt;strong&gt;2035&lt;/strong&gt;, all federal systems must be post‑quantum ready.&lt;/p&gt;

&lt;p&gt;I didn't want to wait. I wanted IONA OS to be post‑quantum from day one.&lt;/p&gt;

&lt;p&gt;So I implemented &lt;strong&gt;Dilithium (ML-DSA)&lt;/strong&gt; — a lattice‑based signature scheme standardised by NIST — from scratch, in Rust, in the kernel.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "from scratch in the kernel" actually means
&lt;/h2&gt;

&lt;p&gt;Most people use libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenSSH for SSH&lt;/li&gt;
&lt;li&gt;OpenVPN for VPN&lt;/li&gt;
&lt;li&gt;OpenSSL for crypto&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pqcrypto-dilithium&lt;/code&gt; for post‑quantum&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used none of them.&lt;/p&gt;

&lt;p&gt;Everything was written from zero, in Rust, with &lt;strong&gt;no &lt;code&gt;std&lt;/code&gt;&lt;/strong&gt;, no heap allocator (in the critical paths), and no external dependencies.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No &lt;code&gt;libc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;rand&lt;/code&gt; crate&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;sha2&lt;/code&gt; crate&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;x25519-dalek&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;curve25519-dalek&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;pqcrypto-dilithium&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every bit of crypto — every NTT transform, every modular reduction, every Keccak round — was written by me.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Post‑Quantum SSH Server
&lt;/h3&gt;

&lt;p&gt;A full SSH server running inside the kernel, listening on port 2222.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implemented correctly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mpint encoding&lt;/strong&gt; — big integer serialisation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChaCha20‑Poly1305 AEAD&lt;/strong&gt; — with round‑trip encryption and tamper rejection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KEX (Key Exchange)&lt;/strong&gt; — using Curve25519 + Dilithium&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host‑key signature&lt;/strong&gt; — signed with Dilithium&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KDF&lt;/strong&gt; — key derivation for session keys&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Post‑Quantum VPN
&lt;/h3&gt;

&lt;p&gt;A VPN protocol running alongside SSH, with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control framing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mutual signatures&lt;/strong&gt; — both sides authenticate with Dilithium&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data‑channel AEAD&lt;/strong&gt; — ChaCha20‑Poly1305 for packet encryption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tamper rejection&lt;/strong&gt; — modified packets are dropped&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Post‑Quantum Crypto
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dilithium (ML-DSA)&lt;/strong&gt; — for signatures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kyber (ML-KEM)&lt;/strong&gt; — for key encapsulation (planned/partial)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChaCha20‑Poly1305&lt;/strong&gt; — for symmetric encryption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curve25519&lt;/strong&gt; — for elliptic curve Diffie‑Hellman&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHA‑256 / SHA‑384&lt;/strong&gt; — for hashing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All written from zero.&lt;/p&gt;




&lt;h2&gt;
  
  
  The boot log that proves it works
&lt;/h2&gt;

&lt;p&gt;Here's what happens when IONA OS boots:&lt;/p&gt;

&lt;p&gt;[SSH] self-test passed: mpint encoding, cipher round-trip + tamper rejection, KEX agreement, host-key signature, KDF&lt;br&gt;
[VPN] self-test passed: control framing, KEX agreement, mutual signatures, key derivation, data-channel AEAD + tamper rejection&lt;br&gt;
[SEC] PQ crypto: ... SSH=OK OpenVPN=OK RSA=OK&lt;br&gt;
[SCHED] spawn 'ssh-accept-loop' tid=16 ...&lt;br&gt;
[BOOT-SEQ] ssh-server OK 2272ms&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this means:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;self-test passed&lt;/code&gt; — every cryptographic component was verified at boot&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tamper rejection&lt;/code&gt; — modified packets are detected and dropped&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;KEX agreement&lt;/code&gt; — the key exchange works correctly&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mutual signatures&lt;/code&gt; — both sides authenticate using Dilithium&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PQ crypto: SSH=OK OpenVPN=OK&lt;/code&gt; — post‑quantum crypto is active&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;2272ms&lt;/code&gt; — the entire stack initialises in just &lt;strong&gt;2.27 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The hardest part: Dilithium from scratch
&lt;/h2&gt;

&lt;p&gt;Dilithium is a lattice‑based signature scheme.&lt;/p&gt;

&lt;p&gt;It's not just "hard" — it's one of the most complex cryptographic algorithms ever standardised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes it hard:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NTT (Number Theoretic Transforms)&lt;/strong&gt; — you need fast polynomial multiplication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fiat‑Shamir with Aborts&lt;/strong&gt; — the signing algorithm can fail and retry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular arithmetic&lt;/strong&gt; — strict, no overflow, no timing leaks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Side‑channel resistance&lt;/strong&gt; — the code must run in constant time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory constraints&lt;/strong&gt; — no heap, no &lt;code&gt;Vec&lt;/code&gt;, no &lt;code&gt;Box&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing it in Rust, in &lt;code&gt;no_std&lt;/code&gt;, in the kernel, without any external help, took months.&lt;/p&gt;

&lt;p&gt;But it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Most operating systems depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenSSH for remote access&lt;/li&gt;
&lt;li&gt;OpenVPN / WireGuard for VPN&lt;/li&gt;
&lt;li&gt;OpenSSL / LibreSSL for crypto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IONA OS has none of these dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is completely sovereign.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to connect to an IONA OS machine, you use its native SSH server — with post‑quantum security, running directly in the kernel.&lt;/p&gt;

&lt;p&gt;No Linux. No userspace. No OpenSSL.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This is not the end. It's the foundation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mesh networking&lt;/strong&gt; — combine VPN with peer discovery to build a fully encrypted mesh between IONA OS devices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero‑trust authentication&lt;/strong&gt; — mutual signatures make every connection verifiable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post‑quantum TLS&lt;/strong&gt; — same stack, used for HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But that's for another article.&lt;/p&gt;




&lt;h2&gt;
  
  
  The code
&lt;/h2&gt;

&lt;p&gt;You can find the full source code (including Dilithium, SSH, and VPN) in the IONA OS repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Ionablokchain/Iona-OS" rel="noopener noreferrer"&gt;github.com/Ionablokchain/Iona-OS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is not yet production‑ready — but the foundation is solid.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;When I started building IONA OS, people told me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"You can't build an OS alone."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"You can't write your own crypto."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"You can't implement Dilithium from scratch."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I did all three.&lt;/p&gt;

&lt;p&gt;This SSH server is proof that &lt;strong&gt;one person can build sovereign infrastructure&lt;/strong&gt; — if they have the patience, the discipline, and the belief that it's possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IONA OS launches on September 15, 2026.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;iona.zone&lt;/a&gt;&lt;br&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;13 years of research. Every line written from scratch. And it works.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>rust</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Building a secure OS: the hard list — what I found and what I'm fixing in IONA OS</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Sun, 12 Jul 2026 18:13:33 +0000</pubDate>
      <link>https://dev.to/ionablokchain/building-a-secure-os-the-hard-list-what-i-found-and-what-im-fixing-in-iona-os-347g</link>
      <guid>https://dev.to/ionablokchain/building-a-secure-os-the-hard-list-what-i-found-and-what-im-fixing-in-iona-os-347g</guid>
      <description>&lt;p&gt;Every operating system has security gaps. Most never publish them.&lt;/p&gt;

&lt;p&gt;I am publishing mine.&lt;/p&gt;

&lt;p&gt;IONA OS is a sovereign operating system written from scratch in Rust. It has a kernel, a GUI, a blockchain protocol, a programming language, and a 140,000‑line AI running in Ring 0. It is designed to be secure by default.&lt;/p&gt;

&lt;p&gt;But secure is a journey, not a destination.&lt;/p&gt;

&lt;p&gt;Here is the hard list — the security issues I found in IONA OS, and what I am doing about them.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The filesystem is not encrypted at rest
&lt;/h2&gt;

&lt;p&gt;IONAFS reads and writes sectors in plain text directly to the disk. I already have a real ChaCha20‑Poly1305 engine with per‑file key derivation (&lt;code&gt;fs/encrypted_storage.rs&lt;/code&gt;), but it is only used for backup/distribution — not for everyday local reading and writing (&lt;code&gt;fs/ionafs/mod.rs&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
For a journalist or a civil servant, this is the central threat scenario: a lost device, confiscation at a border, or seizure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Integrating &lt;code&gt;encrypted_storage.rs&lt;/code&gt; into the normal IONAFS read/write path. Every write will be encrypted automatically. The key will be derived from a PIN or TPM.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Deleting a file does not destroy it
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;delete_file()&lt;/code&gt; removes only the index entry. The data sectors remain on the disk, recoverable with standard forensic tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
For users with high security requirements — journalists, activists, government officials — this is a critical gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adding a &lt;code&gt;shred()&lt;/code&gt; function that overwrites the data sectors with random patterns before releasing them, with a configurable number of passes.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The keystore uses XOR, not real encryption
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;security/keystore.rs&lt;/code&gt; pretends to use AES/ChaCha in its comments, but the actual implementation is a simple XOR stream — trivial to break once an attacker has access to the disk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This is a critical vulnerability. XOR is not encryption. If an attacker has access to the disk, they can recover the keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Replacing the XOR stream with real ChaCha20‑Poly1305 encryption, properly key‑derived and authenticated.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The onion routing is a UX simulation, not real anonymity
&lt;/h2&gt;

&lt;p&gt;The 3‑hop circuit exists conceptually in &lt;code&gt;net/onion.rs&lt;/code&gt;, but the relay list is hardcoded with fake IPs, circuit building is just a 500ms pause before marking it active, and the per‑hop key is &lt;code&gt;keccak256(node_id)&lt;/code&gt; — deterministic, not negotiated. There is no real key exchange with any relay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If a user believes they are sending data through a real anonymous circuit, they are actually sending it without any anonymity protection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Either implementing a real circuit with per‑hop key exchange, or removing the feature and being transparent about it.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. No duress password with fake content
&lt;/h2&gt;

&lt;p&gt;Zero results for "duress" in the entire codebase. If a journalist or civil servant is forced to unlock the device, there is no second code that shows a fake profile instead of the real data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
For users who may be coerced into revealing their device, this is essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adding a duress password that decrypts a fake volume, similar to VeraCrypt — two passwords, two volumes.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. No hidden / deniable storage
&lt;/h2&gt;

&lt;p&gt;Nothing equivalent to a VeraCrypt hidden volume. The only results for "decoy" are a honeypot oriented towards attackers (&lt;code&gt;ai/honeypot.rs&lt;/code&gt;) and drone command decoys — nothing for plausible deniability of the user's own data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Users with high risk profiles need to be able to deny the existence of certain data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adding a hidden volume that can be mounted with a separate password.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Secure boot measures hashes, not real signatures
&lt;/h2&gt;

&lt;p&gt;The boot measurement is now real (it actually hashes the entry point + .text, not a constant placeholder — corrected in this session), with a software TPM (&lt;code&gt;security/secure_boot.rs&lt;/code&gt;) and a root‑of‑trust gate. But there is no signature verification of the UEFI bootloader, and hardware TrustZone/Knox attestation is explicitly a stub that returns false.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Without signature verification, a compromised bootloader can still load a tampered kernel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adding signature verification with a public key embedded in the firmware, and investigating hardware attestation options.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Memory wiping does not touch the heap
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;memory::scrubber::scrub_all()&lt;/code&gt; — called by both emergency wipe paths — zeroizes only the CPU registers, even though the log claims "wiping sensitive memory". Key zeroisation depends entirely on &lt;code&gt;keystore::lock()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If a device is seized while running, sensitive data may remain in RAM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Implementing a function that zeroizes all memory pages before shutting down.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Metadata cleaning is a pattern scan, not a real parser
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ai/source_protector.rs&lt;/code&gt; zeroizes EXIF fields by searching for literal markers (GPS, Author, Model...). This is functional, but can miss fields not covered by the format, unlike a real EXIF/XMP/IPTC parser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A user who believes their metadata has been removed may still have sensitive information embedded in their files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing about it:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Using a real metadata parser (e.g., the &lt;code&gt;exif&lt;/code&gt; crate in Rust) for accurate cleaning, while keeping the pattern scan as a fallback.&lt;/p&gt;




&lt;h2&gt;
  
  
  The big picture
&lt;/h2&gt;

&lt;p&gt;This list is not a sign of failure. It is a sign of maturity.&lt;/p&gt;

&lt;p&gt;Most operating systems do not publish lists like this. They hide their security gaps. I am publishing mine because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;I understand the real threats&lt;/strong&gt; — not just theoretical vulnerabilities, but concrete scenarios (confiscation, border, seizure).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I am willing to be transparent&lt;/strong&gt; — I do not hide problems; I acknowledge them and fix them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I am building for real users&lt;/strong&gt; — journalists, civil servants, users with high risk profiles.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;My priorities:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Real keystore encryption&lt;/strong&gt; — replace XOR with ChaCha20‑Poly1305.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IONAFS encryption&lt;/strong&gt; — encrypt all writes by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure deletion&lt;/strong&gt; — add a &lt;code&gt;shred()&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duress password + hidden volume&lt;/strong&gt; — for coercion scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real onion routing&lt;/strong&gt; — or remove it and be transparent.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I fix all of these, IONA OS will be one of the most secure operating systems in the world.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to help?
&lt;/h2&gt;

&lt;p&gt;If you are a security researcher, a kernel developer, or just someone who cares about sovereign computing, I would love to hear your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;iona.zone&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building this alone. 13 years of research. Every line is written from scratch. And it works.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>rust</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Cloud AI is not AI — it's a service you rent</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:23:13 +0000</pubDate>
      <link>https://dev.to/ionablokchain/cloud-ai-is-not-ai-its-a-service-you-rent-1aga</link>
      <guid>https://dev.to/ionablokchain/cloud-ai-is-not-ai-its-a-service-you-rent-1aga</guid>
      <description>&lt;p&gt;When people talk about AI today, they are not talking about artificial intelligence.&lt;/p&gt;

&lt;p&gt;They are talking about a &lt;strong&gt;service&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You send a prompt to a server. The server runs a model. The model returns text. You pay per token. This is not intelligence. This is &lt;strong&gt;a utility&lt;/strong&gt; — like electricity or water.&lt;/p&gt;

&lt;p&gt;Real intelligence does not live in a data center. It does not depend on an API key. It does not stop working when the internet goes down.&lt;/p&gt;

&lt;p&gt;Real intelligence is local. It is sovereign. It is owned by the user.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Cloud AI, really?
&lt;/h2&gt;

&lt;p&gt;Cloud AI is a product. You rent access to a model that you do not control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You do not own the model.&lt;/strong&gt; You cannot modify it. You cannot see its weights. You cannot verify what it has learned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You do not control the data.&lt;/strong&gt; Your prompts, your files, your conversations — they go to someone else's server. You have no idea what happens to them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You do not control the infrastructure.&lt;/strong&gt; If the API goes down, your system stops. If the company changes its pricing, you pay more. If the company shuts down, you lose access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a partnership. This is a dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is real AI?
&lt;/h2&gt;

&lt;p&gt;Real AI runs locally. It does not send data anywhere. It does not require an internet connection. It does not depend on a company's goodwill.&lt;/p&gt;

&lt;p&gt;Real AI is built into the system itself — not as a service, but as a native component.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You own the model.&lt;/strong&gt; You can modify it, fine-tune it, or replace it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You control the data.&lt;/strong&gt; It never leaves your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You control the infrastructure.&lt;/strong&gt; It runs on your hardware, under your terms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what sovereignty looks like.&lt;/p&gt;




&lt;h2&gt;
  
  
  The difference is not technical — it's structural
&lt;/h2&gt;

&lt;p&gt;Cloud AI is not worse because the models are bad. The models are incredible. But they are not yours.&lt;/p&gt;

&lt;p&gt;Real AI is not better because the models are better. The models are smaller, often less capable. But they are yours.&lt;/p&gt;

&lt;p&gt;The difference is not about performance. It is about &lt;strong&gt;ownership&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  IONA AI — a real AI, not a service
&lt;/h2&gt;

&lt;p&gt;IONA AI is not a cloud service. It is a 70k+line Rust AI system that runs inside the kernel of IONA OS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It runs locally — on your hardware, not on a server.&lt;/li&gt;
&lt;li&gt;It does not send data anywhere — your data stays on your device.&lt;/li&gt;
&lt;li&gt;It does not depend on an API — it works even when the internet is off.&lt;/li&gt;
&lt;li&gt;It is fully integrated — it controls CPU governors, kills processes, synthesises drivers, and optimises the system in real time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not a service. A native component.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The AI industry is selling you a subscription and calling it intelligence.&lt;/p&gt;

&lt;p&gt;They want you to depend on them. They want your data. They want to own the relationship between you and the machine.&lt;/p&gt;

&lt;p&gt;But true intelligence cannot be rented. It must be owned.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do
&lt;/h2&gt;

&lt;p&gt;You can choose to depend on a cloud service, or you can choose to own your intelligence.&lt;/p&gt;

&lt;p&gt;It is built by one person, over 13 years. It does not depend on anyone. It is not a service. It is a sovereign operating system with a real, native AI.&lt;/p&gt;

&lt;p&gt;If you want to understand what real AI looks like, you can already see the architecture on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;iona.zone&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>cloud</category>
      <category>discuss</category>
      <category>saas</category>
    </item>
    <item>
      <title>Building a GUI from scratch in Rust — how IONA OS does compositing, widgets, and applications</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Tue, 07 Jul 2026 18:01:36 +0000</pubDate>
      <link>https://dev.to/ionablokchain/building-a-gui-from-scratch-in-rust-how-iona-os-does-compositing-widgets-and-applications-3mk0</link>
      <guid>https://dev.to/ionablokchain/building-a-gui-from-scratch-in-rust-how-iona-os-does-compositing-widgets-and-applications-3mk0</guid>
      <description>&lt;p&gt;****No Qt. No GTK. No WebView. Just Rust, pixels, and a compositor.&lt;/p&gt;

&lt;p&gt;IONA OS has a GUI. A real one — with windows, buttons, scrollbars, a dock, and applications.&lt;/p&gt;

&lt;p&gt;But unlike most operating systems, it doesn't use Qt, GTK, or any external toolkit. Every pixel is drawn by my own code, written in Rust, running in the kernel's address space.&lt;/p&gt;

&lt;p&gt;This article explains how I built the IONA OS GUI — from the compositor to the applications.&lt;/p&gt;




&lt;p&gt;Why Build a GUI from Scratch?&lt;/p&gt;

&lt;p&gt;Most operating systems use an existing toolkit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux → GTK / Qt / EFL&lt;/li&gt;
&lt;li&gt;Windows → Win32 / WPF / UWP&lt;/li&gt;
&lt;li&gt;macOS → AppKit / SwiftUI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These toolkits are mature, well‑tested, and save time.&lt;/p&gt;

&lt;p&gt;So why did I build my own?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because I wanted sovereignty over every pixel.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No external dependencies — I don't import Qt or GTK.&lt;/li&gt;
&lt;li&gt;No license restrictions — I own the entire stack.&lt;/li&gt;
&lt;li&gt;No bloat — I only implement what I need.&lt;/li&gt;
&lt;li&gt;No legacy — I start from a clean slate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And because writing a GUI from scratch is one of the most satisfying engineering challenges you can take on.&lt;/p&gt;




&lt;p&gt;The Architecture&lt;/p&gt;

&lt;p&gt;The GUI in IONA OS has three layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1: The Compositor (&lt;code&gt;src/gui/compositor.rs&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The compositor is the heart of the GUI. It manages windows, handles input, and draws the desktop.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Glass compositor&lt;/strong&gt; — windows are rendered with blur and transparency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double‑buffered&lt;/strong&gt; — no flicker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event‑driven&lt;/strong&gt; — input events are dispatched to the active window.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 2: The Widgets (&lt;code&gt;src/gui/widgets/&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Buttons, text inputs, scrollbars, tabs — all are written from scratch.&lt;/p&gt;

&lt;p&gt;Each widget is a struct that implements a &lt;code&gt;Widget&lt;/code&gt; trait:&lt;/p&gt;

&lt;p&gt;pub trait Widget {&lt;br&gt;
    fn draw(&amp;amp;self, pixels: &amp;amp;mut [u32], width: usize, height: usize);&lt;br&gt;
    fn handle_event(&amp;amp;mut self, event: &amp;amp;Event) -&amp;gt; bool;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This allows me to compose complex UIs from simple building blocks.&lt;/p&gt;

&lt;p&gt;Layer 3: The Applications (src/gui/apps/)&lt;br&gt;
Applications are normal Rust code that use the widget system.&lt;/p&gt;

&lt;p&gt;Browser — simple web view with scrollbar and navigation.&lt;/p&gt;

&lt;p&gt;Terminal — with scrollback and visual scrollbar.&lt;/p&gt;

&lt;p&gt;Mail — list of messages, with scroll and selection.&lt;/p&gt;

&lt;p&gt;Notes — simple text editor.&lt;/p&gt;

&lt;p&gt;Calendar — month view with navigation.&lt;/p&gt;

&lt;p&gt;Monitor — system metrics (CPU, RAM, processes).&lt;/p&gt;

&lt;p&gt;Bluetooth — device management.&lt;/p&gt;

&lt;p&gt;Clock — with timer and stopwatch.&lt;/p&gt;

&lt;p&gt;Benchmark — performance testing.&lt;/p&gt;

&lt;p&gt;Vector Icons — From Blob to Distinct&lt;br&gt;
Until recently, some icons in the dock and launcher were generic blobs. Now, every application has a distinct vector shape:&lt;/p&gt;

&lt;p&gt;Application Icon    Description&lt;br&gt;
Notes   📝    Notepad with lines&lt;br&gt;
Backup  💾    Floppy disk&lt;br&gt;
Vault   🔑    Key shape&lt;br&gt;
Bluetooth   🔗    Connected nodes&lt;br&gt;
Text Editor ✏️  Pencil&lt;br&gt;
The icons are drawn using anti‑aliased vector primitives (circles, rings, rectangles, lines). No images, no fonts — just code.&lt;/p&gt;

&lt;p&gt;Scrollbars — Finally Real&lt;br&gt;
Several applications had scrollable content but no visual scrollbar. Now they all use a common helper:&lt;/p&gt;

&lt;p&gt;pub fn draw_scrollbar_buf(&lt;br&gt;
    pixels: &amp;amp;mut [u32],&lt;br&gt;
    width: usize,&lt;br&gt;
    height: usize,&lt;br&gt;
    scroll: &amp;amp;mut ScrollState,&lt;br&gt;
    total: usize,&lt;br&gt;
    visible: usize,&lt;br&gt;
) {&lt;br&gt;
    // Draw a thumb on the right side&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This centralises the logic, so every application gets the same visual style, and I don't have to implement scrollbars six times.&lt;/p&gt;

&lt;p&gt;Applications That Actually Work&lt;br&gt;
The recent polish session fixed several UI bugs:&lt;/p&gt;

&lt;p&gt;Monitor — q and r keys now work. Process names are truncated on UTF‑8 boundaries, not raw bytes.&lt;/p&gt;

&lt;p&gt;Shell — keyboard input now reaches the CLI. All screens (dashboard, policy, recovery, services, operator, governor) are now usable.&lt;/p&gt;

&lt;p&gt;Bluetooth — all commands (1/2/s/p/c/u) now work. Errors are displayed, not silently dropped.&lt;/p&gt;

&lt;p&gt;Sovereign Apps — the AI chat now accepts keyboard input. MeshRadar now shows real data, not hardcoded numbers.&lt;/p&gt;

&lt;p&gt;Browser — toolbar now has real icons for Back, Forward, Refresh, Close, Lock, and Unlock.&lt;/p&gt;

&lt;p&gt;Terminal — now has a real scrollbar for scrollback.&lt;/p&gt;

&lt;p&gt;What Makes This GUI Different&lt;br&gt;
No external dependencies — every line is written by me.&lt;/p&gt;

&lt;p&gt;Integrated with the kernel — applications can call kernel syscalls directly.&lt;/p&gt;

&lt;p&gt;Built for Rust — the entire GUI is written in safe Rust (with minimal unsafe for pixel access).&lt;/p&gt;

&lt;p&gt;Sovereign — I control the entire stack, from compositor to application.&lt;/p&gt;

&lt;p&gt;What's Next&lt;br&gt;
IONA OS is still in active development. The GUI is getting polished, the kernel is stable, and the AI is growing.&lt;/p&gt;

&lt;p&gt;The first public ISO is scheduled for September 15, 2026.&lt;/p&gt;

&lt;p&gt;If you're interested in seeing more:&lt;/p&gt;

&lt;p&gt;Website: iona.zone&lt;/p&gt;

&lt;p&gt;GitHub: github.com/Ionablokchain&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>rust</category>
      <category>showdev</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>From blob to icon: polishing the IONA OS GUI — scrollbars, vector icons, and the art of fixing UI that was "almost there"</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Mon, 06 Jul 2026 16:55:50 +0000</pubDate>
      <link>https://dev.to/ionablokchain/from-blob-to-icon-polishing-the-iona-os-gui-scrollbars-vector-icons-and-the-art-of-fixing-ui-22fh</link>
      <guid>https://dev.to/ionablokchain/from-blob-to-icon-polishing-the-iona-os-gui-scrollbars-vector-icons-and-the-art-of-fixing-ui-22fh</guid>
      <description>&lt;p&gt;A kernel is the heart of an operating system. But a desktop is the face.&lt;/p&gt;

&lt;p&gt;IONA OS now has a stable kernel, a working compositor, and a growing set of applications. But until recently, some parts of the GUI were still rough around the edges — scrollbars that didn't scroll, icons that were indistinguishable blobs, and selections that disappeared into the void.&lt;/p&gt;

&lt;p&gt;This week, I fixed all of that.&lt;/p&gt;

&lt;p&gt;Here's what I polished in the IONA OS GUI — scrollbars, vector icons, and a few UI bugs that were "almost there" but not quite.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Vector Icons — From Blob to Distinct&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;IONA OS uses vector rendering for dock and launcher icons (&lt;code&gt;draw_icon_vector_glow&lt;/code&gt;). But a few applications didn't have their own vector art, so they fell back to a generic rounded blob — indistinguishable from every other missing icon.&lt;/p&gt;

&lt;p&gt;The affected applications were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notes&lt;/strong&gt; (Dock)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup&lt;/strong&gt; / Save (Launcher)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IONA Vault&lt;/strong&gt; / Key (Launcher)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IONA Bluetooth&lt;/strong&gt; / Share (Launcher)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Editor&lt;/strong&gt; / Edit (Launcher)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They all look like this:&lt;/p&gt;

&lt;p&gt;Generic blob — no identity&lt;/p&gt;

&lt;p&gt;Now, each has its own distinct vector shape:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Application&lt;/th&gt;
&lt;th&gt;Icon&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Notes&lt;/td&gt;
&lt;td&gt;📝&lt;/td&gt;
&lt;td&gt;Notepad with lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backup&lt;/td&gt;
&lt;td&gt;💾&lt;/td&gt;
&lt;td&gt;Floppy disk / save symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vault&lt;/td&gt;
&lt;td&gt;🔑&lt;/td&gt;
&lt;td&gt;Key shape&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth&lt;/td&gt;
&lt;td&gt;🔗&lt;/td&gt;
&lt;td&gt;Connected nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text Editor&lt;/td&gt;
&lt;td&gt;✏️&lt;/td&gt;
&lt;td&gt;Pencil / edit symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The code uses the existing &lt;code&gt;vec_draw()&lt;/code&gt; infrastructure, so no new rendering pipeline was needed — just a few extra &lt;code&gt;match&lt;/code&gt; arms in the icon dispatcher:&lt;/p&gt;

&lt;p&gt;// src/gui/primitives.rs (conceptual)&lt;br&gt;
Icon::Notes =&amp;gt; {&lt;br&gt;
    // notepad with lines&lt;br&gt;
    v_rect(…);&lt;br&gt;
    v_line(…);&lt;br&gt;
    v_line(…);&lt;/p&gt;

&lt;p&gt;Icon::Vault =&amp;gt; {&lt;br&gt;
    // key shape&lt;br&gt;
    v_ring(…);&lt;br&gt;
    v_rect(…);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Now every icon in the dock and launcher is visually distinct. No more blobs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scrollbars — Finally Real
Several applications had content that could overflow the screen, but no scrollbar to indicate where you were.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before:&lt;/p&gt;

&lt;p&gt;Files: no scroll indicator at all.&lt;/p&gt;

&lt;p&gt;Mail: selection could scroll off-screen and never return.&lt;/p&gt;

&lt;p&gt;Notes: same bug as Mail.&lt;/p&gt;

&lt;p&gt;Browser: no scrollbar for web content.&lt;/p&gt;

&lt;p&gt;Terminal: only a text line reading "scrollback 42%" — no visual thumb.&lt;/p&gt;

&lt;p&gt;After:&lt;/p&gt;

&lt;p&gt;All these applications now use a common helper: gui::widgets::scroll_view::draw_scrollbar_buf.&lt;/p&gt;

&lt;p&gt;The helper draws a consistent scrollbar on the right side of the viewport, with a thumb that scales to the visible content.&lt;/p&gt;

&lt;p&gt;Here's the shared code (simplified):&lt;/p&gt;

&lt;p&gt;// src/gui/widgets/scroll_view.rs&lt;br&gt;
pub fn draw_scrollbar_buf(&lt;br&gt;
    pixels: &amp;amp;mut [u32],&lt;br&gt;
    width: usize,&lt;br&gt;
    height: usize,&lt;br&gt;
    scroll: &amp;amp;mut ScrollState,&lt;br&gt;
    total: usize,&lt;br&gt;
    visible: usize,&lt;/p&gt;

&lt;p&gt;///if total &amp;lt;= visible { return; }&lt;br&gt;
    let thumb_height = (visible as f32 / total as f32 * height as f32) as usize;&lt;br&gt;
    let thumb_y = (scroll.offset as f32 / (total - visible) as f32 * (height - thumb_height) as f32) as usize;&lt;br&gt;
    // draw thumb on the right side&lt;br&gt;
    for y in thumb_y..thumb_y + thumb_height {&lt;br&gt;
        for x in width - 8..width - 2 {&lt;br&gt;
            pixels[y * width + x] = 0x444444;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;This centralises the logic, so every application gets the same visual style — and I don't have to implement scrollbars six times.&lt;/p&gt;

&lt;p&gt;Specific fixes:&lt;/p&gt;

&lt;p&gt;Mail &amp;amp; Notes: Selection can no longer scroll off-screen. When you move the selection past the visible area, the list auto-scrolls to keep it in view.&lt;/p&gt;

&lt;p&gt;Browser: The content area now has a real scrollbar (not just a static toolbar).&lt;/p&gt;

&lt;p&gt;Terminal: The "scrollback 42%" text is gone. Now there's a real thumb on the right edge.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Browser Toolbar — Icons, Not Text
The browser toolbar had buttons that were drawn as text symbols:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&amp;lt;  &amp;gt;  R  X  S  H&lt;/p&gt;

&lt;p&gt;Which worked, but looked rough and inconsistent.&lt;/p&gt;

&lt;p&gt;Now they're proper bitmap icons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Symbol                           Icon
&lt;/li&gt;
&lt;li&gt; &amp;lt;                             Back&lt;/li&gt;
&lt;li&gt; &amp;gt;                             Forward&lt;/li&gt;
&lt;li&gt; R                             Refresh &lt;/li&gt;
&lt;li&gt; X                             Close&lt;/li&gt;
&lt;li&gt; S                             Lock (secure)&lt;/li&gt;
&lt;li&gt; H                             Unlock (insecure)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The icons use the same Icon enum as the rest of the system:&lt;/p&gt;

&lt;p&gt;Icon::Back,&lt;br&gt;
Icon::Forward,&lt;br&gt;
Icon::Refresh,&lt;br&gt;
Icon::Close,&lt;br&gt;
Icon::Lock,&lt;br&gt;
Icon::Unlock,&lt;/p&gt;

&lt;p&gt;This makes the browser toolbar visually consistent with the rest of the desktop.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Calendar — Real Back/Forward Icons
The calendar header had &amp;lt; and &amp;gt; as plain text. Now they're real Icon::Back and Icon::Forward bitmap icons.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's a small change, but it makes the navigation feel more responsive and polished.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Big Picture: Why Small Details Matter
None of these changes are revolutionary. They're small, incremental improvements.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But together, they transform IONA OS from a system that technically works into a system that feels good to use.&lt;/p&gt;

&lt;p&gt;A scrollbar that actually moves.&lt;/p&gt;

&lt;p&gt;An icon that tells you what it represents.&lt;/p&gt;

&lt;p&gt;A selection that stays visible.&lt;/p&gt;

&lt;p&gt;These are the details that users notice — even if they don't consciously think about them.&lt;/p&gt;

&lt;p&gt;What's Next&lt;br&gt;
IONA OS is still in active development. The kernel is stable, the AI is growing, and the GUI is getting polished.&lt;/p&gt;

&lt;p&gt;The first public ISO is scheduled for September 15, 2026.&lt;/p&gt;

&lt;p&gt;If you're interested in seeing more, here are the links:&lt;/p&gt;

&lt;p&gt;Website: iona.zone&lt;br&gt;
GitHub: github.com/Ionablokchain&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Six GUI bugs I fixed in one day — how I made IONA OS actually usable From dead keyboard shortcuts to broken input to hardcoded data: a day of polish</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Sun, 05 Jul 2026 16:06:11 +0000</pubDate>
      <link>https://dev.to/ionablokchain/six-gui-bugs-i-fixed-in-one-day-how-i-made-iona-os-actually-usable-from-dead-keyboard-shortcuts-2m3f</link>
      <guid>https://dev.to/ionablokchain/six-gui-bugs-i-fixed-in-one-day-how-i-made-iona-os-actually-usable-from-dead-keyboard-shortcuts-2m3f</guid>
      <description>&lt;p&gt;Yesterday I spent a full day fixing six applications in IONA OS. None of them were completely broken. They all looked good, they all compiled, they all ran. But they were &lt;strong&gt;almost unusable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the story of how I turned them into actual tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem — applications that looked good but didn't respond
&lt;/h2&gt;

&lt;p&gt;IONA OS has a GUI compositor (&lt;code&gt;glass&lt;/code&gt;), a desktop, and a suite of applications. They are written in Rust, using a custom GUI framework. They compile, they render, they look decent.&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The keyboard shortcuts didn't work.&lt;/li&gt;
&lt;li&gt;Buttons were drawn but had no click regions.&lt;/li&gt;
&lt;li&gt;The shell had no keyboard input.&lt;/li&gt;
&lt;li&gt;Some applications showed hardcoded data next to real data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the phase where a project goes from "looks like a product" to "is a product". Here's how I fixed it.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Monitor — &lt;code&gt;q/r&lt;/code&gt; didn't work, and process names crashed the system
&lt;/h2&gt;

&lt;p&gt;The Monitor app shows CPU, RAM, processes, and network stats. It had two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pressing &lt;code&gt;q&lt;/code&gt; or &lt;code&gt;r&lt;/code&gt; (quit/refresh) did nothing — the input handler was never connected.&lt;/li&gt;
&lt;li&gt;Process names were truncated on raw bytes, not on character boundaries. If a process name contained multibyte UTF-8 (e.g., Chinese characters), the truncation could cut in the middle of a character and cause a crash.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; I connected the input handler properly and replaced the byte‑based truncation with a UTF‑8 safe function that respects character boundaries.&lt;/p&gt;

&lt;p&gt;// Before: crashed on multibyte chars&lt;br&gt;
let name = &amp;amp;proc_name[..16];&lt;/p&gt;

&lt;p&gt;// After: safe UTF-8 truncation&lt;br&gt;
let name = safe_truncate(proc_name, 16);&lt;/p&gt;

&lt;p&gt;Now Monitor is stable and responsive.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IONA Shell — the entire CLI was dead
The shell is the heart of IONA OS — it controls dashboards, policies, recovery, services, operators, and the governor. It's a text‑based interface for everything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But no keyboard input ever reached it.&lt;/p&gt;

&lt;p&gt;The input loop was written, the rendering was working, but the event pipeline stopped before the shell. For weeks, I had been testing it with simulated input. Real users would have seen a frozen screen.&lt;/p&gt;

&lt;p&gt;Fix: I traced the event chain from the kernel's keyboard driver through the GUI compositor to the shell. I found that key events were being delivered to the window but not forwarded to the CLI handler. I fixed the forwarding logic.&lt;/p&gt;

&lt;p&gt;Now the shell is fully functional. Every screen (dashboard, policy, recovery, services, operator, governor) responds to real keyboard input.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bluetooth — dead commands and silent failures
Bluetooth had five commands: 1 (scan), 2 (pair), s (status), p (pair), c (connect), u (unpair). None of them worked. The key handler was written, but the format was dead — the event parser was looking for the wrong key codes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Arrow navigation was also broken — it used old PS/2 key codes instead of modern USB HID codes. Only the mouse wheel worked.&lt;/p&gt;

&lt;p&gt;Worse: when a command failed, it just returned (). No error message, no feedback.&lt;/p&gt;

&lt;p&gt;Fix: I rewrote the key handler to use correct USB HID codes and added error display. Now every command shows a result or an error message.&lt;/p&gt;

&lt;p&gt;// Before: silent failure&lt;br&gt;
fn pair_device() { .. } // returned nothing&lt;/p&gt;

&lt;p&gt;// After: error feedback&lt;br&gt;
fn pair_device() -&amp;gt; Result { .. } // returns success or error&lt;/p&gt;

&lt;p&gt;Now you can scan, pair, connect, disconnect, and unpair — and you know if it worked.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sovereign Apps — AI chat dead, hardcoded data
Sovereign Apps contains the AI Assistant and the Blockchain Monitor. The AI Assistant had a text input that was rendered but didn't accept keyboard input (same format‑dead bug). The Blockchain Monitor had a scroll region that didn't respond.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Separately, the MeshRadar panel showed Peers: 3 Online: 2 — hardcoded values. Next to it, the real mesh status was being updated, but users were seeing two different numbers.&lt;/p&gt;

&lt;p&gt;Fix: I fixed the input handler for the AI chat and the scroll region. I also replaced the hardcoded values with real data from the mesh subsystem.&lt;/p&gt;

&lt;p&gt;// Before: hardcoded&lt;br&gt;
draw_text("Peers: 3 Online: 2");&lt;/p&gt;

&lt;p&gt;// After: real data&lt;br&gt;
draw_text(&amp;amp;format!("Peers: {} Online: {}", mesh_peers(), mesh_online()));&lt;/p&gt;

&lt;p&gt;Now the AI Assistant works, the Blockchain Monitor scrolls, and the MeshRadar shows truth.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Benchmark — R or Enter didn't start the test
The Benchmark app showed a prompt: Press R or Enter to start. But pressing R or Enter did nothing. Same bug — the format was dead.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fix: I connected the prompt to the actual event handler. Now pressing R or Enter starts the benchmark.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clock — Start/Reset buttons had no click region
The Timer screen in the Clock app had Start and Reset buttons. They were drawn on the screen, but clicking them did nothing. Only keyboard shortcuts worked.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fix: I added the missing click region. Now clicking the buttons works.&lt;/p&gt;

&lt;p&gt;The pattern — and what I learned&lt;br&gt;
All six bugs were variations of the same two problems:&lt;/p&gt;

&lt;p&gt;Input events were not being forwarded — the rendering was correct, but the event pipeline stopped before reaching the application.&lt;/p&gt;

&lt;p&gt;String handling was unsafe — byte‑based truncation can crash on multibyte UTF‑8.&lt;/p&gt;

&lt;p&gt;I fixed the input forwarding in each application individually. Next, I plan to centralise this logic so it doesn't happen again.&lt;/p&gt;

&lt;p&gt;What this means for IONA OS&lt;br&gt;
IONA OS is now more than a kernel that boots. It's an operating system you can actually use.&lt;/p&gt;

&lt;p&gt;The Monitor shows real data and responds to your keys.&lt;/p&gt;

&lt;p&gt;The Shell is a fully functional CLI.&lt;/p&gt;

&lt;p&gt;Bluetooth works.&lt;/p&gt;

&lt;p&gt;The AI Assistant can be used.&lt;/p&gt;

&lt;p&gt;The Benchmark is lansable.&lt;/p&gt;

&lt;p&gt;The Clock Timer responds to clicks.&lt;/p&gt;

&lt;p&gt;These fixes took one day. They made the difference between "it compiles" and "it works".&lt;/p&gt;

&lt;p&gt;Why this matters&lt;br&gt;
A system of operating that boots but has unusable applications is a demo. A system where every application responds to input and shows real data is a product.&lt;/p&gt;

&lt;p&gt;IONA OS is now closer to a product than it's ever been.&lt;/p&gt;

&lt;p&gt;Resources&lt;br&gt;
Website: iona.zone&lt;/p&gt;

&lt;p&gt;GitHub: github.com/Ionablokchain&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>rust</category>
      <category>showdev</category>
      <category>ux</category>
    </item>
    <item>
      <title>24 hours of kernel debugging – keeping IONA OS alive in QEMU Lock ordering, backlight hangs, hypervisor detection, and an AMD FCH guard</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Thu, 02 Jul 2026 16:27:30 +0000</pubDate>
      <link>https://dev.to/ionablokchain/24-hours-of-kernel-debugging-keeping-iona-os-alive-in-qemu-lock-ordering-backlight-hangs-3bbd</link>
      <guid>https://dev.to/ionablokchain/24-hours-of-kernel-debugging-keeping-iona-os-alive-in-qemu-lock-ordering-backlight-hangs-3bbd</guid>
      <description>&lt;p&gt;Yesterday was a good day.&lt;/p&gt;

&lt;p&gt;I fixed five bugs that had been bothering me for a while. None of them were catastrophic, but they were subtle — the kind of bugs that cause hangs, deadlocks, or silent failures that are hard to reproduce.&lt;/p&gt;

&lt;p&gt;Here's what I fixed, how I found them, and what I learned.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Lock Order WM→BACK — The Deadlock You Don't See
&lt;/h2&gt;

&lt;p&gt;The bug: IONA OS would occasionally hang when the window manager tried to acquire a lock that was already held by the backlight driver.&lt;/p&gt;

&lt;p&gt;The problem: ABBA deadlock. Thread A locked WM, then tried to lock BACK. Thread B locked BACK, then tried to lock WM.&lt;/p&gt;

&lt;p&gt;The fix: Reorder the locks. Always acquire BACK first, then WM. Consistent order = no deadlock.&lt;/p&gt;

&lt;p&gt;// Before&lt;br&gt;
lock(&amp;amp;WM);&lt;br&gt;
lock(&amp;amp;BACK);&lt;/p&gt;

&lt;p&gt;// After&lt;br&gt;
lock(&amp;amp;BACK);&lt;br&gt;
lock(&amp;amp;WM);&lt;/p&gt;

&lt;p&gt;Simple, but hard to find without tracing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Backlight Skip — QEMU Has No Backlight
The bug: On boot, IONA OS would hang at [BL] Backlight init... when running in QEMU.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem: QEMU doesn't have a backlight device. The driver was trying to communicate with hardware that didn't exist.&lt;/p&gt;

&lt;p&gt;The fix: Detect the hypervisor and skip backlight initialization entirely.&lt;/p&gt;

&lt;p&gt;if is_hypervisor() {&lt;br&gt;
    serial_println!("[BL] Hypervisor detected — skipping backlight init");&lt;br&gt;
    return;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Now IONA OS boots cleanly in QEMU.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hypervisor Detection — CPUID without the Flag
The bug: is_hypervisor() would return false even in QEMU.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem: The CPUID 1 leaf ECX&lt;a href="https://dev.tohypervisor%20bit"&gt;31&lt;/a&gt; is not always set, especially with -cpu qemu64.&lt;/p&gt;

&lt;p&gt;The fix: Don't rely on the flag. Probe the hypervisor leaf directly (0x4000_0000).&lt;/p&gt;

&lt;p&gt;fn is_hypervisor() -&amp;gt; bool {&lt;br&gt;
    // Try the hypervisor leaf directly&lt;br&gt;
    let eax = unsafe { cpuid(0x4000_0000) }.eax;&lt;br&gt;
    eax != 0&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This works with any QEMU configuration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;EDP FCH Guard — MMIO That Doesn't Exist
The bug: IONA OS would page fault when trying to read AMD FCH registers in QEMU.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem: The EDP driver was reading MMIO addresses that exist on real hardware (AMD FCH) but not in QEMU.&lt;/p&gt;

&lt;p&gt;The fix: Add a guard — if the hypervisor is detected, skip the FCH access.&lt;/p&gt;

&lt;p&gt;if is_hypervisor() {&lt;br&gt;
    serial_println!("[EDP] Skipping AMD FCH MMIO — running in VM");&lt;br&gt;
    return;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;No more page faults.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Disk Image Path — The Silent Fail
The bug: The build pipeline was producing a disk image, but QEMU couldn't find it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem: The build script was looking for x86_64-unknown-none/iona-pc.bin, but the actual path was x86_64-iona/debug/iona-pc.bin.&lt;/p&gt;

&lt;p&gt;The fix: Update the build script to use the correct target directory.&lt;/p&gt;

&lt;h1&gt;
  
  
  Before
&lt;/h1&gt;

&lt;p&gt;cp target/x86_64-unknown-none/debug/iona-pc.bin dist/&lt;/p&gt;

&lt;h1&gt;
  
  
  After
&lt;/h1&gt;

&lt;p&gt;cp target/x86_64-iona/debug/iona-pc.bin dist/&lt;/p&gt;

&lt;p&gt;A small fix, but it made the difference between booting and failing.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Bug-finding is a skill. The hardest bugs aren't the ones that crash — they're the ones that silently hang or fail unpredictably.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hypervisor detection needs to be robust. Not all hypervisors set the standard flag. Always try the direct leaf.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lock ordering is critical. A single reversed lock order can cause intermittent deadlocks that are nearly impossible to reproduce.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even small fixes matter. Fixing a path in the build script can save hours of confusion.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The State of IONA OS&lt;br&gt;
These five fixes are part of a larger effort to stabilise IONA OS&lt;/p&gt;

&lt;p&gt;The kernel is now:&lt;/p&gt;

&lt;p&gt;Bootable in QEMU and on real hardware.&lt;br&gt;
Stable under load.&lt;br&gt;
Actively maintained and debugged.&lt;/p&gt;

&lt;p&gt;Resources&lt;br&gt;
GitHub: github.com/Ionablokchain&lt;br&gt;
Website: iona.zone&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>debugging</category>
      <category>devjournal</category>
      <category>programming</category>
    </item>
    <item>
      <title>Writing apps for IONA OS — a quick start guide</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Sun, 28 Jun 2026 19:20:34 +0000</pubDate>
      <link>https://dev.to/ionablokchain/writing-apps-for-iona-os-a-quick-start-guide-7n1</link>
      <guid>https://dev.to/ionablokchain/writing-apps-for-iona-os-a-quick-start-guide-7n1</guid>
      <description>&lt;p&gt;IONA OS is not just a kernel. It's a complete platform for building sovereign applications.&lt;/p&gt;

&lt;p&gt;This guide shows you how to write your first native application for IONA OS — from project setup to running it on the system.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Ecosystem
&lt;/h2&gt;

&lt;p&gt;IONA OS supports two languages for native application development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rust&lt;/strong&gt; — for performance-critical applications (system tools, drivers, 3D applications).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flux&lt;/strong&gt; — for applications that leverage the AI, causal memory, and timeline features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both languages can interact with the kernel through a unified syscall interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Writing a Rust Application
&lt;/h2&gt;

&lt;p&gt;Create a new Rust project:&lt;/p&gt;

&lt;p&gt;cargo new my_app --bin&lt;/p&gt;

&lt;p&gt;Add the IONA syscall crate to Cargo.toml:&lt;br&gt;
[dependencies]&lt;br&gt;
iona-syscall = { git = "&lt;a href="https://github.com/Ionablokchain/Iona-OS" rel="noopener noreferrer"&gt;https://github.com/Ionablokchain/Iona-OS&lt;/a&gt;" }&lt;/p&gt;

&lt;p&gt;// src/main.rs&lt;/p&gt;

&lt;h1&gt;
  
  
  ![no_std]
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ![no_main]
&lt;/h1&gt;

&lt;p&gt;use iona_syscall::*;&lt;/p&gt;

&lt;p&gt;pub extern "C" fn _start() -&amp;gt; ! {&lt;br&gt;
    // Print a message to the console&lt;br&gt;
    println!("Hello from IONA OS!");&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Get system metrics
let cpu_temp = syscall::get_cpu_temp();
let uptime = syscall::get_uptime();

println!("CPU Temperature: {}°C", cpu_temp);
println!("Uptime: {} seconds", uptime);

loop {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Build and run:&lt;/p&gt;

&lt;p&gt;cargo build --target x86_64-unknown-iona&lt;br&gt;
iona-run target/x86_64-unknown-iona/debug/my_app&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Writing a Flux Application
Flux is a language designed for describing intentions, timelines, and causal relationships.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A simple Flux application:&lt;/p&gt;

&lt;p&gt;intention HelloWorld {&lt;br&gt;
    trigger: on_boot()&lt;br&gt;
    priority: 0.5&lt;br&gt;
    execute: {&lt;br&gt;
        send("inner_voice", "Hello from Flux!", 1s);&lt;br&gt;
        let temp = system::cpu_temp();&lt;br&gt;
        send("inner_voice", "CPU temperature is: " ++ to_string(temp), 1s);&lt;br&gt;
    }&lt;br&gt;
}&lt;br&gt;
Flux applications are compiled to bytecode and run on the Flux VM, which is integrated into the kernel.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI Integration — The ai Syscall
IONA OS applications can interact with the kernel-integrated AI.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;let result = syscall::ai_query("What is the current system health?");&lt;br&gt;
println!("AI says: {}", result);&lt;/p&gt;

&lt;p&gt;The AI can also be used for:&lt;/p&gt;

&lt;p&gt;ai_suggest_governor() — suggests optimal CPU governor for current workload.&lt;/p&gt;

&lt;p&gt;ai_optimize_memory() — suggests memory management changes.&lt;/p&gt;

&lt;p&gt;ai_predict_crash() — predicts potential system failures.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GUI Applications
IONA OS includes a native GUI compositor (glass). Applications can create windows, buttons, and text inputs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;use iona_gui::*;&lt;/p&gt;

&lt;p&gt;fn main() {&lt;br&gt;
    let window = Window::new("My App", 800, 600);&lt;br&gt;
    let button = Button::new("Click me");&lt;br&gt;
    button.on_click(|| {&lt;br&gt;
        println!("Button clicked!");&lt;br&gt;
    });&lt;br&gt;
    window.add(button);&lt;br&gt;
    window.run();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The GUI compositor supports 3D acceleration via VirGL/Vulkan, animations, and themes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What's Next
This is just the beginning. IONA OS also supports:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;WASM — run WebAssembly applications in a sandbox.&lt;/p&gt;

&lt;p&gt;System services — background tasks, daemons, and services.&lt;/p&gt;

&lt;p&gt;Blockchain integration — native IONA Protocol transactions from your app.&lt;/p&gt;

&lt;p&gt;All of this is available in the current version of IONA OS.&lt;/p&gt;

&lt;p&gt;Resources&lt;br&gt;
GitHub: github.com/Ionablokchain&lt;/p&gt;

&lt;p&gt;Website: iona.zone&lt;/p&gt;

&lt;p&gt;Documentation: (coming soon)&lt;/p&gt;

&lt;p&gt;IONA OS&lt;/p&gt;

&lt;p&gt;I'm building this alone. 13 years of research. Every line is written from scratch. And it works.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>flux</category>
    </item>
    <item>
      <title>How to Make a Kernel AI Actually Rational: Causal Chains, Hallucination Detection, and a Parliament</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Fri, 26 Jun 2026 19:09:07 +0000</pubDate>
      <link>https://dev.to/ionablokchain/how-to-make-a-kernel-ai-actually-rational-causal-chains-hallucination-detection-and-a-parliament-cfa</link>
      <guid>https://dev.to/ionablokchain/how-to-make-a-kernel-ai-actually-rational-causal-chains-hallucination-detection-and-a-parliament-cfa</guid>
      <description>&lt;p&gt;IONA OS is an operating system written from scratch in Rust. It has its own kernel, its own GUI, its own blockchain protocol, its own programming language (Flux), and — since recently — its own kernel‑integrated AI.&lt;/p&gt;

&lt;p&gt;Not a chatbot. Not a cloud API wrapper. An AI that runs in Ring 0, reads CPU temperature directly, kills processes, changes governors, and synthesises drivers. &lt;/p&gt;

&lt;p&gt;But here's the thing: when an AI runs inside the kernel, a hallucination isn't just a wrong answer. It could crash the system, corrupt memory, or make a bad decision that leaves your laptop unusable.&lt;/p&gt;

&lt;p&gt;So I built a system that doesn't just &lt;em&gt;generate&lt;/em&gt; responses. It &lt;em&gt;verifies&lt;/em&gt; them. It cross‑checks facts, detects causal loops, and consults a governance system before taking any risky action.&lt;/p&gt;

&lt;p&gt;Here's how it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Causal Chain — Not Just Logs
&lt;/h2&gt;

&lt;p&gt;Most systems log events. IONA AI builds a causal graph.&lt;/p&gt;

&lt;p&gt;Every event — a temperature spike, a governor change, a user command — is stored with a parent pointer. When the AI observes a problem, it traverses the chain backwards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
Event: temperature = 89°C&lt;br&gt;
Parent: governor set to Performance&lt;br&gt;
Grandparent: user started compiling kernel&lt;br&gt;
Great-grandparent: user typed "make -j8"&lt;/p&gt;

&lt;p&gt;This isn't just a stack trace. It's a causal narrative.&lt;/p&gt;

&lt;p&gt;The AI uses this to answer "why" questions. When you ask "why is the CPU hot?", it doesn't just say "because load is high". It says:&lt;/p&gt;

&lt;p&gt;Temperature rose because governor was set to Performance when you compiled the kernel, which spawned 8 threads that consumed 95% CPU for 4 minutes.&lt;/p&gt;

&lt;p&gt;That's the difference between logging and reasoning.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Cycle Detection — Breaking Circular Logic
&lt;/h2&gt;

&lt;p&gt;AI systems can fall into loops. A causes B, B causes C, C causes A.&lt;/p&gt;

&lt;p&gt;This is subtle. The AI might suggest lowering the governor to reduce temperature. But if the system is already thermal‑throttling, lowering the governor might increase compile time, which keeps the system hot longer.&lt;/p&gt;

&lt;p&gt;We built a cycle detector into the causal chain. When the AI proposes an action, it checks if that action would create a loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pseudo‑code:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;if detect_cycle(proposed_action) {&lt;br&gt;
    log_warning("causal cycle detected: A → B → C → A");&lt;br&gt;
    suggest_external_action();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;If a cycle is found, the AI reports it explicitly:&lt;/p&gt;

&lt;p&gt;Causal cycle detected: thermal_throttle → governor_change → cpu_load → thermal_throttle. I cannot resolve this internally. Suggest: active cooling or reducing workload.&lt;/p&gt;

&lt;p&gt;This forces the AI to stop spinning and ask for external help, rather than pretending it can solve the problem.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hallucination Detection — Cross‑Fact Consistency
The biggest risk of a kernel AI is hallucination. If it says "CPU is at 60°C" but it's actually 90°C, a human might trust it and not act. That's dangerous.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;IONA AI cross‑checks facts.&lt;/p&gt;

&lt;p&gt;When the AI says "CPU is over 80°C", it verifies the correlation with power draw (watts). If CPU temperature is high but power draw is low, the system knows something is inconsistent.&lt;/p&gt;

&lt;p&gt;Pseudo‑code:&lt;/p&gt;

&lt;p&gt;if cpu_temp &amp;gt; 80.0 &amp;amp;&amp;amp; watts &amp;lt; 20.0 {&lt;br&gt;
    // Hallucination: high temp with low power is impossible&lt;br&gt;
    log_anomaly("inconsistent_temp_watts");&lt;br&gt;
    override_response("I can't reliably state the temperature right now.");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This cross‑fact consistency prevents the AI from confidently stating false information. It doesn't just trust its own output — it verifies it against other system metrics.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Parliament — Consensus Before Action
The AI doesn't act alone. It has a governance system called the "parliament".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the AI wants to do something risky (change governor, kill a process, install a driver), it proposes the action to the parliament. The parliament votes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
Proposal: switch governor to Performance&lt;br&gt;
Votes: 3 for, 1 against&lt;br&gt;
Outcome: approved (quorum reached: 67%)&lt;/p&gt;

&lt;p&gt;Each vote is recorded, along with the reasoning. If the parliament reaches quorum (67% approval), the action is executed.&lt;/p&gt;

&lt;p&gt;But here's the important part: the outcome is persisted to long‑term memory. The AI remembers why the action was approved (or rejected) and uses that knowledge in future decisions.&lt;/p&gt;

&lt;p&gt;This prevents the AI from making the same mistake twice. It also provides an audit trail for every action taken by the AI.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adaptive Backoff — Don't Reason When the System is Dying
When the system is under heavy load, the AI stops doing expensive reasoning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If CPU usage exceeds 80%, the AI switches to a lightweight mode:&lt;/p&gt;

&lt;p&gt;if cpu_usage &amp;gt; 80.0 {&lt;br&gt;
    reasoning_depth = 1; // only basic responses&lt;br&gt;
} else {&lt;br&gt;
    reasoning_depth = 3; // deep chain‑of‑thought&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This ensures that the AI doesn't make the system worse by consuming resources it doesn't have. It's a mechanism of self‑preservation — not for the AI, but for the system it runs on.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Result
With these mechanisms, IONA AI is no longer a "chatbot". It's a rational agent that:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Builds causal narratives instead of just logging events.&lt;/p&gt;

&lt;p&gt;Detects and breaks circular reasoning.&lt;/p&gt;

&lt;p&gt;Cross‑checks facts to avoid hallucinations.&lt;/p&gt;

&lt;p&gt;Consults a governance system before taking risky actions.&lt;/p&gt;

&lt;p&gt;Adapts its reasoning depth based on system load.&lt;/p&gt;

&lt;p&gt;Building an AI that runs inside the kernel is hard. Building one that can be trusted — that doesn't hallucinate, doesn't spiral into circular reasoning, and doesn't crash the system — is even harder.&lt;/p&gt;

&lt;p&gt;But it's not impossible. The key is to design for rationality, not just intelligence. To build systems that verify their own outputs. To give them governance, not just freedom.&lt;/p&gt;

&lt;p&gt;IONA AI is still evolving. But with these five mechanisms, it's no longer just a "chatbot". It's a self‑correcting, causally aware, energy‑optimising agent that lives inside the operating system itself.&lt;/p&gt;

&lt;p&gt;The code is not yet fully public , but you can see the architecture on GitHub. &lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;https://iona.zone&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;https://github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Questions? Comments? I read every one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rust</category>
      <category>showdev</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Training LLMs in the kernel — how IONA AI does embedding, RAG, and fine‑tuning without the cloud</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Thu, 25 Jun 2026 17:55:59 +0000</pubDate>
      <link>https://dev.to/ionablokchain/training-llms-in-the-kernel-how-iona-ai-does-embedding-rag-and-fine-tuning-without-the-cloud-mc</link>
      <guid>https://dev.to/ionablokchain/training-llms-in-the-kernel-how-iona-ai-does-embedding-rag-and-fine-tuning-without-the-cloud-mc</guid>
      <description>&lt;p&gt;Most AI systems today are cloud‑based. You send a prompt to an API, and a model somewhere else generates a response. You don't control the model. You don't control the data. You don't control the infrastructure.&lt;/p&gt;

&lt;p&gt;IONA AI is the opposite.&lt;/p&gt;

&lt;p&gt;It runs inside the kernel of IONA OS. It reads CPU temperature, kills processes, changes governors, and synthesises drivers — all in real time, with zero latency. And it does all of this without ever sending a single byte to the cloud.&lt;/p&gt;

&lt;p&gt;This article explains how IONA AI handles embedding, RAG, and fine‑tuning — entirely locally, entirely in Rust, entirely in the kernel.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Embedding — Semantic Search Without the Cloud
&lt;/h2&gt;

&lt;p&gt;IONA AI uses a local embedding model to understand the meaning of text, not just the words.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;At boot, the system tries to load &lt;code&gt;/models/minilm-emb.bin&lt;/code&gt; — a MiniLM embedding model with 384 dimensions.&lt;/p&gt;

&lt;p&gt;If the file exists, the system uses it for real semantic search. If it doesn't, it falls back to a deterministic FNV‑1a hash (zero downtime, no crash).&lt;/p&gt;

&lt;h3&gt;
  
  
  Lookup and similarity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Each word is hashed using FNV‑1a for O(1) lookup.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;embed(text)&lt;/code&gt; → mean pool → L2 normalize → &lt;code&gt;Vec&amp;lt;f32&amp;gt;&lt;/code&gt; (384 dims).&lt;/li&gt;
&lt;li&gt;Cosine similarity between &lt;code&gt;"kernel panic"&lt;/code&gt; and &lt;code&gt;"system crash"&lt;/code&gt; is ~0.87 (real semantic understanding).&lt;/li&gt;
&lt;li&gt;With the old FNV fallback, the same strings had ~0.30 similarity (character‑based, not meaning‑based).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows IONA AI to search its memory semantically, not just by keyword.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. RAG — Retrieval‑Augmented Generation
&lt;/h2&gt;

&lt;p&gt;IONA AI uses RAG to give the LLM factual context before generating a response.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;User asks a question.&lt;/li&gt;
&lt;li&gt;The system computes an embedding for the query.&lt;/li&gt;
&lt;li&gt;It searches the knowledge graph and episodic memory using cosine similarity.&lt;/li&gt;
&lt;li&gt;The top‑matching facts are injected into the LLM prompt as context.&lt;/li&gt;
&lt;li&gt;The LLM generates a response grounded in real data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;If you ask: "What happened when I last compiled the kernel?"&lt;/p&gt;

&lt;p&gt;The RAG system finds the relevant episode from memory, embeds it, and injects it into the context. The LLM then responds with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You compiled the kernel 2 hours ago with &lt;code&gt;make -j8&lt;/code&gt;. Temperature rose to 89°C, and the governor switched to Performance."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not a guess. A retrieved fact.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. LLM Engine — Dynamic, Multi‑Architecture Support
&lt;/h2&gt;

&lt;p&gt;IONA AI doesn't hardcode a single model. It reads model metadata at runtime and adapts.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;llm.rs&lt;/code&gt; module reads these fields from a &lt;code&gt;.gguf&lt;/code&gt; file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama.embedding_length&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llama.feed_forward_length&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llama.block_count&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llama.attention.head_count&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then dynamically builds the network layers, supporting multiple architectures:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LLaMA&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mistral&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phi3&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Quantization
&lt;/h3&gt;

&lt;p&gt;The engine supports &lt;code&gt;Q4_K_M&lt;/code&gt; (the most widely used format) via &lt;code&gt;QuantTensor::from_gguf_q4k()&lt;/code&gt;. It can also be extended to &lt;code&gt;Q5_K_M&lt;/code&gt;, &lt;code&gt;Q6_K&lt;/code&gt;, and &lt;code&gt;Q8_0&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vocab size
&lt;/h3&gt;

&lt;p&gt;The engine uses the real vocabulary size (32,000 for most models), not a hardcoded 256. This means better tokenisation and more accurate generation.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Training and Fine‑Tuning — Local and Sovereign
&lt;/h2&gt;

&lt;p&gt;IONA AI can be fine‑tuned locally, without sending any data to the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data collection&lt;/strong&gt; — the system logs user interactions, system events, and corrections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training&lt;/strong&gt; — using the &lt;code&gt;learning_loop.rs&lt;/code&gt; module, the system periodically updates the model weights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine‑tuning&lt;/strong&gt; — using the &lt;code&gt;corpus.rs&lt;/code&gt; and &lt;code&gt;embedding_store.rs&lt;/code&gt; modules, the system can be fine‑tuned on custom datasets.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example fine‑tuning pipeline
&lt;/h3&gt;

&lt;p&gt;// conceptual code&lt;br&gt;
let data = load_custom_dataset("/var/ai/fine_tune_data.json");&lt;br&gt;
let model = load_model("/models/TinyLlama-1.1B-Chat-v1.0.Q4_K_M.gguf");&lt;br&gt;
let tuned_model = fine_tune(model, data, learning_rate=1e-5);&lt;br&gt;
save_model(tuned_model, "/models/iona-llm.gguf");&lt;/p&gt;

&lt;p&gt;This runs entirely in the kernel, on the device itself. No cloud. No API keys. No data leaks.&lt;/p&gt;

&lt;p&gt;Why This Matters&lt;br&gt;
Most AI systems are cloud‑dependent. That means:&lt;/p&gt;

&lt;p&gt;You don't control your data.&lt;/p&gt;

&lt;p&gt;You don't control the model.&lt;/p&gt;

&lt;p&gt;You don't control the infrastructure.&lt;/p&gt;

&lt;p&gt;If the API goes down, your system stops.&lt;/p&gt;

&lt;p&gt;IONA AI flips this model:&lt;/p&gt;

&lt;p&gt;You control the data — it never leaves the device.&lt;/p&gt;

&lt;p&gt;You control the model — you can fine‑tune it locally.&lt;/p&gt;

&lt;p&gt;You control the infrastructure — it runs in your kernel, on your hardware.&lt;/p&gt;

&lt;p&gt;No API dependency — if the internet goes down, the AI still works.&lt;/p&gt;

&lt;p&gt;This is what sovereign AI looks like.&lt;/p&gt;

&lt;p&gt;What's Next&lt;br&gt;
IONA AI is still evolving. The current version supports:&lt;/p&gt;

&lt;p&gt;Semantic search with MiniLM embeddings.&lt;/p&gt;

&lt;p&gt;RAG with episodic memory and knowledge graph.&lt;/p&gt;

&lt;p&gt;Dynamic LLM inference for LLaMA, Mistral, Phi3, and Gemma.&lt;/p&gt;

&lt;p&gt;Local fine‑tuning via learning_loop.rs.&lt;/p&gt;

&lt;p&gt;Future work includes:&lt;/p&gt;

&lt;p&gt;Support for larger models (3B, 7B, 8B).&lt;/p&gt;

&lt;p&gt;NPU acceleration (if available on the hardware).&lt;/p&gt;

&lt;p&gt;Continuous learning without forgetting.&lt;/p&gt;

&lt;p&gt;The Code&lt;br&gt;
All of this is written in Rust, running in the kernel of IONA OS.&lt;/p&gt;

&lt;p&gt;The embedding store, the RAG system, the LLM engine, and the fine‑tuning pipeline are all in the src/ai/ directory — 70,000+ lines of Rust AI.&lt;/p&gt;

&lt;p&gt;Website: iona.zone&lt;br&gt;
GitHub: github.com/Ionablokchain&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>rust</category>
    </item>
    <item>
      <title>Five features that turn an OS into a trust platform: Panic, Dead Man’s Switch, E2E messenger, Vault UI, and Secure Boot attestation in IONA OS</title>
      <dc:creator>Eric-Octavian </dc:creator>
      <pubDate>Tue, 23 Jun 2026 17:48:49 +0000</pubDate>
      <link>https://dev.to/ionablokchain/five-features-that-turn-an-os-into-a-trust-platform-panic-dead-mans-switch-e2e-messenger-vault-2npn</link>
      <guid>https://dev.to/ionablokchain/five-features-that-turn-an-os-into-a-trust-platform-panic-dead-mans-switch-e2e-messenger-vault-2npn</guid>
      <description>&lt;p&gt;An operating system should not just execute programs. It should protect the person using it.&lt;/p&gt;

&lt;p&gt;Most operating systems were built for a world where threats were predictable. That world no longer exists. Today, a device can be confiscated at a border, compromised by malware, or used to surveil the person carrying it.&lt;/p&gt;

&lt;p&gt;IONA OS is an operating system written from scratch in Rust. It has its own kernel, its own GUI, its own blockchain protocol, and its own kernel-integrated AI. But beyond the technology, it's designed around a single principle: &lt;strong&gt;trust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This week, I implemented five features that turn IONA OS from a kernel into a trust platform.&lt;/p&gt;

&lt;p&gt;Here they are.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Panic Shortcut — One Key Combination to Disappear
&lt;/h2&gt;

&lt;p&gt;When you are in a situation where you need to protect your data instantly, you don't have time to navigate menus or click buttons.&lt;/p&gt;

&lt;p&gt;IONA OS now has a global panic shortcut: &lt;code&gt;Ctrl+Alt+Delete&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Pressing it triggers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ghost Mode&lt;/strong&gt; — the system becomes unresponsive to external input, hides all active sessions, and presents a clean, locked screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network Isolate&lt;/strong&gt; — all network interfaces are immediately disconnected. No packets leave the device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This works from &lt;strong&gt;any context&lt;/strong&gt; — even from the lock screen. Even if the device is partially locked or the UI is frozen.&lt;/p&gt;

&lt;p&gt;If your device is confiscated at a border, or if you feel threatened, one key combination is all you need.&lt;/p&gt;

&lt;p&gt;No UI. No delay. No questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Real E2E Messenger — Not a Simulated Chat
&lt;/h2&gt;

&lt;p&gt;Most "secure messengers" on operating systems are just UI wrappers around existing libraries. IONA OS now has a real messenger backend.&lt;/p&gt;

&lt;p&gt;The UI in &lt;code&gt;phone/messenger.rs&lt;/code&gt; is now connected to &lt;code&gt;crate::net::messenger&lt;/code&gt;, which implements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Double Ratchet&lt;/strong&gt; — the same protocol used by Signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noise_XX&lt;/strong&gt; — a modern, authenticated key exchange.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Messages sent from the IONA OS messenger are &lt;strong&gt;real E2E encrypted&lt;/strong&gt;, not simulated. No plaintext touches the network. No metadata leakage.&lt;/p&gt;

&lt;p&gt;This is not a feature that will be added later. It is already working.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Dead Man's Switch — Auto‑Isolate If You Don't Check In
&lt;/h2&gt;

&lt;p&gt;This feature is for people who are at risk of having their device seized while the system is active.&lt;/p&gt;

&lt;p&gt;IONA OS now has a Dead Man's Switch.&lt;/p&gt;

&lt;p&gt;The system expects a periodic "check‑in" — a simple signal that the user is still in control. The interval is configurable (default: X minutes).&lt;/p&gt;

&lt;p&gt;If the system does not receive the check-in within the configured window, it executes a predefined action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Network Isolate&lt;/strong&gt; — cut all network connections immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Wipe&lt;/strong&gt; — erase all user data (if configured).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a theoretical feature. It is implemented. It works from the lock screen. It works even if the UI is not responding.&lt;/p&gt;

&lt;p&gt;This is for journalists, activists, and anyone who carries sensitive data through hostile environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Encrypted File Vault UI — Manage Keys from the GUI
&lt;/h2&gt;

&lt;p&gt;IONA OS has had a &lt;code&gt;keystore&lt;/code&gt; module (&lt;code&gt;crate::security::keystore&lt;/code&gt;) for a while. But until now, it was only accessible via API.&lt;/p&gt;

&lt;p&gt;Now there is a UI.&lt;/p&gt;

&lt;p&gt;The Encrypted File Vault is accessible from the Settings screen. It allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View your current encryption keys.&lt;/li&gt;
&lt;li&gt;Add or remove keys.&lt;/li&gt;
&lt;li&gt;Encrypt files directly from the file manager.&lt;/li&gt;
&lt;li&gt;Decrypt files with a single click.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This brings the power of IONA's cryptographic stack to the user — without requiring the command line.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Secure Boot Attestation — See If Your Kernel Is Tampered
&lt;/h2&gt;

&lt;p&gt;At boot, IONA OS now displays a screen that shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The cryptographic hash of the kernel.&lt;/li&gt;
&lt;li&gt;The verification status: &lt;strong&gt;VERIFIED&lt;/strong&gt; or &lt;strong&gt;TAMPERED&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The signature is checked using &lt;strong&gt;Dilithium3&lt;/strong&gt;, a post‑quantum signature scheme.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a hidden check. It is displayed to the user at boot time, before the system loads.&lt;/p&gt;

&lt;p&gt;If the kernel is signed correctly, the user sees a green indicator. If not, the system displays a warning and offers recovery options.&lt;/p&gt;

&lt;p&gt;This builds trust from the very first second of operation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why These Five Features Matter
&lt;/h2&gt;

&lt;p&gt;These features are not isolated additions. They form a cohesive security model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Panic Shortcut&lt;/strong&gt; gives you an escape route when you are under threat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dead Man's Switch&lt;/strong&gt; protects you when you are not present.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E2E Messenger&lt;/strong&gt; protects your communication at rest and in transit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Vault UI&lt;/strong&gt; makes encryption accessible to everyone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Boot Attestation&lt;/strong&gt; ensures you know the system is trustworthy before you use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these features are "future plans". They are all implemented and working in the current version of IONA OS.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Means for the User
&lt;/h2&gt;

&lt;p&gt;IONA OS is not just an operating system. It is a platform for trust.&lt;/p&gt;

&lt;p&gt;If you are a journalist, you can use it knowing that you have a panic button, a dead man's switch, and real E2E messaging.&lt;/p&gt;

&lt;p&gt;If you are an activist, you can use it knowing that your files are encrypted and that the system will isolate itself if you are absent.&lt;/p&gt;

&lt;p&gt;If you are a developer, you can use it knowing that the kernel is verified at boot and that the cryptographic stack is exposed through a clean UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;All of these features are written in Rust, running in the kernel or in the phone UI layer.&lt;/p&gt;

&lt;p&gt;The messenger backend uses Double Ratchet and Noise_XX.&lt;/p&gt;

&lt;p&gt;The Secure Boot attestation uses Dilithium3 from &lt;code&gt;crate::security&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The File Vault UI is built on top of &lt;code&gt;crate::security::keystore&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The Panic Shortcut is a global key handler, active even from the lock screen.&lt;/p&gt;

&lt;p&gt;The Dead Man's Switch is a background task that triggers network isolation or full wipe when the check‑in is not received.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;IONA OS launches on September 15, 2026.&lt;/p&gt;

&lt;p&gt;The full codebase (v965+) is not yet fully public — what you see on GitHub is a curated snapshot — but the architecture is visible and the project is on track.&lt;/p&gt;

&lt;p&gt;If you are interested in security, trust, or building an operating system from scratch, I would love to hear your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://iona.zone" rel="noopener noreferrer"&gt;iona.zone&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Ionablokchain" rel="noopener noreferrer"&gt;github.com/Ionablokchain&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building this alone. 13 years of research. Every line is written from scratch. And it works.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>rust</category>
      <category>security</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
