# Mozex Labs > Senior Laravel and PHP engineering. Open-source packages for Laravel and the Anthropic API, plus long-form articles on production Laravel problems. Every page on this site is also available as raw markdown by appending .md to its URL. ## Site - [Home](https://mozex.dev): Services, open-source packages, and contact details. - [Blog](https://mozex.dev/blog): Index of all articles. ## Articles - [Two Fixes Made Claude Code 15x Faster Per Command on Windows](https://mozex.dev/blog/24-two-fixes-made-claude-code-15x-faster-per-command-on-windows): I ran echo in Claude Code 178 times last week. Median time: 7,395 milliseconds. Not a build. Not a test suite. A command that prints a word and exits. I'd filtered down to commands that do nothing at… - [Anthropic Prompt Caching in Laravel: A Practical Guide](https://mozex.dev/blog/18-anthropic-prompt-caching-in-laravel-a-practical-guide): Running Sevantia, our AI chat product, I watched the same 2,800-token system prompt get re-billed on every single user message. Multiply that by thousands of conversations a day and you're paying Anth… - [5 Laravel Scheduler Failures That Only Show Up in Production](https://mozex.dev/blog/17-5-laravel-scheduler-failures-that-only-show-up-in-production): "But it worked locally." The Laravel scheduler is the duct tape of every production app I've worked on. It triggers the reports, cleans up expired data, pings the health checks, rotates the tokens, se… - [The Laravel Bug Your Tests Will Never Catch](https://mozex.dev/blog/16-the-laravel-bug-your-tests-will-never-catch): In a previous post, I listed "your job runs before the data exists" as one of five queue failures that only show up in production. I showed the afterCommit() fix and moved on. But that post didn't ans… - [How I Audit a New Laravel Codebase in 30 Minutes](https://mozex.dev/blog/15-how-i-audit-a-new-laravel-codebase-in-30-minutes): When a client asks me to look at their Laravel application, I don't start by reading code. I run a specific sequence of checks that tells me more in 30 minutes than reading source files for a full day… - [A Practical Guide to Database Indexing in Laravel](https://mozex.dev/blog/14-a-practical-guide-to-database-indexing-in-laravel): Your queries work fine in development. Fifty rows, instant responses, no complaints. Then you deploy to production, real data piles up, and a page that loaded in 200ms takes four seconds. The problem… - [Building a Production-Ready Laravel MCP Server](https://mozex.dev/blog/13-building-a-production-ready-laravel-mcp-server): Every Laravel developer has seen the MCP hype by now. Laravel's tagline changed to "The clean stack for Artisans and agents." The laravel/mcp package landed, tutorials appeared overnight, and suddenly… - [5 Laravel Queue Failures That Only Show Up in Production](https://mozex.dev/blog/12-5-laravel-queue-failures-that-only-show-up-in-production): Your queue works perfectly in local. Every job dispatches, processes, and completes without a hitch. Then you deploy to production with real traffic, real concurrency, and real third-party APIs, and t… - [Use Laravel's route(), url(), and asset() Helpers Inside Markdown](https://mozex.dev/blog/11-use-laravels-route-url-and-asset-helpers-inside-markdown): I had a Laravel project designed to be white-labeled. Swap an env file, change the domain, and the whole application launches as a completely different product. The problem was the Markdown files. - [How a Rejected PR Became Laravel Scout Bulk Actions](https://mozex.dev/blog/10-how-a-rejected-pr-became-laravel-scout-bulk-actions): If you've used Laravel Scout on a project with more than a couple of searchable models, you know the drill. You change something in your toSearchableArray(), and now you need to flush and reimport eve… - [Why I Built a PHP Client for Anthropic's Claude API](https://mozex.dev/blog/9-why-i-built-a-php-client-for-anthropics-claude-api): In May 2024, I published the first version of anthropic-php, a PHP client for Anthropic's Claude API. Nearly two years and 370,000+ downloads later, it's the most installed dedicated Anthropic SDK in… - [My Zero-Downtime Deployment Setup for Laravel](https://mozex.dev/blog/8-my-zero-downtime-deployment-setup-for-laravel): I've been deploying Laravel applications for over a decade. Started with custom bash scripts. Moved to Laravel Envoy. Then Laravel Envoyer, which worked great for a long time. Eventually moved away fr… - [WooCommerce to Laravel Migration: The Parts Nobody Talks About](https://mozex.dev/blog/6-woocommerce-to-laravel-migration-the-parts-nobody-talks-about): If you've run a WooCommerce store long enough, you've felt the slowdown. Pages take longer to load. The admin panel becomes sluggish. Checkout starts timing out during traffic spikes. You throw cachin… - [Which AI Package Should You Actually Use in Laravel?](https://mozex.dev/blog/5-which-ai-package-should-you-actually-use-in-laravel): Eighteen months ago, using Claude or GPT from a Laravel app meant writing raw HTTP calls or using whatever half-maintained wrapper you could find on Packagist. Today there are four solid options, all… - [Why I Built My Own Laravel Modules Package](https://mozex.dev/blog/4-why-i-built-my-own-laravel-modules-package): In late 2023, I was working on a large Laravel project and hit a point where the app/ directory had become a mess. Models, controllers, services, policies, listeners, jobs, notifications, all thrown i… - [Wispr Flow: Why I Dictate Everything Instead of Typing](https://mozex.dev/blog/3-wispr-flow-why-i-dictate-everything-instead-of-typing): This is the first post in what I plan to be a collection of tools and software I use regularly. No sponsorships, no affiliate links, no partnerships. Just software that changed how I work, shared beca… - [Fixing Pest Sharding for Modular Laravel Applications](https://mozex.dev/blog/2-fixing-pest-sharding-for-modular-laravel-applications): When Pest v4 dropped, one feature got my attention right away: test sharding. My CI pipelines were painfully slow, and splitting tests across parallel GitHub Actions runners seemed like the obvious fi… - [My Claude Code Status Line: Usage, Pace, and Context at a Glance](https://mozex.dev/blog/1-my-claude-code-status-line-usage-pace-and-context-at-a-glance): I've been using Claude Code as my daily driver for a while now. One thing that kept bugging me was not knowing where I stood with my usage limits until I actually hit them. Claude Code has a status li… ## Documentation - [Documentation index](https://mozex.dev/docs): All packages with their current documentation. - [mozex/anthropic-php](https://mozex.dev/docs/anthropic-php/v1): PHP client for the Anthropic API: messages, streaming, tool use, thinking, web search, code execution, batches, and more. - [mozex/anthropic-laravel](https://mozex.dev/docs/anthropic-laravel/v1): Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches. - [mozex/laravel-scout-bulk-actions](https://mozex.dev/docs/laravel-scout-bulk-actions/v1): Import, flush, and queue-import all your Laravel Scout searchable models at once. Auto-discovers models, runs in bulk, tracks progress. - [mozex/laravel-modules](https://mozex.dev/docs/laravel-modules/v3): Laravel package that auto-discovers and registers module assets (configs, routes, views, migrations, commands, Livewire, Filament, Nova, and more) from a Modules/ directory at the project root. - [mozex/commonmark-routes](https://mozex.dev/docs/commonmark-routes/v1): A CommonMark extension that lets you use Laravel's route(), url(), and asset() helpers in Markdown links and images. - [mozex/laravel-searchable](https://mozex.dev/docs/laravel-searchable/v1): Advanced multi-column, relation, and morph search for Laravel Eloquent models - [mozex/laravel-worktree](https://mozex.dev/docs/laravel-worktree/v1): Create and tear down isolated Laravel Herd git worktrees, each with its own site URL and databases - [mozex/laravel-test-lanes](https://mozex.dev/docs/laravel-test-lanes/v1): Give every concurrent Laravel test run its own databases by claiming a machine-unique lane for each process