The product

gm

A command that invents the code you asked for, writes the tests that would catch it lying, runs them, and keeps going until they pass.

gm
$ gm "a URL-safe base64 encoder and decoder with round-trip tests"

round 1: hallucinating...
round 1: 3 files (package.json, src/base64url.ts, test/base64url.test.ts)
round 1: verifying with node --test test/base64url.test.ts
round 1: failed (exit 1) in 0.1s
round 2: hallucinating...
round 2: verifying with node --test test/base64url.test.ts
round 2: passed in 0.2s

PASS  /path/to/out  (2 rounds, node --test test/base64url.test.ts)

Exit code 0 on PASS and 1 on FAIL. It drops into a script or a CI step without anything having to read its mind. There is no daemon, no editor plugin and nothing to sign into.

The loop

  1. Invent it whole

    The model emits a complete file set in one object: every path it references is a path it wrote. Stubs, TODOs, patches and fragments are rejected before anything touches the disk.

  2. Prove it by running

    The model also names the command that would falsify its own work, and that command actually executes. Nothing is called finished because it looked finished.

  3. Feed the failure back

    The command, its exit code and its output become the next round's context. Rounds continue until the suite is green or the budget runs out. A run that never goes green says so plainly.

What a run leaves behind

Every round is written to .geniusmoment/run.json inside the output directory: the spec, each round's files, the verification command, its exit code and its output. A green result is reproducible without the tool, and a red one is diagnosable without guessing which round did what.

Options

FlagDefaultWhat it controls
--out <dir>./gm-<timestamp>Where the code lands.
--rounds <n>4Hallucinate/verify cycles before giving up.
--endpoint <url>$GM_ENDPOINTThe inference endpoint to generate against.
--model <id>$GM_MODELWhich model serves the request.
--timeout <sec>300Hard ceiling on a single verification.
--gen-timeout <s>600Hard ceiling on a single generation.
--forceoffAllow a non-empty output directory.
--quietoffPrint only the verdict.

Generated paths are treated as hostile

Every path in a file set is model output, so it is checked rather than trusted. Absolute paths are refused. Anything resolving outside the workspace is refused. Between rounds, only the files the previous round wrote are removed. Whatever you put in the directory yourself is never touched. A non-empty output directory is refused outright unless you pass --force.

Verification runs under a hard timeout with a bounded output buffer, and the commands it will run are constrained: no network and no install step, so a suite has to pass on a bare machine with only its runtime present. A verification that needs to reach the internet to succeed has not proven anything about the code.

Runtimes

Node and its built-in test runner are the default today, and the one a request falls back to when it does not name a language. Python, Go and shell are the next runtimes in the training set. The rule that governs all of them is the same: if this machine cannot execute the verification, we do not generate training targets for it.

What it will not do

gm does not answer questions about the past, and it never will. It is pointed at code that does not exist yet, never at facts, dates, events, citations or what happened. See the boundary.

Early access

Tell us the spec you would hand it first and which runtime you live in. That is what decides the order we open it up.

Get early access