Vibes DIY
Vibes DIY / Blog
From the build log

Nothing moved, and everything got smarter

Open Vibes today and it looks like it did a month ago. Same box in front of your app, same app behind it, same blur that sharpens as the build lands. Nothing on the screen moved. What changed is the thing reading your messages, and it changed from a set of buttons into an agent.

A watch face in close-up, over the line: feel free to close the tab.
Feel free to close the tab. It finishes without you.

What was in the box

For a year the chat quietly did the work of a control panel. There was a button that meant "just talk about this, don't touch the code" and one that meant "take your time." A wizard appeared when permissions came up and another when you wanted live data. Small chips offered upgrades. A sniffer read your message and guessed whether "make it darker" was a styling wish or a code change. Six ways in, each deciding one slice of one question, and none of them could see the conversation.

All of that existed because the models it was built for needed it. They had short memories and no way to ask, so we built the asking around them. That constraint expired, and the scaffolding stayed up out of habit.

What is in it now

One lane. You type, and an agent reads your app and decides which of three things you did. If you asked for a change, it starts the build and keeps talking while the build runs. If you asked a question, it opens your app's own files and answers from them, so "what does my app actually do right now?" gets an answer about your app and not a plausible one. If you were somewhere in between, it makes the smallest change it is confident about and tells you what it assumed.

The buttons are gone because the agent does what the buttons did, and does it after reading the room.

Draft first, then the real thing

The instinct when someone asks for something complicated is to ask a question first. Which station's feed? Who else can see this? All reasonable, and all of them leave you looking at an empty screen while a machine interviews you about an app that does not exist yet.

So the order flips. Ask for a college radio schedule app and you get one almost immediately: real layout, real screens, stand-in data where the live feed will go. Then the conversation starts, with something on the screen to point at. "Here's the rough flow. Which station's feed should power it?" is a different question when you can see what the answer will change.

you press send later Wave 1: the draft layout, screens, stand-in data on screen in seconds The conversation "which paper's feed?" · reads your link Wave 2: the real thing live feed, rules, a backend lands when the draft finishes
Two waves is the default. The only app that skips the second is one so simple it needs no follow-up at all.

The honest part is a sentence the agent is told to say out loud: which parts of what you are looking at are pretend. Stand-in data nobody labels reads as a bug. "The schedule is placeholder for now, I'm wiring it to the real feed" costs one line.

Get posts like this in your inbox

One email field. Real updates. No algorithm required.

The restraint matters as much as the asking. A builder that asks about everything is worse than one that asks about nothing, so the rule is one question, and only when something concrete is missing: a name, a source, a place. "Alert me on every full moon" gets no question. The moon is not ambiguous.

You can talk while it builds

Send a second message during a build and it gets an answer, not a place in a queue. In our measurements a question sent about forty seconds into a build had its reply streaming twenty seconds later, beside the code still coming in.

And you can leave. We measured a browser tab closed the instant the server acknowledged the request, and a terminal killed a tenth of a second after it. Every time, the build finished, saved, woke the agent for its second pass, and wrote the reply into the transcript with nobody watching. The tab is not the session.

Apps that keep working while nobody has them open

The second wave is where the interesting apps get their interesting part. An app that checks a page at noon, a reminder that sends on time, a report that writes itself: these need a small piece of code that runs on our servers instead of in your browser, and the agent now writes that piece when the app calls for it, rather than offering it later as an upgrade.

Three things make that class of app real. Your app's server can read any ordinary public page, feed or calendar with nothing to arrange, and we cache the answer for about five minutes, so an app that checks a board every thirty seconds costs one request, not a hundred. A form submission or an app message can reach your email, not only the bell on the site, with no change to the app. And your app's server can finally say what it did, in a log you can read, instead of into a void. The details live in the backend guide. We wrote about the backend itself when it shipped; what is new is that you no longer have to know to ask for one.

We also learned what an unattended app owes you. In testing, an app whose feed fetch failed went on to write six jokes about there being no news and told its owner the drafts were ready. An app someone is looking at can swallow an error. An app that runs at noon cannot, and teaching the builder that difference is part of this work.

What it cannot do

The useful thing to know about an agent that changes real things is the sentence about what it cannot do, and whether anything enforces it.

  • It cannot touch an app you did not ask about. The tools that read your app's settings take no arguments at all. There is no field where somebody else's app could go.
  • It does not guess who you are. If your account holds two names and it cannot tell which one an app should publish under, it asks. Asking is free; it is already talking to you.
  • It cannot start a second build on top of a running one. When it tries, it gets a sentence it can repeat to you rather than an error, and it is forbidden from promising that a change is "queued" unless something is actually arranged to send it.
  • It speaks plainly. No file names, no framework names, none of our jargon. "Only people you've added can post" instead of a sentence about permission functions. And it may not say "Done, it now does X." A finished build means the change is saved, not that you are looking at it; nearly half of edits change something other than the screen in front of you. So it says what it changed and invites you to look, and if you say nothing happened, it believes you.

Nothing to learn

There is no new mode to find and no new button to press. You type the same sentence into the same box, and the thing on the other end has read your app first. The best version of this change is the one you never notice, because the app you asked for simply shows up, and then keeps getting better while you talk.

Make something

Same box. Better listener.

Start building →

Enjoyed this? Get the next post by email

One email field. Real updates. No algorithm required.

Prefer a feed? RSS · Atom