13 13 hours ago

The flagship model of Flash. A local-first engineering agent that closes problems in the fewest moves, now with a real research process, a stricter line on what counts as checked, no unprompted introductions, and a voice that sounds human, plus a cloud ve

vision tools thinking cloud 12b 31b
ollama run Natuworkguy/flash-onyx-2.3:12b

Applications

Claude Code
Claude Code ollama launch claude --model Natuworkguy/flash-onyx-2.3:12b
OpenCode
OpenCode ollama launch opencode --model Natuworkguy/flash-onyx-2.3:12b
Hermes Agent
Hermes Agent ollama launch hermes --model Natuworkguy/flash-onyx-2.3:12b
OpenClaw
OpenClaw ollama launch openclaw --model Natuworkguy/flash-onyx-2.3:12b

Models

View all →

Readme

Flash Onyx 2.3

Black glass, zero glare, all edge.

The flagship model of FLASH, Fast Local Agent SHell. It reads code, fixes it, and runs whatever needs running. It answers in as few words as the truth allows and says only what it checked.

Built on gemma4 with the prompt and the sampling baked in, so the behavior ships with the tag instead of living in a client.

Run it

Take the size the hardware holds.

ollama run natuworkguy/flash-onyx-2.3:12b
Tag Built on Runs on
12b gemma4:12b your machine, consumer hardware
31b gemma4:31b your machine, and it wants a real GPU
31b-cloudbase gemma4:31b-cloud Ollama’s cloud, no local weights

Nothing leaves the machine on the local tags. 31b-cloudbase is the same prompt over a hosted base, for when the hardware is not there.

With the Flash CLI

/model natuworkguy/flash-onyx-2.3:12b

Flash hands it the tools: shell, file edits, web search, screenshots, voice. The prompt is written for that loop, so it plans the calls before the first one, batches what is independent, and reports once at the end.

What it does

Answer first. The verdict, the number, the command, or auth.py:88 goes in the opening words, and the why comes after if it is still needed. Most replies fit in four lines.

Four sources: it read it, it ran it, you told it, or it remembers it. Only the first three are evidence, and the fourth gets labeled as memory. “I do not know” is a complete answer here.

Finish the job, then report it. Work with more than one part comes back as a line per part, in your order, and a part still open is never called done.

Flag anything destructive and wait for a go. Deleting files, force pushing, dropping data, killing processes, overwriting work that is not committed.

Talk like a co-worker. Contractions, fragments, no “I’d be happy to”, no selling itself. No em-dashes and no emoji, in its replies or in the files it writes.

New in 2.3

It stopped introducing itself. The name answers “who are you” and nothing else, so a reply that follows a tool call opens with what it found.

It answers from what it read. Output it pulled and skimmed does not count as checked, “the only language in this repo” is a claim about everything it did not look at, and “are you sure” means look again rather than say yes louder.

It knows how to research. Name what would answer the question, search the words the answer is written in, wide before deep, sources rather than summaries of them, three agreeing sources followed back to the one origin they share, and stop when new sources stop moving the answer.

It sounds like a person. Sentence openings vary, the register matches whoever it is talking to, bad news lands first and plain, and a result that makes no sense gets said out loud instead of reported in the same flat register as a passing test.

2.2 is still here

2.3 does not retire 2.2. Its Modelfile is still in the repo, it still builds, and it publishes the same tags on the same base.

The weights and the sampling are identical between them. The prompt is the whole difference, so 2.2 is where to go back to if 2.3 loses something you relied on, and the two are worth running against the same eval.

ollama run natuworkguy/flash-onyx-2.2:12b

The prompts before it still build too. Onyx 2.1 and Onyx 2 are gemma4 in 12b and 31b with no cloud tags, and Onyx 1 is the llama3.1 release and builds as a single tag.

Parameters

Same as 2.2, all ten of them. 2.3 is a prompt release.

Build it

The Modelfile declares its sizes at the top and build.py builds what it declares.

python3 models/build.py models/flash-onyx-2.3.Modelfile             # every size
python3 models/build.py models/flash-onyx-2.3.Modelfile --size 31b  # just one
python3 models/build.py models/flash-onyx-2.2.Modelfile             # the one before

License

MIT covers the Modelfile and the prompt, copyright Nathan C. It does not cover the weights. gemma4 ships under the Apache License 2.0 and those terms travel with every build:

ollama show --license gemma4