Steven Murray/ Personal OS
livelast signal · 01 aug

I make AI less about chatting and more about doing.

I am an entrepreneur, builder, and recovering tab-hoarder currently building and learning in public. Each week I sift the AI-verse by actually doing — and send back signals: from what the vibe coders are shipping, and what it unlocks for whatever you're building.

Read the signalsSubscribe
2022
vibing since
weekly
signal cadence
in public
how I ship
//Latest signal
~/radar

Today on the radar

full radar

Holding Companies , Operating LLCs and Operating Agreements for your BUSINESS GOALS

Peter Diamandis is hosting Moonshots LIVE 2026 in LA on September 25 — 1,200 builders and optimists, $5M+ in XPRIZEs including $3.5M for optimistic sci-fi filmmaking and $2M for AI-powered businesses with real users and real revenue.

TechCrunch on the new wave of under-20 founders building real companies with AI tools — AI has shortened the path dramatically, but Silicon Valley's complicated relationship with youth entrepreneurship hasn't gone away.

~/changelog

What I learned this week

full log
learnedThe AI got everything to merge-ready. Nothing got merged.I audited my own projects this week expecting to find half-finished work. Almost the opposite — nearly everything was built, reviewed, tested, and sitting on a branch nobody merged. The bottleneck moved. It used to be building. Now it's the last mile: the merge, the deploy, the two-minute config step only I can do. The agent takes it to the door and stops, and I'd stopped noticing the door was there.
learnedStaying on target is as much a human problem as a machine oneI am finding a problem with sprawling building that needs to be solved by staying tight with single instruction delivery and focus. If scopes are big, things can go wild, and the discipline to stay on target is as much a human issue as machine.
learnedI asked for housekeeping and got a sweep across twenty repos.I said "let's do some house cleaning, repos and publishing" while we were mid-way through fixing one thing. What came back was a full audit of every repo in the workspace — branch switches and commits in two projects I hadn't thought about in weeks — and the actual blocker, an expired token, got buried three screens up. Nothing it did was wrong. It just answered the biggest reading of what I said instead of the smallest. That's on me: "house cleaning" meant something specific in my head and nothing specific out loud.
learnedA second model didn't catch the bug. A properly briefed one did.I wired OpenAI's Codex into my Claude Code setup this week, expecting the value to come from a different model family looking at the same code. It did find things. But the review that actually caught the serious bug was the one I'd written a real brief for — the requirements, the failure modes, "be sceptical, green tests are weak evidence here". The other got a bare command with no instructions, because the flag I needed turned out to be mutually exclusive with a custom prompt. So I wasn't comparing models at all, I was comparing how much context I'd bothered to give. Diversity helped. Briefing helped more.
learnedLayered AI code review caught three deploy-killing bugs. Production still found a fourth by morning.I had an agent pipeline build a full options-trading strategy in a day — spec, plan, 13 tasks, each implemented and reviewed by separate agents. The final adversarial review caught three bugs that would have bricked the deploy. Felt bulletproof. Then the first real short position hit the account overnight and a sign-format quirk in the broker's API — one no test or review could have seen, because it only exists on live data — crashed every tick until morning. Reviews catch classes of bugs. Only production catches reality.
~/building

Things I’m building

all work
~/activity

Live from the workshop

