XenoKit · Features

Everything XenoKit does

XenoKit watches your projects and compiles Sass, JavaScript, TypeScript and CSS as you save, from rules you commit with the project. The app and the xenokit command line run the same engine.

Beta Version 1.12.0 · macOS 15 or later · Apple silicon
Rules

Your whole build in one file you commit

A project’s behaviour lives in a human-readable .xenokit.yml in the repository. When files matching a rule change, XenoKit runs that rule, and anyone reading the file can see exactly what compiles where.

  • Patterns follow .gitignore rules
  • A rule sets the defaults; any file can override them
  • One run at a time per rule, and exactly one re-run for changes made during it
  • xenokit validate points at the line of any mistake; xenokit schema lists every key
.xenokit.yml
version: 2
name: mysite

rules:
  - name: styles
    compile: sass
    files: resources/css/**/*.scss
    output: public/css/{dir}/{name}.css
    style: compressed
    autoprefix: true

  - name: scripts
    compile: esbuild
    files: resources/js/app.ts
    output: public/js/{name}.js
    minify: true

files:
  resources/css/site.scss:
    source_map: true
Compilers

Sass, JavaScript, TypeScript and CSS

XenoKit knows each tool and builds each file’s exact command, then reads the errors and warnings back with their source lines.

  • Dart Sass

    Compressed or expanded output, source maps, load paths, and Autoprefixer after Sass when you want it.

  • esbuild

    Bundles and minifies JavaScript and TypeScript, with source maps, formats and targets per rule.

  • Plain CSS

    Autoprefixer and minifying for CSS that isn’t Sass, with the source map following the file through both steps.

  • Smart recompiles

    Change a Sass partial and every file that imports it recompiles. An esbuild entry recompiles when any file it read changes.

  • Per-file settings

    Turn on a source map for one file while you debug. xenokit file and the Files view show where every setting comes from.

  • Commands and services

    Command rules run any command, with the changed paths if you want them. Service rules keep a dev server such as Vite running.

Replaces CodeKit

Coming from CodeKit?

XenoKit reads CodeKit 3 and CodeKit 2 project files without opening CodeKit. Per-file overrides, ignores, copies and hooks, and CodeKit’s Sass and Autoprefixer versions come across, and XenoKit can compile into a temporary folder and compare the result with CodeKit’s outputs before you switch.

Scripts that use @codekit-prepend or @codekit-append are joined byte-for-byte, as CodeKit did, with a warning to port them.

Switching in four steps
  1. Open XenoKit. It finds the CodeKit projects on your Mac.
  2. Import All. Matching projects are imported and start watching.
  3. Compare. Check the rest against CodeKit’s outputs.
  4. Quit CodeKit. Same folders, same outputs, from now on.

CodeKit is a trademark of its respective owner. XenoKit is independent and is not affiliated with or endorsed by its owner.

Command line

The same engine in Terminal, CI and your AI agent

The app runs nothing itself: it drives the xenokit command-line tool inside it. A project behaves the same from the app, Terminal, a CI job or an AI coding agent.

  • Every command takes --json
  • Every command that changes something takes --dry-run
  • Plain What / Why / Next errors and documented exit codes
  • xenokit agents writes a brief for AI coding agents
The command line, in full →
Terminal
# files with errors or warnings now
$ xenokit status .
# how one file compiles, and why
$ xenokit file resources/css/site.scss
# check .xenokit.yml after editing it
$ xenokit validate
# a failed run's command and full output
$ xenokit log --failed --full
Toolchain

Compilers it installs and checks itself

XenoKit installs Dart Sass, esbuild, and PostCSS with Autoprefixer for you, so a Mac needs no Homebrew, Node.js or npm to compile. Downloads come only from registry.npmjs.org and nodejs.org, and anything that doesn’t match its publisher’s hash is deleted.

  • One version for the whole Mac, or a version pinned per project
  • Try It First compiles your project with a new version beside the current one and compares
  • Update checks at most once a day, and nothing installs on its own
Screenshot: App Settings › Tools, with installed versions and Try It First
Also

The small things that add up

  • Never steals focus

    Status shows in the colour of the <K> brackets in the menu bar or Dock. Notifications are opt-in and go away once a file compiles.

  • Open at the exact line

    Jump from an error to its line in VS Code, Cursor, PhpStorm, WebStorm, Zed, Sublime Text, Xcode or another editor.

  • Near-zero idle energy

    Event-driven, with no recurring work while it waits: 0.25% of one core with 18 projects watched.

  • Keeps watching

    Opens at login without its window and resumes watching. Watchers keep running if the app quits unexpectedly.

  • Signed and notarized

    Developer ID signed with the hardened runtime and notarized by Apple. It never asks for an administrator password.

  • No account, no telemetry

    The only network traffic is installing and checking compilers. Your projects, settings and logs stay on your Mac.

Planned Automatic updatesTailwind CSS, ESLint and LightningCSSA one-shot xenokit build for deploys and CIHomebrew cask

Try XenoKit in the beta

Leave your email and we’ll send you a download link as soon as there’s a beta build for you to try.

Questions about XenoKit?

Beta access, licensing, or help moving your CodeKit projects across. We reply within 24 hours on business days.

Need help with an app or a license? Open a support ticket →

We reply within 24 hours on business days.