Skip to content
k-hole

An AI development workstation · Arch + CachyOS

Describe it. Your desktop builds it.

k-hole turns a fresh Arch or CachyOS install into a fast place to write software with AI. Connect your own model, say what you want in plain words, and it becomes a widget, a panel or a workflow, built in a sandbox and shown to you before it runs.

The k-hole desktop: the date, a Make something card, system status, pinned apps, a search pill and the dock, under a frosted top bar.
Make something sandboxed

Example requests: GPU temperature in the bar, amber above 80°C. Uptime of my three client sites, one dot per minute. What my API keys cost today, in the top bar. A notes panel I can tick off with Enter.

x86-64-v3CachyOS package builds and the BORE kernel
1 framedrawn by the whole desktop in 65 s at rest (the clock's minute tick)
0.16 msmedian time to block an ad or tracker lookup
Any snapshotbootable from the boot menu, with btrfs and snapper

A tour of the desktop

Quiet Glass, all the way down.

Every screen below is the real shell, captured by its own smoke test in a headless session at 1600 by 1000. As you scroll, the view moves to the part that matters; select a screenshot to see all of it.

01

Home is the desktop itself.

One centred column on any empty Space: the date, Make something, one line of system health, your pinned apps and a search pill. At rest the whole shell draws nothing.

SuperSpacesearch
Home: Saturday 26 September, the Make something and System cards, three pinned apps and the dock.
02

Say what you want.

Describe a widget, panel, command or service. Your model writes it, and genui runs it once with the network off inside bubblewrap, then loads its QML headlessly in a second sandbox before you see it.

SuperGwidget · panel · command · service
The Make something dialog: a request for GPU temperature and fan speed in the bar, a Kind picker and a Build it button.
03

You approve what it may touch.

Reads, writes, network, D-Bus and the router each appear by name. Nothing runs with those permissions until you approve them, and an update that asks for more stops until you say yes again.

Approve and turn onCancel
An approval sheet: Allow Bar clock to, nothing special, it asks for no permissions, with Cancel and Approve and turn on.
04

Let the machine notice things.

The Library holds 24 ready-made workflows and loops and 12 genui plugins. Workflows run when something happens: the charger comes out, you join a metered network, a Space changes, a USB board is plugged in. Loops always stop, at a run limit or a spending cap.

SuperO19 workflows5 loops12 plugins
The Library on its Workflows tab: Grid back, Grid-down mode, Quiet hours and Describe this screen, each with its trigger, its permissions and an Install button.
05

Every workflow is yours to edit.

Drag steps by their grip, add them from the palette, set the trigger, inputs and permissions. "Match the steps" fills the permissions in for you. Your copy saves to your own folder and replaces the Library's.

CtrlSCtrlZ
The workflow editor on Grid-down mode: five steps (power saver, blur off, motion off, unload models, save terminals), the step inspector and a palette of step types.
06

Quick settings, one key away.

Volume and the output device, brightness for every screen, the keyboard light, Wi-Fi, Bluetooth, Do Not Disturb, the microphone, airplane mode, the power mode and the ad blocker. Tiles appear for the hardware you have; Tab walks them and Esc closes.

SuperA
Quick settings under the top bar: Do not disturb, Ad blocker until 16:36, and a Saver or Balanced power switch.
07

Notifications that stay quiet.

The shell is the notification server: toasts under the bar, a history behind the bell, and Do Not Disturb with a VIP list of apps or words that still get through.

SuperShiftNVIP list
The notification history: a finished tea timer, a Firefox download, 12 updates ready, and a Grid-down mode run, with Do not disturb and Clear all.
08

Find anything, or ask for a timer.

Search ranks apps by how often you open them and also finds open windows, Settings pages and actions. It does maths, and timer 25m tea or alarm 7:30 sets one. Spaces and Alt+Tab remember the order you used things.

SuperSpaceSuperTabAltTab
Search: a field for apps, windows, settings and sums, pinned apps and all apps.
09

Hold Super+H and say it.

jev writes down what you said with whisper.cpp or your router, works the desktop through your models and answers out loud. It asks before anything risky, stops at 12 steps or $0.10 per request by default, and Esc or the word "stop" ends it at once.

SuperHno wake word

In this capture a stand-in answered instead of a real model.

The voice card above the dock: Done, how do I get a closed terminal back, Press Super+Shift+T.
10

Pages behind Home, notes on them.

Desktop 1 is your Desktop folder; more pages are folders inside it, and an empty one goes away when you leave. Sticky notes come in five colours, with undo and a reminder bell.

SuperCtrl←→SuperCtrlN
Desktop 1 with folder and file icons and two sticky notes, a standup list and a ship list.
11

No ads in any app.

Every app's DNS goes through a local blocker with HaGeZi's lists; everything else leaves encrypted to Quad9, then Cloudflare. Pause it, sign in to a café Wi-Fi, or allow one site in a click. If the blocker stops, DNS falls back to your network by itself.

Light · Normal · Pro · Pro++ · Ultimate
Settings, Privacy: ads and trackers are blocked for every app, pause buttons, a domain tester, your allow and block lists, and blocklist strength.
12

Your disk, back from node_modules.

Developer storage finds the folders a tool can rebuild (node_modules, virtualenvs, build output) and shows what removing them really frees. It never touches files tracked by git. pnpm, Bun and uv keep one copy of each package for every project.

khole-clean30+ days untouched
Settings, Developer storage: 1.3 GB in project debris and package caches, a project row, and npm, uv, pip and Go caches with Prune buttons.
13

Sound themes made for it.

Four themes to choose from, Quiet Glass, Air, Arc and Bloom, each with 37 short cues for notifications, the charger, USB, screenshots, voice control and your timers, plus a startup chime once the desktop is ready. Do Not Disturb keeps them quiet except for what needs you.

Quiet Glass · Air · Arc · BloomFull chime · Short · Off
Settings, Sound: volume, system sounds on, sound volume, the four sound themes (Quiet Glass in use, Air, Arc, Bloom) with play buttons, and the startup sound choice.
14

Your desktop, on your phone.

RDP, k-hole's own browser app, RustDesk, Moonlight or VNC, reachable over Tailscale only unless you allow your network. During a stream, a control bar gives you touch, right-click, drag, zoom, modifier keys and a keyboard.

Tailscale onlyPIN pairing
Home with the stream control bar on the right edge: Touch, Right-click, Drag, a scroll strip, zoom, a keyboard and Ctrl, Alt, Super, Shift, Esc, Tab and arrow keys.
15

Every Fn key does its job.

Volume in 5% steps (Shift goes to 150%), brightness on every screen, external monitors over DDC/CI, the display key, airplane mode, the touchpad key. Each shows a small indicator, and they keep working while the shell is down.

khole-keys
Home with the brightness indicator at 70 percent above the dock.

Three ways in

Start small. Grow into full.

Each tier is a set of plain package lists you can read. Pick one when you install; the Software app adds anything else later.

Lite

--tier lite

Headless: servers, VMs, a spare box you reach over SSH or Tailscale.

  • zsh, starship, atuin, ripgrep, eza, neovim, lazygit
  • Python with uv, Node with pnpm and Bun, Go, Rust, mise, direnv
  • Ollama built for your GPU, AI coding CLIs, genui
  • btrfs snapshots, zram, Tailscale, ufw
uvpnpmmisesnappertailscale

Standard

the default

The Quiet Glass desktop and everything in Lite.

  • Hyprland with the Quickshell shell, greetd
  • Ghostty, Zed, VS Code, Firefox, Thunar, PipeWire
  • Rootless podman, buildah, distrobox
  • The ad and tracker blocker
hyprlandquickshellghosttyzedpodman

Full

--tier full

Infrastructure, data and GPU work.

  • Docker, kubectl, k9s, helm, kind, OpenTofu, Terraform, Ansible
  • JupyterLab, PostgreSQL, Valkey, DBeaver
  • AWS, Azure and Google Cloud CLIs; perf, valgrind, bpftrace
  • Nix and devbox, llama.cpp, PyTorch, LM Studio, Sunshine
dockerkubectlpostgresqlnixllama.cpp

Install

Boot it live, then install.

The ISO is the real desktop. Try it, then press Install k-hole: btrfs with bootable snapshots, optional disk encryption, about ten minutes and no internet needed.

Build the ISO

On any Linux with Docker or Podman: about 15 GB free and 30 to 50 minutes.

$ git clone https://github.com/ka2ny/k-flow-os k-hole
$ cd k-hole
$ scripts/build-iso-docker.sh   # the ISO lands in ./out

In a VM, scripts/khole-vm out/khole-*.iso sets up UEFI, virtio and 3D for you.

On an Arch or CachyOS you already have

Keeps your install and adds k-hole on top, as a pacman package.

$ git clone https://github.com/ka2ny/k-flow-os k-hole
$ cd k-hole
$ ./install.sh --tier standard

Add --dry-run to see every step and command first.

Private development k-hole isn't public yet, and the repository is private. Download links will be here with the first public release.