PHP deserved better AI tooling.
So we started building it, in public, one package at a time.
The gap was obvious.
When AI features started landing in real applications, the tooling around them grew up almost entirely in Python and JavaScript. PHP teams were left wiring HTTP clients by hand and keeping prompts in string literals.
Laravel's AI SDK closed part of that gap. But the layer around it stayed missing: no standard way to version a prompt, no middleware between an agent and a provider, no answer to what happens when the model does something you didn't plan for.
PromptPHP exists to build that layer. Deck came first, because prompts scattered through controllers were the problem we hit hardest. Intercept followed, because once agents could call tools, "it usually behaves" stopped being good enough.
The studio around those packages funds the work. Client engineering keeps us honest about what production actually demands, and commercial products pay for the maintenance that open source alone never does.
Victor Ukam
Builds and maintains Deck and Intercept, writes most of what appears on the blog, and leads client engagements. Works in PHP and Laravel, and has opinions about middleware.
Opinions the code actually holds.
These aren't values on a wall. Each one shows up as a design decision in something we've shipped.
Prompts are source code
If a string changes model behaviour, it belongs in version control and in code review. That belief is the entire reason Deck stores prompts as versioned files rather than database rows.
Trust is a boundary, and it's yours
User text should be screened inside your application, before it becomes the provider's problem. Guards that run anywhere else are someone else's guarantee.
Destructive actions need consent
A tool that writes or deletes should wait for a human or an explicit policy to agree. Confidence from a model is not consent.
Small and permanent beats broad and abandoned
Each package does one thing completely. Narrow scope is what makes it possible to maintain them for years rather than months.
Free stays free
Nothing released under MIT gets fenced off later. Commercial products are built alongside the open source, never carved out of it.
A short history.
Prompt Deck ships
The first package, born out of a real project where prompts had spread across a dozen controllers and nobody could say which version was live.
Featured in Laravel News
The wider ecosystem turned out to have the same problem, which was the signal that this was worth continuing.
Intercept ships
Middleware guardrails for Laravel AI agents — security, observability, performance and guidance — after tool-calling made the risks concrete.
PromptPHP becomes the studio
Prompt Deck becomes Deck by PromptPHP, the packages move under one organisation, and client engineering and commercial products join the open source work.
Evaluation and hosted tooling
Extending outward from prompts and middleware. Announced first to the newsletter.
Built with the community
Both packages take contributions, and plenty of what's shipped came from people who hit a problem and sent a fix rather than a complaint. Issues, pull requests and hard questions are all genuinely welcome.
If the packages have saved you time, sponsorship is what keeps the maintenance sustainable — it buys the hours that go into releases, security notes and answering issues.