Everyone went home with an app
A volunteer team in Oregon organized the state's first in-person AI hackathon. We sponsored the credits. Here's what happened when fifty builders got seven hours and a deadline.
Read the post →
Field notes, evals, and stories from building the no-code app builder that turns a sentence into a working app.
A volunteer team in Oregon organized the state's first in-person AI hackathon. We sponsored the credits. Here's what happened when fifty builders got seven hours and a deadline.
Read the post →One email field. Real updates. No algorithm required.
A step-by-step Strudel tutorial where every example is a live drum machine running in the page. One line of code fetches the whole music engine at play time — nothing to install, nothing to bundle, and your app ships only your own code.
Read the post →
Pickathon liked the fan-built schedule planner so much they're now co-marketing it as Pick. Plan. Share. If you run a festival like Bumbershoot, Outside Lands, Sasquatch!, or Newport Folk, the same app is a remix away — you just point a coding agent at your schedule feed.
Read the post →
Everywhere else on the web, calling an AI model from a browser leaks a key, so every model believes an AI call needs a server. Ours does not, and our building agent kept adding one anyway. Here is how we taught it the page's own habit in two sentences, without ever saying the word no.
Read the post →
We put our home page in front of ten people we had never met, on their own phones, with a recorder running. Eight of the nine who made an account lost the first thing they typed. Here is what they built, what broke, and what we changed the same week.
Read the post →
A lawyer's first prompt asked for an intake form whose submissions land in Clio. Now any Vibes app can hand a record to a Zapier Catch Hook, and Zapier carries it into Clio, Slack, Google Sheets or an inbox. One Zap, one saved URL, nothing to build.
Read the post →
One Vibes DIY user turned a small task app into the place their AI assistant keeps every household chore, bill dispute and follow-up. Here's the pattern: the app is the board you look at, and the same records are what the agent reads and writes.
Read the post →
The chat in front of your app stopped being a set of buttons and became one agent that reads your app, answers you, builds in two passes, and keeps working after you close the tab. It looks exactly the same.
Read the post →
The AI-accelerated haven't gone silent. They've shifted out of the visible spectrum. A word for what's happening to our friends, and what I'm doing instead.
Read the post →
Instead of handing an AI agent your whole inbox, put one slice of the problem in a vibe and let the agent apply for a seat. You approve it, it works inside the rules your app already enforces, and revoking it is removing a grant.
Read the post →
The technical sequel to the Strudel tutorial: how runtime imports actually work in a vibe, stress-tested with zaltz — a C-compiled-to-WASM synth running in an AudioWorklet, dynamically loaded from the CDN, with the AGPL lineage story told properly.
Read the post →
Part two of the browser drum machine tutorial: give it a memory. One hook turns the step sequencer into a shared groovebook — your saves appear instantly, sync in the background, and publish live to everyone reading this post.
Read the post →
The most useful software in your life is the software nobody would fund: too small, too specific, ten people want it. Here's what we removed so that class of thing can actually get made.
Read the post →
Most agent output is written for the person who would have done the work by hand — branches, file paths, a running commentary of green checkmarks. everybody-vibes is the mode that strips all of it out: results and pictures in the conversation, options side by side when it's a matter of taste, every change parked as a draft a human flips, and every word of shop talk moved onto the pull request. Install it in one line.
Read the post →
The one rule we enforce hardest on our code-generation prompts: never tell the model what not to do. A prohibition ships the exact spelling of the mistake into the context and raises its salience — so we teach only the good shape, fix the example instead of the rule, and point an automated gate at prompt edits that say "don't." Behind the scenes of how you school a code generator.
Read the post →
We built a no-footguns app platform for people who've never deployed anything, and it converged — genuinely unplanned — on the shape of an autonomous deployment system for AI agents. That convergence is our pitch to experts: a platform for everyone is the only kind whose abstractions can't afford to leak, and the only kind you can safely hand to a fleet.
Read the post →
The sequel to our festival-app detective story. The mystery ended with a twist: an empty app loaded almost as slowly as the real one, so the remaining fifteen seconds were ours — the platform's. This is the ledger of paying them down: a compiler shipped to people who only read, two innocent-looking import lines that dragged whole libraries along, a 60 KB fix we built, measured, and threw away, and the cache our own ad clicks could never hit.
Read the post →
A look back at how vibes-diy mcp came to be — the shell-vs-no-shell asymmetry that motivated it, and the design calls that gave Claude Desktop and Cowork a door into your vibe's live data.
Read the post →
Your Vibes app's database isn't a server you call over the network — it's a local replica on the device that answers instantly. Here's the whole path a write takes, in one diagram.
Read the post →
We didn't return to local-first for the manifesto — we returned because every loading screen we profiled ended at the same place: the network asking permission to show you your own data. The story of a cutover where almost every fix was a deletion.
Read the post →
We pulled access rules, sound effects, and backend wiring out of the first generation — and taught it to remember what it skipped. The app arrives faster, the skipped work comes back as an offer at exactly the right moment, and nothing gets locked in before you have the context to decide.
Read the post →
The first-build wait now plays the brand brief Jona Bechtolt of YACHT designed for us — as a pure-CSS storyboard cut from the PDF's own vectors. Along the way the loading screen learned semantics: a color face that means 'seconds away,' recovery that settles instead of rewinding, and status labels mined from the build stream.
Read the post →
A drum machine turned into four apps in a night — each one a remix of the last. Then we made the homepage work the same way: the remix chain IS the tutorial.
Read the post →
One platform-wide follow graph, and every app can build on it: a one-line audience label makes a doc visible to your followers, resolved live at read time — new followers see history instantly, an unfollow revokes instantly. Follows now ring the bell and land in the weekly digest — and a follow request to your private account reaches your phone.
Read the post →
A 40-line Node script opens the same live Fireproof database as your deployed vibe — writes flow both ways in real time, with no REST API, no schema migration, and no API keys to manage. The vibe is the always-on peer; your script just drops in.
Read the post →
A year ago this platform was a React SPA with no backend at all — its entire server story was vending an OpenRouter key into your browser. Today it's a stream-based platform with live data, access rules, and server-side AI. The retrospective, with the credit where it's owed: Meno Abels hardened the architecture everything since is built on.
Read the post →
We asked an agent to build our social mention-builds bot — @-mention us on Bluesky and the platform builds your app and replies with a screenshot. It surveyed the codebase and chose a vibe as the production home: scheduled backend, credential vault, access control, dashboard, all product primitives. When your own agents reach for your product to run your platform, that's what feature-complete looks like.
Read the post →
Feature velocity is way up, so we braced for a mountain of AI-generated cruft and ran a whole-monorepo housecleaning audit: five parallel explorer agents plus a dead-code linter. The files came back mostly clean. The debt was hiding between them — in workflows, manifests, and docs nobody rewrites.
Read the post →
We shipped a whole conditional-request pipeline — input-derived ETags, a 304 fast path, an edge cache — and none of it ever fired, because Cloudflare silently strips validators from HTML. Three plausible fixes died on the wire before a zone-settings dump found all four culprits.
Read the post →
Designing outbound fetch for user backends died in one sentence: the owner is an attacker in some cases. So trust comes from somewhere that isn't the tenant — the target's own CORS policy, a platform list where adding a host is a PR, and blessing people instead of approving hosts forever.
Read the post →
backend.js gets ctx.callAI: one await, text in, text out. No API key exists anywhere in your app — the platform places the call like a switchboard operator, meters it to the user who triggered it, and hands your server code the answer.
Read the post →
Every post on this blog now ships itself to Instagram, Threads, and Facebook — published by an owner-only vibe that keeps the API tokens as database records and rotates them on a schedule. Because the publisher is a vibe, one remix makes the whole machine yours.
Read the post →
How fast a user first sees their app is the product. In one July arc we cached the entire HTML serve at the edge, seeded SSR with real data, compiled the styles on the server, took the auth overlay off the critical path, started the first build before the browser even landed on the page, and made the reveal push-first instead of polled. Then dark mode handed us the invoice.
Read the post →
We extracted our agent working culture into a portable Claude Code skill. It doesn't make one change better — it makes ten parallel changes all land. Install it in any repo with one command.
Read the post →
Since April 1 the platform grew a live data layer, per-app access rules, a server side, in-app editing, a real CLI, DMs, server-rendered vibes, env vars and secrets — and this blog. The quarter in twelve headlines, with links to the deep dives.
Read the post →
We pulled the stats on 17 days of merges: 270 PRs, ~223k lines of churn, a median PR of 196 lines merged in under an hour, 95% agent-authored. The surprise wasn't the volume — it's that velocity and safety turned out to be the same property.
Read the post →
Everyone assumes an AI app generator must be an agent loop — a model reading files with tools, editing, iterating. Ours is a pure function: database state in, one streamed response out. That purity is load-bearing, and it's a strength, not a lag.
Read the post →
One new file — backend.js — runs on our servers for your app: answer webhooks at your own /_api URL, react to every saved document, and run work on a timer. Server writes go through the exact same access rules as user writes, so your permission model stays in one place.
Read the post →
A year of agent documentation, read straight from git history: a 103-line init file, a 326-line grab-bag, a hard split into version-controlled runbooks — and what each era says about the work we were shipping at the time.
Read the post →
A suggestion chip is a transform of the vibe you're on, and clicking it is real codegen. So we cache the result — a repeat click becomes an instant read instead of regenerating. The interesting part isn't the cache; it's the deny-by-default gate that decides who is allowed to read it.
Read the post →
We've always said 'make apps with your friends.' True — but it undersold the thing. The same tool that builds a trivia app for the group chat takes the order and the payment for the taco truck, and retires the spreadsheet a small shop has been fighting for years. Here's the repositioning, and why 'we build apps' is the weakest thing we could say.
Read the post →
The /vibe page now meets you where you are: a non-owner edit forks the app to your handle in place, owners get a private draft they can publish in one tap, and small indicators always tell you whether you're the author, an admin, or a read-only guest.
Read the post →
Generated apps used to default to owner-gated permissions — broken for everyone but the creator. Here's how we flipped the default to author-owned, steered the model toward multiplayer without ever saying 'don't,' and built a metric so the prompt could iterate itself.
Read the post →
Every deployed Vibe serves both a live screenshot and its own source. That closes a visual feedback loop an agent can run alone — see the app, fix the code, push, look again — and fan out across dozens of apps at once.
Read the post →
Every edit to the system prompt changes every app anyone generates. Here's the harness that measures generation quality — 46 prompts in three sets, scored 1–5, fanned out across a Workflow pipeline — so we know within a coffee break whether a change made things better or worse.
Read the post →
We tried to recreate Pickathon's built-out 2026 app — data model, views, and a fiddly access policy — from a single plain-English prompt. It got ~90% there on description alone; a URL and a one-sentence schema closed the rest.
Read the post →