Skip to main content

Introduction

Under active development

Nexus is under active development. The core actor model, supervision, and persistence APIs are considered stable. Worker-pool and cluster APIs may still evolve.

Nexus is an actor system for PHP 8.5+, bringing the actor model — lightweight concurrent entities communicating through asynchronous message passing — to the PHP ecosystem as a fully typed, composable library.

The problem

PHP has long been treated as a request-response language. Building concurrent systems, fault-tolerant services, or distributed computing pipelines typically means reaching for external queues, cron jobs, and glue code across multiple infrastructure components. This works, but it spreads concurrency concerns across operational tooling rather than expressing them in application code.

Nexus addresses this by giving PHP developers a structured concurrency model where:

  • Concurrent workloads are expressed as actors that process messages one at a time, eliminating shared-state bugs by design.
  • Fault tolerance is built into the hierarchy: parent actors supervise their children and decide how to handle failures (restart, stop, escalate) without bringing down the entire system.
  • Distributed computing becomes possible through location-transparent actor references — the same ActorRef interface works whether the actor is local, in another process, or on another machine.

Who Nexus is for

Nexus is designed for PHP teams building:

  • Event-driven systems — CQRS/ES architectures, domain event processing, and reactive pipelines.
  • Task processing — background job execution with supervision, retries, and backpressure built in.
  • Real-time applications — WebSocket servers, chat systems, live dashboards, and notification fanout running on Swoole.
  • Long-running services — daemons and workers that must stay up, self-heal, and handle partial failures gracefully.

Packages

Nexus is organized as a monorepo of focused packages, each published independently to Packagist:

PackageComposer namePurpose
nexus-corenexus-actors/coreActors, behaviors, supervision, and the ActorSystem entry point.
nexus-runtimenexus-actors/runtimeShared runtime abstractions: Runtime, Duration, Cancellable, mailbox contracts.
nexus-runtime-fibernexus-actors/runtime-fiberFiber-based runtime. Cooperative scheduling, no extensions required.
nexus-runtime-swoolenexus-actors/runtime-swooleSwoole-based runtime using coroutines and native channels.
nexus-runtime-stepnexus-actors/runtime-stepDeterministic step-by-step runtime for tests.
nexus-worker-poolnexus-actors/worker-poolLocal thread-based worker pool with consistent-hash routing.
nexus-worker-pool-swoolenexus-actors/worker-pool-swooleSwoole thread primitives: Thread\Queue transport, Thread\Map directory.
nexus-clusternexus-actors/clusterRemote contracts for future TCP-based multi-machine clustering.
nexus-persistencenexus-actors/persistenceEvent sourcing and durable state abstractions with in-memory stores.
nexus-persistence-dbalnexus-actors/persistence-dbalDoctrine DBAL storage backends for persistence.
nexus-persistence-doctrinenexus-actors/persistence-doctrineDoctrine ORM adapter for persistence.
nexus-doctrine-dbalnexus-actors/doctrine-dbalCoroutine-aware DBAL ConnectionPool + HTTP middleware + #[Transactional].
nexus-doctrine-ormnexus-actors/doctrine-ormPooled EntityManagerInterface injection + EntityBehavior DSL for aggregate actors.
nexus-serializationnexus-actors/serializationValinor-based message serialization with a type registry.
nexus-loggernexus-actors/loggerAsync PSR-3 logger backed by a LogActor mailbox with Monolog-compatible handlers.
nexus-httpnexus-actors/httpPSR-7/15-based HTTP routing core: route registry, handler-param resolution, exception mapper.
nexus-http-wsnexus-actors/http-wsHttpApplication / WsApplication composition root and WebSocket router.
nexus-http-toolkitnexus-actors/http-toolkitReusable middlewares (rate limit, body size limit, CORS) and helper resolvers.
nexus-http-authnexus-actors/http-authBearer-token authentication middleware + Principal + #[FromPrincipal] resolver.
nexus-http-server-swoolenexus-actors/http-server-swooleSwoole HTTP server runner (worker-process mode).
nexus-http-server-swoole-threadsnexus-actors/http-server-swoole-threadsSwoole thread-mode HTTP server with graceful-shutdown hooks.
nexus-appnexus-actors/appApplication kernel for declarative actor registration and single-process execution.
nexus-psalmnexus-actors/psalmPsalm plugin providing static analysis support for actor message protocols.

A meta-package nexus-actors/nexus pulls in nexus-core, nexus-runtime-fiber, and nexus-serialization for convenience.

Design principles

  • Immutable behaviors. Actor message handlers are readonly value objects. Swapping behavior means returning a new Behavior instance, never mutating the current one.
  • PSR compatibility. Nexus integrates with psr/log, psr/clock, psr/container, and psr/event-dispatcher out of the box.
  • Runtime-agnostic actor APIs. Actor code depends on interfaces, not a concrete runtime implementation. The runtime (Fiber, Swoole, or Step) is chosen at the composition root.
  • Type safety. All public APIs use generics tracked by Psalm. The nexus-psalm plugin ensures message protocols are consistent at analysis time.

Next steps

  • Nexus Thesis — decide quickly whether actor architecture is the right fit.
  • Installation — set up Nexus in your project.
  • Quick Start — build your first actor in five minutes.
  • Key Concepts — understand the actor model from a PHP perspective.