One app file for Mac, Windows, and Linux

Not three installers behind one download button. One file, and the same file, on every desktop.

Why one desktop app usually means three

A desktop app is normally written against one operating system's own interface — AppKit, Win32, GTK. Supporting all three means three builds, three sets of platform bugs, an installer each, and code signing on at least two.

That cost is why most small useful software never leaves the machine it was written on.

What a .krate file is

A ZIP archive with two things in it: a WebAssembly component, and a manifest declaring what the app wants to be allowed to do.

The component never calls the operating system. It calls Krate interfaces described in WIT, and the runtime on each system turns approved calls into local behaviour. The file is the same bytes on every machine, which is checkable: it carries an identity computed from its own contents.

What an app can actually do

Enough for a real app. It can open a window with real controls, keep its own settings, keep its own database, stay signed in, send notifications, open links in your browser, read and write folders you choose, and reach hosts you name.

Each of those is a separate permission the person sees before the app runs, so an app that keeps a list never sees your folders.

Where it does not fit

This format is for small and medium desktop software. A game with a native engine, a driver, or a tool that needs deep system access is the wrong shape for it, and Krate says so rather than half-supporting them.

krate port reads an existing project without building or running it and tells you which of the three answers applies: ready, needs changes, or not supported yet.

Try it

Krate is open source and installs with one command. Nothing to sign up for.

Get Krate Open the store