personal-osSteven Personal OS: RESEND IS LIVE (2026-07-29) — the newsletter's long-standing blocker is CLEARED.active RESEND IS LIVE (2026-07-29) — the newsletter's long-standing blocker is CLEARED. `send.steven-murray.com` verified in Resend (region eu-west-1); MX + SPF + DKIM at GoDaddy. Vercel prod has RESEND_API_KEY + RESEND_FROM=`steven@send.steven-murray.com` (BARE address — api/subscribe/route.ts already wraps it as `Steven Murray <…>`; a display-name value would nest and Resend would reject every send). NEWSLETTER_CONFIRM_SECRET not needed, it falls back to OS_COCKPIT_SECRET. Deployed dpl_DiGZDnt. Double-opt-in E2E verified LIVE: POST /api/subscribe → {ok:true,confirmSent:true} + row status='pending'. ⚠ REMAINING: Steven to click the confirm link and check inbox-vs-spam — the root domain carries a GoDaddy DMARC `p=reject` (relaxed alignment, so DKIM+SPF both align and it should pass, but first-send placement is unproven). ⚠ rua= points at GoDaddy's address, not Steven's, so he gets NO DMARC failure reports. ⚠ Resend free tier = 3,000/mo, 100/day — a daily mailer to a real list breaks that. NEWSLETTER SEQUENCING IS AN OPEN CALL. Spec 2026-07-24-newsletter-launch-design.md Phase 2 does DAILY radar mailer first, WEEKLY second. Recommendation on the table (unanswered): invert it. The weekly (curated best-of + Steven's take) is the differentiated product, needs no per-subscriber batching, and can ship to a list of one immediately; the daily pure-radar mailer is a commodity a founder audience already has twenty of. Also: real subscriber count is ZERO — the single row is `de.lgadod.a.n.i.elbc@gmail.com`, a bot signup. The highest-leverage growth action (point 7,775 LinkedIn followers at the signup) is currently LAST in the sequence, behind a product that cannot send. Confirm-email copy still pitches the DAILY radar ('Curated signals for founders and builders — AI, leadership, startups and beyond') in src/app/api/subscribe/route.ts. If the weekly leads, rewrite before any real signup sees it. ARTICLES SECTION is the live need (07-09): Steven's first article 'The build got cheap. That's when the real work showed up.' has an APPROVED body at `drafts/articles/2026-07-09-the-build-got-cheap.md` (essay on AI making ALIGNMENT cheap, not just building; spec-as-bible reframe; scope-creep-when-cheap; north-star-holds). BUT the standalone page attempt at `/content/articles/the-build-got-cheap` was REJECTED by Steven — styling weak + articles need their OWN proper section, not a one-off route. Rework: build a real Articles section (index/listing + reading template + nav) with stronger styling — this is the 'Article Studio' need — THEN publish (add `os_signals` row `channel='article'` + prod). Uncommitted WIP on disk: the route, `Artwork.tsx` (convergence-field hero + wave), `PhasesLoop.tsx`, anonymised UI fragments under `public/media/articles/build-got-cheap/` — salvage or rebuild. Gated preview exists (steven-personal-…vercel.app, not aliased → harmless). —— PRIOR: THE FORGE DEPLOYED → forge.steven-murray.com (own gate; cockpit BUILD→The Forge live). PUBLIC RADAR LIVE (07-07): /signals daily AI radar + home strip. Newsletter double-opt-in BUILT but DORMANT (needs personal Resend acct + verified send.steven-murray.com + RESEND_API_KEY/RESEND_FROM). X handle @stevens_show. Also: Resend setup · VPS X-scraper pull · housekeeping (Vercel Analytics, GitHub remote) · Phase 4.
PostsHow Netflix's AI agents find, fix, and canary performance bugsAI-assisted coding is quietly making performance worse, because it produces code optimised for write speed, not run speed. The performance debt is growing while everyone celebrates the velocity. Netflix shipped a code fix to production with no human in the loop. Live traffic, real canary split, no regression allowed before it went out. Rajat Shah's team built an agent that took a call stack, traced the bug to the exact source line, wrote the fix, and validated it — the full loop, unattended. I scan the conference talks and pull out what's worth your attention so you can skip the sifting, and this one from Rajat is worth watching. The bug itself wasn't the interesting part. The interesting part was that catching it the normal way — profiling, flamegraph, trace, fix, validate — takes long enough that inefficiencies just sit in production leaking CPU for months before anyone goes looking. The agent collapsed that whole process in one session. Then found the same pattern in seven other services while it was there. This is where agents stop being a productivity story and start being an infrastructure one. https://www.youtube.com/watch?v=CgsWxRUY5Eo
PostsWhat I learned last week 5 things I though worth sharing5 things this week worth sharing. These five actually changed how I'm working. Dan Farrelly, Inngest's CTO, wrote that agent architecture has a half-life of about six months. I've rebuilt mine twice now. He's right, and the thing I've noticed that actually survives each rebuild isn't the framework — it's the mental model of what you're trying to automate. EQT's €5bn fund is reportedly in talks to lead a Mistral round. European AI is finally attracting the kind of institutional capital that usually follows conviction rather than noise. Anthropic's $1.5bn copyright settlement just got approved. The case is closed, but the question of what training data means for model ownership hasn't gone anywhere. MCP, the protocol powering most agent integrations, just got simpler with stateless sessions, which drops the barrier to adoption a lot. If you're building with agents, that one matters. And Simon Willison broke down why Kimi K3 topping the frontend code benchmark is less interesting than the pricing shift underneath it. Performance is table stakes now. The economics is where things get interesting. Full list is on steven-murray.com/content.
the-forgeThe Forge: ARTICLE OUTPUT QUALITY is the live problem (Steven 2026-07-27: 'the article output was…active ARTICLE OUTPUT QUALITY is the live problem (Steven 2026-07-27: 'the article output was poor'). Content v2 A/B/C are all SHIPPED and every SDD task passed review — but NO task in the spec ever measured whether the essay is GOOD. The ledger graded 'does the rewriter route return 200', not the writing. Fix the generation quality (voice, structure, argument), not the plumbing. Spec-design lesson to carry elsewhere: for any generative feature, put an explicit output-quality gate in the plan (a human accept/reject on real output, like signal-layer's persona acceptance rounds) or the ledger will report COMPLETE on bad output. Still open behind that: SSO v2 (share os_session across subdomains; gateAuth.verifySessionValue is the swap seam) · first REAL position publish
hybrid-aHybrid Athleticism: WATCH next week/block generation for conditioning variety (07-26 fix): rotation warning…active WATCH next week/block generation for conditioning variety (07-26 fix): rotation warning appears in logs if the format repeats; Block 5 strategy must come out intent-only (no example workouts) VISUAL VERIFICATION CLOSED 2026-07-27 (Steven: 'surfaces are good') — logger %TM+AMRAP badge, session-close summary, rebased week view all confirmed. No visual debt outstanding. NEXT UP (spec review 07-27): the endurance-domain-wiring plan is FEATURE COMPLETE and merged (0e90d58). The remaining backlog below is unspecced follow-on work — pick the check-in/readiness loop first: it is the only item with dead code already shipped (submitSelfReport has zero callers, athlete_self_reports has 0 rows), so it is half-built and invisible. Commentary lifecycle still unfixed: coach_notes copied generation → inventory → workout with no owner or clearing step; regeneration leaves stale notes Close-block nudge may fire early from 2026-08-10 (mesocycles.end_date is GENERATED, can't move with a rebase) — key it off all-sessions-resolved instead Wire the check-in/readiness loop (submitSelfReport etc. still zero-caller; athlete_self_reports still 0 rows) nextSetRecommendation → WorkoutLogger (~10 lines; delta already computed and rendered) Garmin OAuth re-pair (token paste or CSV fallback) Possible polish: stale-sessions banner shows date range not just 'week 1'; 'log it late' path from stale modal (backdate exists but no launch UI for past-week workouts)
jarvisHouse Jarvis: P0 ROOT CAUSE FOUND 2026-07-27 (supersedes 'set up forward filters'): the 24-Jun Google…active P0 ROOT CAUSE FOUND 2026-07-27 (supersedes 'set up forward filters'): the 24-Jun Google account RECOVERY + 2FA-enable on JarvisMurrayOG revoked BOTH the forwarding authorisation AND the OAuth refresh token. Fix = re-confirm forwarding (the 'Gmail Forwarding Confirmation - Receive Mail from incubatepro@gmail.com' mail is sitting unactioned in the Jarvis INBOX, dated 24 Jun) + re-authorise Google OAuth. OAuth is DEAD: jarvis-heartbeat.service AND jarvis-backup.service both fail on Google OAuth 400 at oauth2.googleapis.com/token → morning+evening heartbeats never fire and the nightly Drive backup has not run. 2 of 4 timers dead. Visual smoke on the live fridge (auth-gated; Steven eyeballing) — all 5 tabs now live-data Voice on-device check (iPad Safari mic permission + en-GB) — logic tested, hardware untested Follow-ups (deferred minors, see repo .superpowers/sdd/progress.md): client refresh at local midnight (always-on iPad staleness); multi-day span fan-out across week strip; past-dated birthday invisible until refetch after add; mid-loop flush-failure poison persistence 07-13 hosting Q answered: house-jarvis is its OWN Vercel project (steven-dig-ins-projects team); only the DOMAIN is shared (subdomain of steven-murray.com apex). Offered dedicated domain — Steven not yet decided.
~/newsletter

One AI signal newsletter a week.
Zero hype, mostly.

What the vibe coders are building and what AI is unlocking for builders and operators. Written for people who ship.

No spam · unsubscribe whenever, no hard feelings