plumtreesystems/neo4j-bolt
Connect your Laravel or PHP application to Neo4j graph databases over the Bolt protocol. This package offers a lightweight client for running Cypher queries and working with graph data directly from your PHP code.
Architecture fit: plumtreesystems/neo4j-bolt is a low-level PHP driver for Neo4j’s Bolt binary protocol, not a Laravel-native package. It does not provide a service provider, facade, configuration publishing, Eloquent-style models, or Laravel-oriented query builder. It can fit a Laravel application only if graph access is isolated behind an internal adapter/repository layer and the team explicitly wants direct Cypher-over-Bolt access.
Integration feasibility: Feasible for a narrow proof of concept, but not a drop-in Laravel integration. Work would include Composer/version constraints, connection lifecycle management, authentication/TLS configuration, transaction handling, result mapping, exception translation, and health checks. The package’s age and low adoption mean integration effort is dominated by compatibility validation rather than feature configuration.
Technical risk: High. The last release was 2020, the project has 11 stars and zero dependents, and there is no evidence of active maintenance. Bolt protocol compatibility with modern Neo4j versions is the primary risk, followed by PHP 8.x/Laravel 9+/10+/11 compatibility, sparse documentation, unclear test coverage, and no demonstrated security-response process. MIT licensing is favorable, but production use likely implies internally owning or forking the driver.
Key questions:
Stack fit: Best suited as an infrastructure adapter inside a Laravel service, job, or console command—not as a domain model layer. Expose a small internal interface such as GraphClient with methods for runQuery, transaction, and healthCheck, keeping the package behind that boundary. Configure via environment variables and a singleton connection managed by Laravel’s container.
Migration path: Start with a time-boxed spike against the exact target Neo4j version. Pin the package version and wrap it immediately. If the spike passes, use a strangler-style rollout: one bounded graph use case, staging validation, then canary traffic. Maintain a fallback path to Neo4j’s HTTP API or a maintained PHP driver. Avoid spreading raw Bolt/driver calls across the codebase.
Compatibility: Build a compatibility matrix before commitment: PHP version, Laravel version, Composer resolution, Neo4j server version, Bolt protocol version, auth/TLS settings, and required Cypher features. Validate PHP-FPM and queue-worker behavior separately. Treat Laravel 9+ and PHP 8.x support as unproven until tested.
Sequencing:
Maintenance: Expect to self-maintain. The package is likely to require pinned dependencies, internal patches, and periodic compatibility checks. Budget engineering time for fork ownership, dependency updates, and security review. MIT license reduces legal friction but does not reduce operational ownership.
Support: Community-only support with limited evidence of active maintainers. Production use should have a named internal owner, runbooks, escalation path, and a tested fallback to an alternative driver or Neo4j HTTP API.
Scaling: Uncertain without load testing. PHP’s request model means connection lifecycle and pooling must be managed carefully, especially across PHP-FPM workers and Laravel queues. Neo4j cluster routing, causal consistency, and result streaming behavior should be explicitly tested if scale or HA is required.
Failure modes: Bolt protocol mismatch after Neo4j upgrade, PHP/Laravel incompatibility, authentication/TLS failures, connection exhaustion, query timeouts, partial transaction handling, large-result memory pressure, and untranslated driver exceptions leaking into Laravel error handling. Monitoring should cover connection count, query latency, error rate, timeout rate, and Neo4j server health.
Ramp-up: Moderate to high. Developers need Neo4j/Cypher and Bolt fundamentals in addition to Laravel experience. Low adoption and sparse documentation increase onboarding time. A narrow adapter layer and internal examples can reduce ramp-up, but the team should assume ownership of driver behavior rather than relying on upstream guidance.
How can I help you explore Laravel packages today?