A Clean kiegészítő könyvtárának, az Object I/O library-nek a segítségével programjainkat felhasználói felülettel (UI) láthatjuk el. Ebbe tartoznak az ablakok és a dialógusok, valamint a különféle vezérlők. Továbbá ide sorolhatóak a menük, időzítők, és különféle üzenetküldő és -fogadó objektumok. Új lehetőség az interaktív processzek indítása/leállítása, azaz a fő program kisebb részekre való bontása. Lehetőség van a vágólap (Clipboard) használatára is, valamint az Object I/O library-t használó programok képesek TCP kapcsolatok lebonyolítására is.
A következő interaktív objektumok léteznek az Object I/O könyvtárban (ezek az építőkövek):
Ezeket a vezérlőket az algebrai adattípusoknak megfelelően lehet definiálni, például ha egy "Button" feliratú nyomógombot akarunk definiálni, akkor azt a következőképp tehetjük meg:
A "Button" az osztály konstruktorának paramétere, a vezérlő attribútumok üres halmazát pedig a [] üres lista adja meg.
Az alábbi program megjelenít egy ablakot, amiben a "Hello World" felirat látható:
A startIO Void típusa azt adja meg, hogy a programnak nincs számunkra érdekes lokális állapota. A dialógusablaknak egy attribútuma van, egy callback függvény, amit abban az esetben kell használni, amikor a felhasználó be akarja csukni az ablakot. Ekkor csupán a "Hello World!" programot kell bezárni, éppen ezért elég a closeProcess is.