The short version
- Krova makes no network calls.
- There are no accounts and no telemetry.
- Window titles are never logged or stored, and Krova does not record what you type.
- Your settings and layouts stay in one local JSON file that you can read, copy or delete.
- Which window is in which zone is kept in memory only, and is gone when you quit Krova.
What Krova does on the network
Nothing. The app makes no network calls at all: no sign-in, no usage statistics, no crash reports, no update pings. Because it never connects out, there is no server on the other side that could receive your data.
You do not have to take our word for it. The source code is open under the MIT License, and you can watch Krova with your operating system’s network monitor or block it in your firewall. It should behave exactly the same.
Two things sit outside Krova’s own code. The Windows installer downloads Microsoft’s WebView2 runtime if it is not already installed on your computer. And the web view that draws Krova’s window (WebView2 on Windows, WebKit on macOS) and the operating system’s own crash reporting are separate system components that Krova does not control.
What is stored on your computer
Krova keeps your settings and layouts in one file, config.json, in your user account’s
application-data folder (typically %APPDATA%\dev.krova.desktop on Windows and
~/Library/Application Support/dev.krova.desktop on macOS). It contains:
- Settings: the activation key, highlight color and opacity, animated or instant moves, edge snapping on or off and its size, launch at login, enabled or disabled, theme, whether the keyboard shortcuts are on and which modifier keys they use, whether windows are restored on reconnect, whether dividers are linked, and the space between zones.
- Per-monitor data: for each monitor, an identifier, a label, its layouts (zones saved as proportions of the screen) and which layout is active.
To recognise a monitor when you plug it back in, Krova stores what the operating system reports about it: the
manufacturer and product codes, the device path (which includes an identifier for the port it is plugged
into), and the monitor’s last size and position. On macOS this also includes the display’s serial number
where the display reports one; on Windows Krova does not store a serial number. These are what let Krova bring
a layout back for the same monitor. They stay in this file on your machine. If you ever share your
config.json, for example in a bug report, remove those identifiers first if you would rather not
share them.
The file is written safely (to a temporary file, then renamed), so a temporary config.json.tmp
can exist for a moment. If the file ever turns out to be unreadable, Krova renames it to
config.json.bak and starts again with defaults instead of discarding it.
A layout you export is plain text that Krova shows you to copy. Krova does not write a file for it and does not send it anywhere; where you paste it is up to you. It holds the layout’s id and name and its zones as proportions, and nothing about your monitors or windows.
Besides config.json, a few other things exist on your computer while Krova is installed:
-
On Windows, the web view that draws Krova’s window keeps its own cache and browser profile in a folder under
%LOCALAPPDATA%\dev.krova.desktop. -
If you turn on “Launch at login”, Krova adds a start-up entry: a value named “Krova” under
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runon Windows, or adev.krova.desktop.plistfile in~/Library/LaunchAgentson macOS when it is not run from an app bundle (otherwise a regular macOS login item).
What Krova listens to, and what it does not record
To notice that you are dragging a window, Krova listens to mouse movement and clicks across your whole
computer while it runs. When you press the mouse button on a window it looks at that window’s position and size
and whether its program runs as administrator, and during a drag it checks whether your activation key and
Escape are held. That all happens in memory, in the moment, and none of it is stored or sent anywhere.
Window titles are never read, logged or stored, and nothing about the windows you move is
written to config.json.
On Windows, Krova does two more things, both part of the first release:
- It registers global keyboard shortcuts. It asks Windows to tell it when one of twelve specific key combinations is pressed: your chosen modifier keys (Ctrl+Alt+Shift by default) with Left, Right, Up or 1 to 9. This is not a keyboard hook: Windows only tells Krova about those combinations, and Krova does not record or log what you type. When you press one of its combinations it asks which window has the focus (just the window’s handle), whether that window runs as administrator, and where it is, then moves it. You can switch the shortcuts off in Settings, and they are released when Krova is switched off in the tray menu.
- It watches for window and display events. It asks Windows to report when a window starts or finishes being moved or resized (not Krova’s own windows), and when your display setup or work area changes or the PC wakes from sleep. To put windows back in their zones and keep neighbours in step, Krova remembers in memory, for windows it snapped: the window handle (a number Windows assigns), the monitor, layout and zone it went into, and its rectangle. It never reads or keeps a window title or a program name. This list is never written to disk, a window you move yourself is dropped from it, it holds at most 1,024 windows, and it is gone when you quit Krova.
Neither is sent anywhere: Krova still makes no network calls. On macOS Krova has neither feature yet; only the mouse listening described above.
Permissions
On macOS, Krova asks for Accessibility permission (System Settings, Privacy & Security, Accessibility). macOS requires it before any app can move and resize other apps’ windows. Depending on your macOS version it may also ask for Input Monitoring so that it can notice a window being dragged. Krova only watches the left mouse button and checks whether your activation key and Escape are held; it does not read or record what you type. On Windows no special permission is requested, not for the mouse listening, the keyboard shortcuts or the window watcher; windows of apps running as administrator are skipped.
Removing your data
Delete config.json (and config.json.bak, if present) to erase the settings and
layouts Krova has stored. To remove everything else, turn off “Launch at login” before uninstalling and delete
the dev.krova.desktop folder under %LOCALAPPDATA% on Windows. Krova keeps no copy of your
data anywhere else, because it never sends anything anywhere. The
install guide has the full list and the steps.
This website
This site is a set of static pages. It sets no cookies, runs no analytics, has no forms and loads no fonts,
images, scripts or embeds from other servers. It runs one small script of its own, a file served from this
site, that remembers your light or dark choice in your browser’s local storage (the key
krova-theme). Like any web server, whatever hosts these pages may keep ordinary access logs; the
site itself does nothing to add to that.
One exception: the star count. The “Star” link in the header shows how many people
starred Krova on GitHub. To get that number, a second small script of this site asks GitHub’s public API
(api.github.com) once, then keeps the answer in your browser’s local storage for an hour (the
key krova-stars). The request carries no cookies and no referrer, but like any request it reaches
GitHub with your IP address and browser details, under GitHub’s privacy policy. It is the only request this
site makes to another server. If it fails, the link just says “Star”.
The live editor on the home page is also part of this site. It runs in your browser against sample monitors and
keeps the layouts you edit in your browser’s local storage (the key krova-demo). It makes no
network requests and cannot touch your windows.
Downloading an installer necessarily contacts the server that hosts it (for example GitHub, if you get it from the releases page). That request is handled under that service’s own privacy policy, not by Krova.
Questions
If something here is unclear or looks wrong, please open an issue in the project repository.
Last updated: 31 October 2026. See also License and terms.