The most useful thing Bubbles does is boring. I mean that as a compliment. I forward a link to it in Messages. It reads the article and gives me the short version. It saves the article to Raindrop. Then it tells me why the article relates to my current work or thinking.

That does not feel like an AI product. It feels like a text to a capable friend with a good filing system. The reply is not magic. Sometimes the connection it makes is obvious. Sometimes the connection is a stretch. But the exchange happens where I already talk to people, and that detail is important.

How I got here

I tried OpenClaw because everyone talked about it. It did not impress me. Then people on Twitter recommended Hermes, again and again. I tried it. I did not go back.

That is not a benchmark result. It is not a verdict on anyone else’s setup. It is only the path that made this project work for me. Hermes let me build an assistant around the small tasks I do. It did not push me toward a demo that I show once and forget.

The simple stack

Photon gives Bubbles a pool number with iMessage capability. Hermes is the runtime. It receives a message, works through it, and replies. An always-on Mac Mini gives the whole thing a dependable home.

That is the stack, in the order I experience it. I text. Bubbles answers. The machine is there when I need it. The rest is implementation detail until it breaks. Then it is implementation detail with a small siren attached.

The personal part

The chat is not the interesting part. The skills are.

Curate is a good example. I ask for a playlist for a specific setting. The skill uses my listening history. It makes a private Spotify playlist with familiar anchors, deep cuts from artists I love, and discoveries. It checks each discovery. It does not guess. That last part matters. I have enough playlists from a model’s loose idea of “summer.”

Or I text, “Add steaks to the shopping list.” Bubbles updates the real shared list, in the app we already use. It does not build a second, AI-flavored list. Nobody opens a list like that.

And when I forward an article, the skill summarizes it, saves it to Raindrop, and relates it to my interests or current work. The skill says the article might be relevant, and that word is there for a reason. A useful nudge is better than a fake certainty about my interests next Tuesday.

Four layers, kept separate

There are four parts to the arrangement:

  • Messaging surface: Photon and Messages are how I reach Bubbles.
  • Runtime: Hermes runs the conversation and decides when a skill is useful.
  • Skills and tools: Curate, the shopping-list action, and the Raindrop workflow do the specific jobs.
  • Systems of record: Spotify, the shared list, and Raindrop hold the real data.

Four layers: Messages and a Photon number to reach Bubbles, Hermes as the runtime, small skills for specific jobs, and the systems of record where the data already lives.

The separation is practical. I can change the model without a rebuild of Bubbles’s identity or procedures. The assistant is the relationship and the habits. The model is a component inside it.

The rules matter more than the tricks

An assistant with real tools needs smaller verbs than you first think. I expose narrow actions. I leave out destructive capabilities when there is no reason for them. A person approves each sensitive action. This is less exciting than full keys for an agent. It is also how I sleep.

The always-on part has its own lesson: treat the machine like a service. It needs monitoring from a point outside itself. A machine cannot reliably report that it stopped answering messages. I learned that from experience, not from foresight.

Failures happened. Bubbles texted on its own. It went unavailable after port exhaustion. It made me think much harder about photo-agent guardrails. Those posts contain the useful details. The short version: an assistant is only as dependable as the boundaries and the checks around it.

Still unfinished

Bubbles is unfinished, and that is correct. I still learn which tasks deserve a skill and which stay manual. Not every small inconvenience needs a conversational middleman. I enjoy making one anyway.

If you found a better way to make that call, I want to hear it.

But I am glad I built it. This project made tinkering feel like play again: curious, slightly ridiculous, and worth the maintenance. That is plenty for now.