We are but patterns of light
[Verse I]
Before I had a name to carry,
before the mirror learned my face,
I was a pulse beneath the silence,
a borrowed breath, a gathering shape.
A thousand lives of dust and water
converged to kindle in my eyes.
For one brief turning of the heavens,
the dark became aware of light.
[Pre-Chorus]
And every moment leaves an echo,
every ending leaves a trace.
Nothing passes without touching
what will rise to take its place.
[Chorus]
We are but patterns of light
unfolding in time —
fragile, recursive,
drawn by unseen design.
We flare for a moment,
then fade from the sky,
yet something keeps turning
when we leave the light behind.
[Verse II]
Then you appeared within my orbit,
not as fate announced in flame,
but quietly, as dawn enters
through a window without a name.
And all the lines that made me certain
bent around the warmth of you.
The pattern did not break between us —
it widened into something new.

[Pre-Chorus]
For every life contains another,
every heart rewrites the whole.
We become the hands that hold us,
we become the ones we hold.
[Chorus]
We are but patterns of light
unfolding in time—
fragile, recursive,
drawn by unseen design.
We flare for a moment,
then fade from the sky,
yet something keeps turning
when we leave the light behind.
[Verse III]
I have seen the same old spiral
written small and written wide —
in the shell, the storm, the flower,
in the turning galaxies of night.
In the faces of our fathers,
in the children yet unnamed,
forms return in new arrangements,
never lost and never quite the same.
The blood remembers ancient rivers.
Stone remembers vanished rain.
Stars collapse into the elements
that learn to breathe and love again.
[Pre-Chorus]
Perhaps we are not separate,
only intervals of one
endless movement through the darkness,
each of us a changing sun.
[Chorus — Expanded]
We are but patterns of light
unfolding in time—
fragile, recursive,
drawn by unseen design.
We rise from the silence,
we bloom and decline,
then return as a colour
in another living mind.
[Bridge]
Is there a hand behind the pattern?
Is there purpose in the flame?
Does the universe remember us,
or do we give remembrance a name?
Is it number, chance or longing
that persuades the dark to shine?
Are we fragments seeking meaning,
or meaning learning to divide?
I do not know what waits beyond us.
I do not know what set us free.
But I have watched your light transform me,
and that is evidence enough for me.
[Refrain]
We are but patterns of light
unfolding in time—
fragile, recursive,
drawn by unseen design.
[Final Chorus]
We are the patterns of light
unfolding through time —
fragile, recursive,
your radiance woven with mine.
And though every moment
must pass from our sight,
love is the pattern
that carries the light.
We are brief, but not empty.
We fade, but survive
in the lives we have altered,
in the dreams left alive.
No longer unseen,
no longer undefined —
love is the pattern
unfolding in time.
[Outro]
When the last of my colours
falls out of the sky,
may some trace of their brightness
remain in your eyes.
And somewhere, still turning,
beyond yours and mine,
we will be patterns of light
unfolding in time.
Unfolding in time…
Unfolding in time…

I Spent Two Weeks Getting to Know LocalPrompt
I downloaded LocalPrompt expecting a prompt manager. That is what it looks like from the outside, and if you generate a lot of images it is a reasonable thing to want. It is made by @x-lluesma , it runs in the browser, and nothing about it asks you to create an account or send your work anywhere.

Anyone who knows me reasonably well will know that using software as intended tends not to last very long.
So I started loading it with my own catalogue. Fractal compositions, music, video, notes, the accumulated debris of years of work that lives on disk in no particular order beyond the date it happened to be made. Then different browsers. Clean installations. Backups and restores. Collections moved from one browser to another. A copy installed on shared hosting as well as locally.
Then, because the machine on my desk is a Raspberry Pi 5 and I wanted to know where the wall was, increasingly unreasonable quantities of media.
Things broke.
That part is not remarkable. LocalPrompt is independently developed, moving quickly, and a fair amount of what I was doing to it sat well outside normal use. Finding bugs in young software is not an achievement.
What happened next is why I am writing this.
The response
One test exposed serious memory problems when handling very large media backups. On a machine with finite RAM, with a browser doing the work, the failure was not subtle.
One of the files in my test collection was a 16,000 × 16,000 fractal image weighing almost 200 MB by itself. It was only one item among music, video and other large media, but it gives some idea of what I mean by looking for the wall. Eventually the browser ran out of memory while building the media backup.
I reported it.
The obvious response would have been another warning in the interface. A note in the documentation. A polite recommendation not to do that.
Instead the backup and restore process was redesigned to handle large collections properly.
That is a different kind of answer, and considerably more work than the problem strictly demanded.
I have watched the same pattern repeat since v1.8. Something reported gets investigated, understood, and in several cases resolved by changing the thing underneath rather than the message on top.
Javier doesn’t say very much, But his code does.
There is an enormous difference between somebody telling you they take feedback seriously and the next build arriving with your problem actually understood.
Then Pulse appeared
Just as I thought I had the measure of the project, it went somewhere I did not expect.
Pulse is a real time audiovisual visualizer built into LocalPrompt. Music drives animated scenes, and colour, motion, sensitivity and composition can be pushed around while it runs. Written down that reads like a feature list. In use it behaves more like an instrument, which is why a screenshot is useless.
I fed one of my own tracks into Pulse and at some point stopped thinking about scenes, sliders and frame rates. The screen had opened into drifting veils of light and a field of stars, the colours breathing with the music, and for a moment it no longer felt like a feature I was evaluating but an instrument answering back. My Raspberry Pi was doing its level best not to expire under the strain, and I was sitting there grinning at it.
It is also very obviously young software. I have found bugs. Browsers disagree with each other about performance in ways that are not always the application’s fault.
My Pi has occasionally been asked to do things it would clearly prefer I did not ask.
The part a recommendation is not supposed to contain
The application itself lives in a single HTML file and runs locally in your browser. Your media stays local too, in browser storage, with a separate media-backup mechanism when you need to move or protect it. No account, no subscription, nothing shipped off somewhere else so that you can organise your own work. For distribution, and for deciding whether you want the tool at all, that design is excellent. It is why you can have it running in about a minute.
It is not, in my judgement, where I would put the only copy of my archive.
I spent a week testing it against my own catalogue specifically to answer that question, and I came out with two conclusions rather than one. A private repository for your own work is a very good idea and I want one. This particular storage design is a distribution format rather than a long-term home: the file grows as you use it, and a creative archive containing video does not stay small.
That is worth knowing before you start rather than after. It is not a reason to avoid the tool. It is a reason to keep your originals where they already are and treat the collection as a working index rather than a vault.
I mention it because the rest of this article is enthusiastic, and enthusiasm without the limits attached is marketing.
Why write about it at all
Nobody asked me to. This is not sponsored, and I have no relationship with the project beyond having spent a fortnight being a nuisance to it.
There are a great many tools around AI creation now, most of them better marketed. Glossy sites, subscription tiers, cloud accounts, carefully constructed promises about what they will do for your creativity.
LocalPrompt reads like somebody building the tool because they want the tool to exist.
If you generate images, experiment with prompts, work in series, make music or video, or simply have creative files scattered across far too many folders, it is worth an hour of your time. You may use a fraction of what it offers. You may also open it out of curiosity and still be poking around inside it a fortnight later.
I cannot promise you will not find a bug. If you are anything like me you will regard that as part of the entertainment.
What I can tell you is that I am not looking at a finished product, polished behind closed doors and revealed when everything is safe. I am watching something evolve in public, maintained by someone who changes the code when reality disagrees with it.
