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.
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
.gitignorerules - 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 validatepoints at the line of any mistake;xenokit schemalists every key
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
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 fileand 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.
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.
- Open XenoKit. It finds the CodeKit projects on your Mac.
- Import All. Matching projects are imported and start watching.
- Compare. Check the rest against CodeKit’s outputs.
- 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.
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 agentswrites a brief for AI coding agents
# 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
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
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.