Twenty-eight tiles, double-blank to double-six. Two players draw seven each, three or four draw five; the rest is the boneyard.
Whoever holds the highest double opens with it (no doubles anywhere: the highest tile). Play goes clockwise; add a tile that matches an open end of the line. Doubles lie crosswise and the line has just two ends.
No tile fits? Draw from the boneyard until one does. Once the boneyard is empty, pass instead.
A round ends when someone plays their last tile: they score every pip left in the other hands. If nobody can play, the lightest hand wins the round and scores the difference (a tie scores nothing).
First to 100 points wins the game. Bots play their heaviest matching tile, doubles first.
With more than one person at the table, hands stay covered between turns. Undo takes back your last play (never a draw) and is available when you are the only human. Games save automatically.
Keyboard: Tab to your tiles, Left/Right to move along them, Enter or Space to play one; a tile that fits both ends asks which.