pushword/conversation
Pushword Conversation is a Laravel package for adding chat and messaging features to your app. It provides Eloquent-friendly models and APIs for conversations, participants, and messages, making it easy to build threaded discussions, inboxes, or chat histories.
Verdict up front: pushword/conversation is not a Laravel package and should not be evaluated as one. It is a subpackage of the Pushword monorepo — a Symfony CMS assembled from bundles — and inherits the monorepo's toolchain (bin/console from packages/dev-app/, composer assets, Doctrine schema updates, Twig, EasyAdmin, EditorJS). Any plan that assumes composer require pushword/conversation inside a Laravel app is a non-starter.
Architecture fit
dist artifacts. Bridging means maintaining a fork or a shim — an ongoing cost with no upstream support.AGENTS.md, task routing, --format agent|text CLI output). That is an unusually good signal for AI-assisted development and a poor signal for human onboarding — there is little conventional "install and configure" narrative in what was supplied.doctrine:schema:update --force. That is an accepted pattern for a self-hosted CMF, but it is a governance problem anywhere change control exists.Integration feasibility
var/cache/pushword-pools that deliberately survives deploys.dist output is committed and must be built in a specific order (packages/admin's build empties src/Resources/public/, so admin-monaco-editor must build after it). Vendoring this into a downstream release pipeline needs a documented build step, not just a composer install.Technical risk
conversation) does not obviously correspond to the CMS description. Scope is ambiguous from the outside.StateBlock.updatePreview() running before inputs exist, inline tools losing state via input.value =, Monaco mounting into 0×0 hidden panels. Documented is better than undocumented, but the density indicates a system where mistakes fail quietly.Key questions to answer before any commitment
pushword/conversation actually do — conversation persistence, an AI-agent chat surface, or something else — and is it separable from core/admin?upgrade/next-release.md mechanism is disciplined, but does it hold across major versions?conversation require the admin bundle, and therefore EasyAdmin and its asset build?Stack fit
Migration path
packages/dev-app/ against a copy of real content and real traffic shapes.Compatibility
Sequencing
--format agent CLI and AGENTS.md routing are genuinely differentiating; schedule them last so they are a bonus, not a dependency.Fallback Keep an exit at every gate. If the pilot fails, the fallback is a maintained CMS or a bespoke content model — the sunk cost should never exceed the spike plus pilot.
Maintenance
doctrine:schema:update --force in production is the single largest operational concern. It is imperative and non-reviewable; on a system of any size it needs a change-control exception or a generated-migration wrapper you maintain yourself.cache:clear and awareness that the Markdown fragment pool survives it. Changes to render output require bumping MarkdownParser::CACHE_VERSION (and SplitContent::TOC_CACHE_VERSION for TOC). Miss this and you ship stale content that looks like a caching bug for days.Support
Scaling
Resources/public accordingly.Failure modes to instrument
dist assets after an admin build.Ramp-up
packages/dev-app/, ~1 month to be safe with the admin/editor layer.AGENTS.md, task routing, compact JSON CLI output) will accelerate AI-assisted contribution noticeably — that is this package's most distinctive asset and worth weighting in the decision. It does not compensate for the absence of human-facing install documentation or third-party adoption.Recommendation: pilot only. Do not standardize, and do not build a Laravel bridge. Re-evaluate after the spike produces a working headless contract and a named internal owner.
How can I help you explore Laravel packages today?