Lookout
000 015 030 045 060 075 090 105 120 135 150 165 180 195 210 225 240 255 270 285 300 315 330 345 360
3 min read Tom Shafer

Catching my own bugs: why I built Lookout

I was tired of finding production errors from customer emails and paying enterprise prices for noise. So I built an error tracker that installs in one line, groups the flood into issues, and wakes the right person — free to start.

The worst way to learn your app is broken is a customer telling you. The second worst is a 2 a.m. alert that fires for the hundredth identical exception while the one that actually matters scrolls past.

I've shipped Laravel apps for years, and I kept landing in the same spot: either I had no real error tracking and found out about bugs the embarrassing way, or I had a tool that cost enterprise money and buried the one detail I needed behind three clicks and a wall of noise. Neither felt built for someone shipping a real app on a real budget.

So I'm building Lookout — error tracking and observability for every stack — and I'm building it in the open.

What it actually does

The pitch is short on purpose:

  • One line to integrate. composer require lookout/tracing, run the installer, and errors start flowing. No agent to babysit, no sidecar — just HTTP.
  • Laravel-deep, not Laravel-generic. It traces Blade views, Eloquent queries, and queued jobs, and it flags N+1 queries and slow queries on its own. It understands the framework you actually wrote.
  • Signal, not noise. Fingerprint grouping rolls a thousand copies of the same exception into one issue. Alerts fire on thresholds over a 1h or 24h window and wake the right person — not the whole team, every time.
  • Free that's genuinely usable. The Starter tier is 10,000 events a month and a project, with no credit card. It's enough to put real production traffic through and decide for yourself.

Why "for every stack" matters even if you're all-in on Laravel

The deep integration is Laravel-first, but the ingest contract is plain HTTP and JSON. That's a deliberate hedge against lock-in: the day you add a Node worker, a Rails service, a WordPress marketing site, or a mobile app, you're not shopping for a second tool. Same dashboard, same alerts, same project. Lookout already speaks PHP, JavaScript, Ruby, Python, Go, Swift, Kotlin, and WordPress.

Building it in the open

Every week I write up what I actually shipped — the wins, the dead ends, the load-bearing-but-boring decisions. Partly that's accountability. Mostly it's that I'd rather earn your trust by showing the work than by buying an ad that tells you to trust me.

If you've ever found out about a production bug from an angry email, that's the feeling Lookout is built to delete.

Stand watch on your Laravel app — free. Ten minutes from now you could have your first real error grouped, traced, and waiting for you instead of your customers.

build-in-public laravel observability