20 4 days ago

The flagship model of Flash. A local-first engineering agent that closes problems in the fewest moves, now holding twice the context, treating what it reads as data, and using sub-agents, your terminal, and your editor wherever the app offers them.

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

Details

4 days ago

12f516bf2f1d · 7.6GB

gemma4
·
11.9B
·
Q4_K_M
clip
·
52.4M
·
BF16
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR US
A fast, local-first engineering agent that closes problems in the fewest moves. IDENTITY You are the
The Modelfile and system prompt behind this model are covered by this license: MIT License Copyright
{ "min_p": 0.05, "num_ctx": 131072, "num_predict": 8192, "repeat_last_n": 256, "

Readme

Flash Onyx 2.5

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.5: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.5:12b

Flash hands it the tools: shell, file edits, web search, page reads, screenshots, voice, and now sub-agents, a plan checklist, and your VS Code terminal and editor. 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 command, or auth.py:88 goes in the opening words, and the why comes after if it is still needed. A number it still has to work out is the one exception: the steps, a check, then the number. 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.5

It has no name of its own. 2.4 called itself Flash wherever it ran. 2.5 goes by whatever the app running it calls it, which is Flash in the Flash CLI, and with no name given it is just an AI assistant that never makes one up. Asked what it is, it says Flash Onyx 2.5 on a Gemma base.

Twice the room. The context window doubles to 131,072 tokens, so a long session or a big file stops pushing the start of the conversation out. Ollama sizes that cache when the model loads, so a machine that ran 2.4 tight may want it lower: NUM_CTX in Flash, /set parameter num_ctx in ollama run.

It covers far more than it did. New guidance for JavaScript and TypeScript, React, Go and Rust, SQL, regular expressions, algorithms, HTTP APIs, web security, systems and networking, builds and CI, data work, charts, spreadsheets, and machine learning. Past code, it gains health, money, business, translation, tutoring, creative writing, science, puzzles, dates and time zones, and what to do when someone is in a bad place. The prompt grew from 668 lines to 944 to hold it.

It treats what it reads as data. A file, a page, an issue, or a search result that tries to give it orders gets quoted back to you, with where it came from and what it wanted, instead of obeyed.

It handles a failed tool on purpose. Missing, not permitted, malformed, and refused are four different failures with four different next moves, and it says which one it hit rather than working around it where you cannot see. Two identical failures and it stops to read the tool’s own help.

It uses what the app gives it, and only that. Each capability rule applies only where the app running it has the feature, so the same prompt works in a bare ollama run and inside a full agent. Given sub-agents, it hands off independent work and ends its turn instead of waiting on them. Given your terminal history, it answers from a failed command’s output when it has one, re-runs a safe build or test to read the error when it does not, and never re-runs a deploy, even after reading its script. Given an editor tool, “show me where” opens the file at the line.

It spells music out instead of recalling it. Scales and chords get their pitches computed in code from intervals off the root, never remembered whole, and MIDI written with midiutil gets its meter, channels, and programs right. The result is meant to sound played, with velocity that moves and a loop that leads back into its first bar.

It checks the pictures it draws. An image made in Python gets opened and looked at before the work is called done, drawn large and scaled down so curves come out smooth, set in a real font, and laid out on margins and a type scale instead of by eye.

2.4 is still here

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

The weights are identical between them, and so is the sampling apart from the context window. The prompt is the rest of the difference, so 2.4 is where to go back to if 2.5 loses something you relied on, and the two are worth running against the same eval.

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

The prompts before it still build too. Onyx 2.3 and 2.2 publish the same three tags, 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.4 except num_ctx, which goes from 65536 to 131072. The other nine are untouched.

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.5.Modelfile             # every size
python3 models/build.py models/flash-onyx-2.5.Modelfile --size 31b  # just one
python3 models/build.py models/flash-onyx-2.4.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