PR

particle-academy/prism

particle-academy/prism

Maintained fork of prism-php/prism -- the Laravel LLM integration layer the kit builds on. Unified text / structured / streaming across providers, with the telemetry that makes per-run AI spend attributable. fancy-flow-php's PrismLlmClient adapter targets it, and credentials resolve at call time rather than from env, so DB-backed provider rows and queue workers are first-class.

Backend · renders no UIPHP
Part of Prism9 packages, one productSee the family
Backend · renders no UI
Nothing to preview — install it and call the typed API, or hand it to an agent.
$composer require particle-academy/prism
Why
Half the suite's server capabilities eventually want to call a model, and the Laravel ecosystem's answer is Prism. We depend on it heavily enough that waiting on upstream for a provider fix is not a position we want to be in, so we maintain a fork and keep it moving — it currently runs ahead of upstream. It is not a Fancy package and does not pretend to be one: it is someone else's excellent library that we carry, patch, and release, and it is listed here because a dependency nobody can see is a dependency nobody maintains. It sat unregistered for months, during which nothing tracked its releases and nothing tracked what it depended on — which is precisely how a vendor deprecation inside one of its providers went unnoticed until a consumer asked an unrelated question.
What
A Laravel integration layer for large language models, giving one API across providers for text generation, structured output against a schema, streaming, embeddings, and tool use. The part the kit leans on hardest is the telemetry: token usage and cost surface per request, which is what makes AI spend attributable per run, per node, and per organisation. A call that goes around Prism is spend a ledger does not have, and per-org billing that is quietly wrong is worse than billing that fails.
How
composer require particle-academy/prism. The kit reaches it through a seam rather than directly: FancyFlow\Capabilities\Adapters\PrismLlmClient implements fancy-flow-php's LlmClient contract, and prism-php/prism stays under composer suggest with every entry point isAvailable()-guarded — so fancy-flow's core keeps its no-runtime-dependencies rule and an app that already uses Prism gets a working llm_router with no glue. Credentials resolve at call time, not at boot. PrismLlmClient takes a callable mapping a host credential reference to provider config, applied through ->using($provider, $model, $config), so API keys living on a database row rather than in .env — and queue workers with no request-scoped config — are the supported case rather than the awkward one.

API surface

Headless package — drive it from code or an agent. No component grid.

This package renders no UI surface. It exposes a typed PHP API; issues are tracked on GitHub.
No API table yet. A supporting package with no rendered components, so there are no live demos — reach for the README + Changelog for the full reference, and the Issues link to file feedback.
What next
Install it, then call the API from your code or over MCP.