Seneca is a microservices toolkit for Node.js that organizes business logic around pattern-matched commands rather than data models or dependency management.
The toolkit addresses the challenge of building distributed systems by decoupling what happens in your application from how messages are transported between services. It uses pattern matching on JSON input to route commands to handlers, allowing you to define business logic as discrete, composable operations. Transport independence means you can change how services communicate without rewriting your business logic. The core abstraction treats your application as a collection of "stuff that happens"—commands that accept JSON input and optionally return JSON output—rather than forcing you to think in terms of data models or service dependencies.
Seneca suits teams building microservice architectures who want to avoid tight coupling between services and who value flexibility in how services discover and communicate with each other. It works well for applications where you can express business requirements as discrete, pattern-matched operations. The toolkit includes built-in commands for common needs like data storage, user management, caching, and logging, plus an ecosystem of plugins for extending functionality. The project provides a guide to microservice architecture design and maintains tutorials and sample applications to help new users get started.
The project has been in production use for years and maintains an active ecosystem of plugins. Development includes tooling for reading the source code in annotated form, and the maintainers provide multiple channels for user support including GitHub issues, social media, and chat. Logs are output in JSON format to support integration with external logging services.