Commands & queries
Separate requests that change state from requests that read it. Give each use case a focused handler.
Command Query Responsibility SegregationA shared way to build enterprise applications. Native frameworks, familiar patterns, and connected tools—so every team can build in the language they love.

Choose the implementation that fits your team. Explore its programming model, working examples, and learning resources.
The original modular framework for reactive services, distributed workflows, and enterprise integrations.
Explore Firefly for Java PythonA cohesive application model with type-driven dependency injection, web APIs, persistence, and messaging.
Explore PyFly PHPAn attribute-driven application layer for Laravel, with explicit use cases, transactions, and security.
Explore LaraFly RustApplication patterns expressed through Rust traits, declarative macros, and asynchronous services.
Explore Firefly for Rust C# / .NETConnect typed commands, queries, HTTP services, and application modules through familiar .NET conventions.
Explore Firefly for .NETShared architectural ideas, independent implementations. Each framework page explains its own capabilities and available integrations.
Three clear responsibilities. One connected application.
Explore how Firefly keeps your business at the center.
Model your business independently of the systems around it. The domain owns its behavior and invariants, so a new database or delivery channel does not have to reshape your business logic.
Business behavior stays at the center.Carry familiar architectural ideas from one service to the next. Explore the patterns across the ecosystem, then choose the capabilities available in your framework.
Separate requests that change state from requests that read it. Give each use case a focused handler.
Command Query Responsibility SegregationExpress what happened in your domain. Let other parts of the system react through explicit event contracts.
Domain events & event-driven architectureDescribe a process as connected steps, with explicit dependencies, outcomes, and recovery paths.
Process orchestrationCoordinate local operations across services. Compensate completed steps when a later operation fails.
Distributed coordination & compensationReserve resources in a try phase, then confirm the operation or cancel the reservation.
Try · Confirm · CancelDescribe what your application needs through interfaces. Connect infrastructure providers at the boundary.
Hexagonal architectureFollow a real project from its first endpoint to its application architecture. Explore the books, companion code, and available editions.

