Veda: Het Agentic-Native Besturingssysteem
Alles is vanaf nul geschreven in Rust en bevindt zich in deze repository: de UEFI-bootloader, een capability-based microkernel, de drivers, de systeemdiensten, het venstersysteem, de toolkit en de applicaties. Een aantal volwassen crates verzorgt de TCP/IP-engine, TLS en cryptografie (smoltcp, rustls, RustCrypto). Veda draait op x86-64 PC's en in QEMU.
Waarom agentic-native?
Besturingssystemen zijn ontworpen voor een persoon achter een toetsenbord. Een assistent die later wordt toegevoegd, moet meestal het scherm lezen, klikken imiteren of genoegen nemen met de weinige applicaties die een API bieden, waarbij het systeem zelf geen controle heeft over wat er gebeurt. Veda draait dit om: de agent is een eersteklas gebruiker van het systeem, en het systeem is zo gebouwd dat het werk van de agent betrouwbaar, zichtbaar en veilig is.
Integratie van de agent
De agent is onderdeel van het systeem. Het is een systeemdienst die start bij het opstarten en herstart als hij vastloopt. De agent is zichtbaar als een kleine ring op de taakbalk en blijft in slaapstand tot je hem oproept via zijn naam, door op de ring te klikken of met Super+Spatie.
Native applicatie-ondersteuning
Elke applicatie communiceert native met de agent. Agent-ondersteuning is onderdeel van het applicatieplatform: een applicatie beschrijft zijn acties (met getypeerde parameters en een risiconiveau), rapporteert de huidige status als gestructureerde data en voert acties uit via dezelfde code als het toetsenbord en de muis. Hierdoor toont het venster het resultaat precies zo alsof de gebruiker het zelf had gedaan, zonder screen scraping of gesimuleerde klikken. De ingebouwde applicaties bieden gezamenlijk meer dan 70 acties, van het schrijven in een document tot het starten van een race.
Toestemming en veiligheid
Het systeem dwingt de toestemming van de gebruiker af. Elke actie wordt geclassificeerd als routine, gevoelig of destructief:
- Routine-acties: Worden direct uitgevoerd.
- Gevoelige en destructieve acties: Wachten op goedkeuring.
De agent-dienst handhaaft dit, niet het taalmodel. De aanroep wordt vastgehouden tot de gebruiker antwoordt; alleen de desktop-shell kan dit antwoord geven. Het systeem herkent elk programma via de identiteit die init aan de verbindingen koppelt. Niets wat de agent in een document of applicatie leest, kan toestemming verlenen voor een actie.
Context en Geheugen
De agent werkt vanuit echte context. Elk gesprek begint met de informatie die de agent nodig heeft om te helpen: de tijd, de openstaande vensters op het scherm, de acties van elke applicatie, persoonlijke voorkeuren en de uitkomst van het vorige gesprek. Tijdens het werk leest de agent de status van applicaties om acties te baseren op de actuele situatie.
Het geheugen blijft van de gebruiker. Veda onthoudt alleen wat expliciet wordt verteld (bijvoorbeeld naam of voorkeuren) en doet geen eigen aannames. Dit geheugen wordt lokaal op de computer bewaard; in de Instellingen kan dit geheugen worden ingezien of gewist.
Spraakgestuurd
Conversaties vinden in real-time plaats; als je de agent onderbreekt, stopt hij en luistert hij. Het audiosysteem is hiervoor specifiek gebouwd met echo-annulering en een echo-gate, zodat de agent zichzelf niet hoort. Terwijl de agent slaapt, luistert een voice-detector op de computer naar spraak, zodat er niets de computer verlaat zolang er niet wordt gesproken.
Configuratie van intelligentie
De intelligentie is een instelling. Spraakherkenning, het taalmodel en de stem komen van het Voice Agent-platform van Deepgram. De audio is geopt-out voor modelverbetering door Deepgram. Het model, de stem en zelfs de naam van de agent kunnen worden gekozen in de Instellingen.
Hoe de agent werkt
De architectuur is als volgt opgebouwd:
- Gebruiker: Interactie via spraak, toetsenbord en muis.
- Agent Service: Beheert conversaties (Deepgram Voice Agent), de naam-listener, het geheugen en de worker voor functies en toestemming.
- Desktop Shell: Beheert de ring, het venster van de agent, toestemmingsverzoeken en notificaties.
- Applicaties: Bieden acties, status en invoke-mogelijkheden via het
agentapp-protocol. - Services: Beheren vensters, bestanden, audio, netwerk, Wi-Fi en de launcher.
- vkernel: Beheert capabilities, IPC, isolatie en scheduling.
Het proces
- Luisteren: In slaapstand draait de agent een voice-detector. Wanneer iemand spreekt, gaat de spraak naar een herkenner die de naam van de agent herkent. Een zin die de agent aanroept ("Hé Veda, ...") wekt hem.
- Conversatie: Het ontwaken opent een Deepgram Voice Agent-sessie met instructies, context en functies. Deepgram regelt de beurtwisseling, het taalmodel en de stem; de audio-service van Veda transporteert het geluid.
- Actie: Het model roept functies van de agent aan (vensters, bestanden, volume, Wi-Fi, etc.) en via
useappenreadappde acties en status van applicaties. - Toestemming: Aanvragen die goedkeuring behoeven, worden getoond in het venster van de agent of als notificatie. De gebruiker kan de actie toestaan, weigeren of laten verlopen. Gevoelige acties kunnen permanent worden goedgekeurd; destructieve acties worden altijd opnieuw gevraagd.
Het besturingssysteem
Microkernel (vkernel)
vkernel richt zich uitsluitend op isolatie, scheduling, geheugen en IPC (Inter-Process Communication). Het maakt gebruik van capability handles met rechten, kanalen voor handles, VMO's, events, futexes en interrupt-objecten. Het ondersteunt SMP met x2APIC, tickless timers en XSAVE. Drivers, het bestandssysteem, het venstersysteem en de agent zijn user-space processen die worden gesuperviseerd door init. Als het venstersysteem crasht, wordt het automatisch herstart.
Desktop
De desktop start met een splash-screen die overgaat in de desktopomgeving. Het systeem bevat:
- Een compositing window manager met server-side decoraties, schaduwen, animaties, window snapping en een Alt+Tab-switcher met live thumbnails. Rendering gebeurt op de GPU met OpenGL ES (op Intel graphics) of op de processor.
- Een shell met wallpaper, desktop-pictogrammen (waaronder de Prullenbak), een taakbalk, een doorzoekbaar startmenu, een kalender en notificaties.
- De
vuitoolkit (widgets, menu's, dialogen, vector-iconen, anti-aliased tekst met de lettertypen Inter en JetBrains Mono), waarvan de applicaties agent-compatibel zijn.
Netwerken en Wi-Fi
Er is een user-space netwerkdienst (IPv4/IPv6, DHCP, DNS, routing, TCP, UDP, ICMP) en een Wi-Fi-dienst die scans uitvoert en verbinding maakt met WPA2, WPA3 en open netwerken. De drivers (Linux-drivers in de driver VM) verplaatsen enkel frames. Applicaties krijgen TLS 1.3 en 1.2 via vtls, waarbij certificaten worden gecontroleerd tegen de Mozilla-roots.
Audio
Een mixende audioservice met echo-geannuleerde capture en ducking, specifiek gebouwd voor conversaties met de agent en muziek.
Driver VM
Veda beheert disks en geluid zelf, maar gebruikt voor de rest een virtuele machine (de driver VM) waarin Linux draait op een eigen hypervisor (VMX met EPT). Apparaten worden volledig aan deze VM toegewezen; DMA is beperkt tot het geheugen van de VM en interrupts worden hersteld door de IOMMU-driver van Veda. Programma's in de VM bereiken Veda's services via systeemoproepen. Wanneer de VM faalt, reset Veda de apparaten en start de VM opnieuw.
Opslag
Veda gebruikt virtio-blk, AHCI (SATA) en NVMe drivers. Een bestandssysteem-service houdt de home-directory op een eigen disk met crash-safe snapshots. Het geheugen en de sleutels van de agent bevinden zich in een private directory die alleen door de agent geopend kan worden.
Applicaties
De standaard applicaties zijn: Text Editor, Photos, Music, Files, Terminal, Task Manager, Settings en About, plus twee 3D-games: Velocity (racing) en Starfall (space shooter).
3D-graphics
Ondersteuning voor OpenGL ES 3.0 met GLSL ES 1.00 en 3.00. Rendering vindt plaats via de GPU in de driver VM (via Mesa/Intel iris of virgl in QEMU) of via een multi-threaded software renderer.
C en GCC in Veda
Het is mogelijk om C-programma's te schrijven en te compileren binnen Veda met GCC 16. C-programma's zijn statische ELF-executables op de musl C-bibliotheek. Systeemoproepen gaan naar vposix, een in Rust geschreven POSIX-laag.
Snelstart
Vereisten
- x64 PC met Linux.
- Rust (stable).
- QEMU en OVMF UEFI firmware.
- Toegang tot
/dev/kvm. - Voor de agent: een Deepgram API-sleutel.
- Voor de driver VM: Linux kernel build tools, cross-compiler en Mesa, plus KVM nested virtualization (
kvm_intel nested=1).
Omgeving controleren: cargo xtask doctor
Bouwen en Uitvoeren
cargo xtask run Dit bouwt alle componenten, schrijft het disk-image (target/veda/veda.img) en start dit in QEMU.
Handige opties:
cargo xtask run --resolution 1920x1080 --smp 4 --memory 2048cargo xtask run --cmdline "run=editor"(start de editor na boot).cargo xtask run --net wifi(start met gesimuleerde Wi-Fi via airsim).
Installatie op een echte PC via USB
cargo xtask iso schrijft een live-systeem naar target/veda/veda.iso. Deze kan met Rufus (GPT, UEFI, ISO-modus) op een USB-stick worden gezet. Start de PC in UEFI-modus met Secure Boot uitgeschakeld. Veda draait vanuit het geheugen en schrijft niet naar de lokale disks.
Interactie met Veda
Praten met Veda
Voeg de Deepgram API-sleutel toe via Settings → Agent. Roep Veda op door "Hé Veda" te zeggen, op de ring in de taakbalk te klikken of Super+Spatie te drukken.
Voorbeelden van opdrachten:
- "Verander mijn achtergrond naar de duinen."
- "Speel Neon Horizon."
- "Schrijf een boodschappenlijst met eieren, melk en koffie."
- "Toon de foto van de vuurtoren op volledig scherm."
- "Herinner me er over twintig minuten aan om te stretchen."
- "Welk programma gebruikt de meeste geheugen?"
- "Start een race in Velocity."
- "Verwijder de foto City Lights" (waarna Veda om bevestiging zal vragen).
- "Wat weet je over mij?"
Gebruik van de Desktop
- Startmenu: Klik op het logo (de ring) of gebruik de
Super-toets. - Taakbalk: Klik op knoppen om applicaties te openen of te minimaliseren; middenklik opent een nieuw venster.
- Bestanden: Verwijderde items gaan naar de Prullenbak. Gebruik
Ctrl+Zom items te herstellen ofShift+Deletevoor definitieve verwijdering. - Vensterbeheer: Sleep een venster naar boven voor maximaal scherm, of naar de zijkant voor half scherm (
Super+Pijltjestoetsen).Super+Dtoont het bureaublad,Alt+Tabwisselt tussen vensters enAlt+F4sluit het actieve venster.
Applicaties Overzicht
| Applicatie | Functionaliteit | Mogelijkheden van de Agent |
|---|---|---|
| Text Editor | Tabs, syntax highlighting, zoeken/vervangen, onbeperkte undo. | Documenten maken, openen, lezen, schrijven, zoeken, opslaan. |
| Photos | Bibliotheek van ~/Pictures, viewer met zoom, rotatie en diavoorstellingen. | Foto's tonen, zoomen, roteren, diavoorstelling starten, achtergrond instellen. |
| Music | Bibliotheek van ~/Music, spectrum visualisator, shuffle en repeat. | Nummers afspelen via naam, pauzeren, stoppen, skippen, volume aanpassen. |
| Files | Bestandsexplorer met thumbnails, zoeken, kopiëren/plakken, Prullenbak. | Mappen/bestanden openen, zoeken, eigenschappen tonen, verplaatsen, verwijderen. |
| Terminal | Shell met ~50 commando's, ondersteuning voor C-programma's en pipes. | Commando's uitvoeren (na goedkeuring), output lezen, processen onderbreken. |
| Task Manager | CPU/geheugengebruik per proces, prestatiegrafieken, "eindig taak". | Processen oplijsten, grafieken lezen, programma's beëindigen. |
| Settings | Wallpaper, Agent-configuratie, Netwerk/Wi-Fi, Systeemdetails. | Pagina's openen, stem/snelheid/taalmodel van de agent wijzigen. |
| Velocity | 3D arcade racing game op procedurele circuits. | Race starten, pauzeren, hervatten of herstarten; track en tegenstanders wijzigen. |
| Starfall | 3D space shooter door asteroïdevelden. | Game starten, pauzeren, hervatten of herstarten. |
Agent-compatibele applicaties bouwen
Agent-ondersteuning is onderdeel van het vui applicatieplatform. Een applicatie beschrijft wat hij kan doen, rapporteert de status en voert acties uit.
use vui::agent::{self, Action, AppAgentInfo, Risk, Value, arg_path, arg_str, object, show_path};
impl vui::App for Notes {
fn update(&mut self, ui: &mut vui::Ui) { /* ... */ }
fn agent_info(&self) -> Option<AppAgentInfo> {
Some(agent::info(
"A notes app: one note per file in ~/Notes.",
vec![
Action::new("add_line", "Adds a line at the end of the note shown")
.param("text", "string", "The line", true)
.build(),
Action::new("delete_note", "Deletes a note for good")
.param("path", "string", "The note's file, such as ~/Notes/Ideas.txt", true)
.risk(Risk::Destructive)
.build(),
],
))
}
fn agent_state(&self) -> Value {
object! { "note" => self.title.as_str(), "lines" => self.lines.len() }
}
fn agent_invoke(&mut self, action: &str, args: &Value) -> Result<Value, String> {
match action {
"add_line" => {
self.append(arg_str(args, "text")?);
Ok(object! { "lines" => self.lines.len() })
},
"delete_note" => {
let path = arg_path(args, "path")?;
self.delete(&path).map_err(|e| format!("{} could not be deleted: {e}", show_path(&path)))?;
Ok(object! { "deleted" => show_path(&path) })
},
other => Err(format!("Notes has no action called {other}")),
}
}
}
Acties zijn geschreven voor een taalmodel (korte imperatieve beschrijvingen) en verklaren hun eigen risico. De toestemming, het geheugen en de conversatie worden afgehandeld door het systeem, niet door de applicatie zelf.
Repository-indeling
| Pad | Inhoud |
|---|---|
services/agent/ | De agent: conversaties, naam-listener, functies, toestemming, geheugen. |
lib/agent/ | Logica van de agent: Deepgram-protocol, instructies, wake word, echo-gate. |
boot/ | vboot, de UEFI-bootloader. |
kernel/ | vkernel, de microkernel. |
lib/ | Gedeelde bibliotheken: ABI, runtime, POSIX-laag, ELF, IPC, graphics, netwerk, audio, etc. |
services/ | init, vfs, devmgr, compositor, audio, agent, netd, wlan, drivervm. |
drivers/ | Eigen drivers: virtio-blk, ahci, nvme. Overige drivers bevinden zich in de driver VM. |
apps/ | Desktop shell en applicaties, inclusief Velocity en Starfall. |
ports/ | C-toolchain (GCC, binutils, musl) en de Linux-kernel voor de driver VM. |
guest/ | Linux-programma's voor de driver VM: init, drivers, renderer, logkeeper. |
tests/ | Agent-scripts, systest, nettest, C/C++ testprogramma's, GUI-automatisering. |
tools/ | Host-programma's voor wallpapers, sample-content en airsim. |
third_party/ | Vendored crates met Veda-patches (bijv. smoltcp). |
xtask/ | Bouwsysteem: cross-compilatie, disk-image, QEMU en automatisering. |
Licentie
Copyright © 2026 Vahid Mohammadi. Veda is vrije software: het kan worden herdistribueerd en/of gewijzigd onder de voorwaarden van de GNU General Public License, versie 3.
Groetjes,