I created this project out of a lack of options; I want a fireplace to run in the terminal on my computer for the sake of atmosphere. I assumed there would be loads of choice, or at least one clear choice, which I failed to find any of. I wanted something that looked good, was easy to set up on most machines, and had a sound component to it. I found some projects that were close to what I wanted, but all of them had no sound, and most of them didn't look good.

So I told the AI to do it

I wanted to see how far I can go purely vibecoding a solution, and Gemini 3 Pro got quite far; AI models are notoriously bad at drawing, and yet it did very well with generating a convincing fire using Golang and the tcell library. I managed to go from an empty directory to a solution I'd be happy to use within 5 minutes.

What it couldn't do was practically anything else. I asked it to generate convincing kindling for the fire to burn from, and it went very wrong.

Here are all the ways it went wrong that I bothered to screenshot:

This process was extremely painful, and required highly specific prompting in order to get a result that looked satisfying. For anyone interested, I told the model to always point a particular piece of kindling towards a centre point, with some random variance.

After I got there, the last thing I asked the model to do was to generate a bash script that plays fireplace sounds using SoX. It did well with the generation of specific play lines, but required human intervention to get the balance just right. The result sounds quite realistic, more realistic than I expected, and very functional as relaxing background noise.

I then gave the model the script and told it to rewrite it in Go, in which it failed miserably. It did choose a suitable audio library, and was successful in generating cracks and pops at random intervals, but it ended up sounding very obviously non-organic, defeating the purpose of the feature entirely. Thankfully with some heavy prompting to tune the sound profile and manual intervention to adjust the gain (the initial output was redlining my speakers at 50% volume), I got a result that I'm even happier with than the bash script.

Conclusion

In the end, I got what I wanted, and although I had to jump through a lot of hoops to get there, it didn't feel like hard work, which was the outcome I hoped. AI is, of course, an amazing tool for speeding up your work, but it's not perfect in all use cases just yet.

I want to add more white noise generators in the future, like waves crashing or a waterfall. I'll make a blog post about the process of adding those when I get around to it, but for now, considering this tool has improved my sleep quality, I'm happy with its current state.