Reactive Microservices with Spring Boot, WebFlux & the Firefly Framework
Read the manuscript
Event-Driven Python Microservices with the Firefly Framework
PDF & EPUB editions
Hexagonal PHP Microservices on Laravel 13 with the Firefly Framework
PDF & EPUB editionsEvent-Driven Rust Microservices with the Firefly Framework
PDF & EPUB editionsPublished editions and source manuscripts are linked separately. Downloadable books include English and Spanish editions; framework pages link to the exact available release.
Start with an application framework. Add the capabilities your system needs. Bring in AI, data science, and developer tools when the work calls for them.
Firefly Agentic brings agents, tools, memory, and orchestration together on Pydantic AI. The Agentic Bridge provides a reactive integration layer for Java services.
Explore Firefly Agentic Discover the Java bridge ↗Composable workflows for exploration, feature engineering, training, and serving.
Explore Data ScienceThe Firefly CLI sets up the Java workspace, scaffolds services from project archetypes, and checks your development environment.
Explore the Firefly CLIWorkflows, Saga, and TCC. Coordinate work across service boundaries.
Event-driven architecture, CQRS, and event sourcing for connected services.
Security foundations and identity-provider adapters behind clear contracts.
Reactive persistence and pluggable caching for your application’s data.
Common abstractions and a consistent exception model across application modules.
Connect application behavior to metrics, distributed tracing, and health checks.
Individual projects evolve independently. Follow their repositories for releases and implementation status.
Browse every repositoryJava is composed of modular repositories. Each other language has its own framework workspace. Find the projects that fit your application.
Choose a language framework and explore its own modules, examples, and documentation.
Builds ASP.NET Core services with data access, command and query handling, event sourcing, orchestration, and integration modules.
Extends Laravel with attribute-driven application modules for dependency injection, repositories, transactions, security, and command and query handling.
Builds asynchronous Python services with dependency injection, web and data abstractions, messaging, and distributed application patterns.
Builds Rust services on Tokio and Axum with declarative macros, reactive APIs, dependency injection, and distributed application patterns.
Compose a Java application from shared build tools, service starters, web and data modules, and operational foundations.
Provides application context and resource controller abstractions for Java backoffice services and internal portals.
Aligns Java module dependency versions through a single Maven bill of materials.
Connects Java services to remote systems through a shared client for HTTP APIs, SOAP, gRPC, GraphQL, and WebSocket.
Serves shared and service-specific configuration to Java applications through Spring Cloud Config.
Defines shared abstractions and a common exception hierarchy for Java framework modules.
Connects Java applications to metrics, distributed tracing, health checks, and structured logging.
Shares Maven build settings, dependency versions, and plugin configuration across the Java framework.
Adds extension points and manages plugin discovery, dependencies, and lifecycle in Java applications.
Provides reactive PostgreSQL data access with filtering and pagination for Java applications.
Defines business rules in YAML and evaluates them with caching and audit trails.
Assembles Java modules for application services that coordinate business processes, request context, security, and plugins.
Assembles Java infrastructure modules for service connections, discovery, messaging, health checks, and resilience.
Assembles Java modules for processing data, coordinating jobs, enriching records, and handling commands and events.
Assembles Java modules for business logic, command and query handling, distributed transactions, and events.
Provides shared Java utilities for template rendering, document generation, and filtering annotations.
Checks financial and business data such as bank identifiers, currencies, amounts, phone numbers, and tax identifiers.
Adds consistent error responses, request idempotency, sensitive data masking, and API documentation to Spring WebFlux services.
Separate business operations, exchange events, and coordinate work across services.
Separates commands that change data from queries that read it, with validation and authorization around their handlers.
Provides shared event publishing and consumption interfaces with adapters for Kafka, RabbitMQ, and PostgreSQL.
Publishes and consumes events through Apache Kafka using the Java event interfaces.
Delivers events through PostgreSQL with a database outbox, database notifications, and polling.
Publishes and consumes events through RabbitMQ using the Java event interfaces.
Stores changes as events and provides snapshots, projections, and an outbox for publishing them.
Coordinates workflows and distributed transactions using Saga compensation and Try-Confirm-Cancel steps.
Define access rules, connect identity providers, and integrate authorization and secrets services.
Delegates application authorization decisions to Cerbos through the security policy interface.
Delegates application authorization decisions to Open Policy Agent through the security policy interface.
Connects the security relationship interface to OpenFGA for authorization based on relationships between users and resources.
Stores token revocation records in PostgreSQL for the Java security modules.
Retrieves application secrets from HashiCorp Vault through the Java security secrets interface.
Defines the security domain model and application-facing contracts used by the Java security modules.
Provides an OAuth 2.0 and OpenID Connect authorization server using Spring Authorization Server.
Handles browser sign-in on the server and keeps user tokens in server sessions behind a browser cookie.
Evaluates authorization rules and maps identities to permissions behind the Java security interfaces.
Defines shared identity interfaces so Java applications can use different user and authentication providers.
Connects the Java identity interfaces to Amazon Cognito user pools.
Connects the Java identity interfaces to Microsoft Entra ID and Azure AD B2C.
Provides a database-backed identity service with user storage, password hashing, tokens, and TOTP setup and verification helpers.
Connects the Java identity interfaces to Keycloak through its administration API.
Checks authorization rules when annotated Java service methods are called.
Manages OAuth 2.0 client authorization, token refresh, and token relay for reactive Java applications.
Validates access tokens and maps their claims to permissions for protected Java APIs.
Defines integration contracts for token validation, policy decisions, key management, auditing, and token revocation.
Provides sample principals and a configurable policy decision substitute for Java security tests.
Connects the Java security model to Spring WebFlux authentication, security context, and request policy enforcement.
Manage document content and connect storage providers through shared interfaces.
Defines shared interfaces for managing documents, folders, storage, and document audit records.
Stores and retrieves document content in Amazon S3 through the document management interfaces.
Stores and retrieves document content in Azure Blob Storage through the document management interfaces.
Use a common Java caching interface with local, distributed, or database-backed storage.
Provides a shared Java caching interface with local Caffeine caching and adapters for external cache providers.
Connects the Java caching interface to Hazelcast for distributed cache storage.
Connects the Java caching interface to providers that implement the JCache standard.
Stores cache entries in PostgreSQL through the Java reactive caching interface.
Connects the Java caching interface to Redis for shared cache storage.
Connect application notifications to the delivery providers your product uses.
Defines shared interfaces for email, text messages, and push notifications with replaceable delivery providers.
Delivers push notifications through Firebase Cloud Messaging using the Java notification interfaces.
Sends email through Resend using the Java notification interfaces.
Sends email and attachments through SendGrid using the Java notification interfaces.
Sends text messages through Twilio using the Java notification interfaces.
Receive events from external systems and send application events to subscribers.
Build intelligent agents, connect them to Java applications, and explore data science workflows.
Builds Python AI agents with tools, memory, validation, retrieval, and coordinated pipelines on Pydantic AI.
Connects Java services to Firefly Agentic deployments through request and streaming transports.
Combines automated machine learning, deep learning, and Agentic workflows for data preparation, training, and serving models.
Create Java services, follow worked examples, and understand the platform architecture.
Hosts the organization profile, shared community guidance, and introductory documentation.
Provides the flywork command-line tool to scaffold, set up, diagnose, and manage Firefly Java services.
Teaches the Java framework through guided application examples in English and Spanish.
Explains the Java security platform architecture, modules, integration points, and changes.
No projects match your search. Try a language, “security”, or “events”.
Java integration modules are specific to the Java framework. Check each language’s documentation for its available capabilities.
Find your language. Explore the code. Make something that matters.