Industrial-track paper
Why the generator is local, how batches and placement work, and what the PDF contains.
DDS Crossword
Domino Data Systems · 2026
Shyamal Suhana Chandra's generator asks a local language model for questions, lays the answers on a square grid, and prints a puzzle, clues, and answer key. The published install is only for ARM64 on macOS. This page is the public brief. The source stays in the private repository.
One pass from a topic string to a US Letter PDF. Nothing in the topic is sent to a hosted model API.
CLI flags name the theme, size, model, and seed.
Ollama writes eight entries at a time as JSON.
Keep unique A–Z words. Drop clues that spoil the answer.
Longest word across the middle, then crossings only.
Blank grid, numbered clues, filled key, footer.
These are the bounds in the paper, not a speed benchmark. A large local model spends most of the run inside Ollama.
Share of attention for a few hundred candidates. Placement and PDF writing are the short tail.
The paper, the talk, and the manual live in this site's public folder. The rest of the repository stays private.
From the paper
“The design favors a local model, bounded requests, and a deterministic seed so the same inputs can be reproduced.”
Themed crosswords show up in training handouts, event programs, and classrooms. Hosted model APIs are a poor fit when the topic is internal or the machine must work offline.
From the slides
“A local Ollama model writes short questions and one-word answers.”
- Default server: http://127.0.0.1:11434
- A new word must cross a letter already on the grid.
- Clue form is checked. Facts are not.
- The grid is playable. It is not a symmetric newspaper grid.
Release v0.1.0 · ARM64 macOS only
Only for ARM64 on macOS. If Homebrew is not installed yet, run its install script first. Then trust the tap, tap it, and install. The formula downloads the public v0.1.0 build and installs the crossword manual page.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo >> ~/.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" brew trust --tap Domino-Data-Systems/crossword brew tap Domino-Data-Systems/crossword brew install crossword
Install the macOS app from ollama.com/download/mac. Open Ollama and leave it in the menu bar. That icon is the daemon for this generator. Pull gpt-oss:20b while it is running, and pass that model to crossword.
ollama pull gpt-oss:20b crossword --topic "the solar system" --model gpt-oss:20b --verbose
This release is only for ARM64 on macOS. Run Homebrew's install script in Terminal. The next two lines put brew on your PATH for this shell and for new zsh sessions. Skip this step if brew already works.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo >> ~/.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Homebrew will not load a third-party tap until you trust it. This trusts the public Domino Data Systems crossword tap, including the v0.1.0 formula.
brew trust --tap Domino-Data-Systems/crossword
The tap is the public repository homebrew-crossword. The application source stays private. v0.1.0 installs only on ARM64 macOS.
brew tap Domino-Data-Systems/crossword
This installs crossword 0.1.0 and its manual page on ARM64 macOS only. Intel Macs and other systems are not part of this release. Then open the manual.
brew install crossword man crossword
Download the macOS app from ollama.com. Open it once and leave the llama icon in the menu bar. That app is the local daemon and serves http://127.0.0.1:11434. Quit it from the menu bar only when you want the server to stop.
open https://ollama.com/download/mac
Pull gpt-oss:20b while the menu-bar app is running, then confirm the server lists it. Pass that name with --model. The crossword command still defaults to llama3.2 if you omit it.
ollama pull gpt-oss:20b curl -sS http://127.0.0.1:11434/api/tags
The PDF has a blank grid, clues, and an answer key. The seed is printed so you can retry placement.
crossword --topic "Billy Joel" --size 30 --model gpt-oss:20b --verbose