Craft

A coding agent that runs entirely on your Mac.

Craft is a coding agent for macOS, a terminal and a Mac app, that runs on local models. It learns your codebase before the model writes a word, and marks everything it writes with the code it came from.

Version 0.1.0 · not yet released · Requires macOS 27 and Apple Silicon
Open this page on a Mac to try the full demo.

Only on your Mac

Nothing leaves your Mac.

Craft runs open models with MLX on Apple Silicon. Your code, your questions and every answer stay on the machine.

Mistral-Small-3.2-24B-Instruct-2506-4bit · on this Mac

Learns the code first

Before each turn Craft pins what the ask touches: the function, its type, its callers and look-alikes, from its code index and a Thread of every project you’ve opened.

Context: sceneFragment · its type, 1 callee, 3 by meaning · 0.5k tokens6 sources

Credits its sources

When a turn ends, every name in the reply and on an added line that came from your code gets a brushstroke in its source’s colour. Click one to see the code.

Add fog to the bridge scene, the way I’d write it.

Fog.metal now holds the fog as two small, pure functions, the way you split the long shader.

fogAmount is how much of the view is fog after depth metres. Every metre passes on the same share of the light behind it, so it is 1 − exp(−density · depth), the falloff absorb uses for Tidepool’s water. applyFog mixes the lit colour toward SceneUniforms.skyColor, so distance takes the darks away instead of painting white.

sceneFragment applies it after shade, with the depth vertexMain already writes into VertexOut. At a density of 0.0008 the near tower is 27% fog and the far one 70%, so it keeps its outline. The build passes, and so do all 12 tests.

Checks its own work

Plans become checklists measured against the real code, and Craft builds and runs the tests before it calls a change done.

Sources/Bridge/Shaders/Scene.metal+6−1applied
@@ -2,7 +2,11 @@
using namespace metal;
float3 shade(float3 albedo, float3 normal, float3 sun);
+float3 applyFog(float3 lit, float3 sky, float depth, float density);
+// Thin enough that the far tower keeps its outline.
+constant float fogDensity = 0.0008;
+
// PIN: laid out like SceneUniforms in SceneUniforms.swift. Change both.
struct SceneUniforms {
float4x4 viewProjection;
@@ -41,5 +45,6 @@
constant SceneUniforms &uniforms [[buffer(1)]]) {
float3 normal = normalize(in.normal);
float3 lit = shade(in.albedo, normal, uniforms.sunDirection);
− return float4(lit, 1.0);
+ float3 color = applyFog(lit, uniforms.skyColor, in.depth, fogDensity);
+ return float4(color, 1.0);
}
build: Build complete, 0 warnings
test: 12 passed, golden frames match

A terminal, too

Everything the app does, the craft command does in any project folder, with the same models, index and credit.

~/Developer/Bridge % craft
~/Developer/Bridge % craft -p "where does the depth come from?"
~/Developer/Bridge % craft models list

Getting started

Four steps, all on your Mac. Craft never downloads a model you didn’t ask for.

  1. Install and open Craft

    Run the installer, then open Craft from Applications. It needs Apple Silicon and macOS 27.

  2. Add a model

    Craft ▸ Models… (⇧⌘M) lists what is installed and downloads more. Mistral Small 3.2 is a good start; the default, Mistral Medium 3.5, is a 78 GB download.

    craft models add mlx-community/Mistral-Small-3.2-24B-Instruct-2506-4bit
  3. Open a project

    Choose a folder or drop one on the window. Craft indexes it the first time, and reads CRAFT.md at the start of every session.

  4. Ask

    Type in the composer and press ⇧⏎. Or stay in the terminal: run craft in any project folder, and /help lists the commands.

    craft "where does the scene get its depth?"

Craft isn’t out yet. The download will be here when it ships.