Skip to content
CAI
Software that uses CAICheck a score

apache/eventmesh

64.2

Adequate · 22 September 2026

169.3k

lines of production code

Java

with C

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Apache EventMesh is a unified event mesh runtime that manages subscriptions and delivery semantics using a message queue as a pure write-ahead log. It provides a pluggable architecture for protocol translation (HTTP, TCP, gRPC) and connector implementations to integrate with various data stores and messaging systems. The system also supports agent-to-agent communication through a dedicated gateway and streaming capabilities.

How it got here

2019–2021 — Apache EventMesh rebrand and protocol standardization

39 changes.

The project rebranded from DeFiBus to Apache EventMesh, establishing unified CloudEvents architecture and governance structures. Significant work focused on standardizing HTTP and TCP protocol models, implementing a new annotation-driven configuration framework, and introducing a robust SPI-based plugin loading system.

2022–2024 — SDK expansion and storage abstraction

20 changes.

This period focused on expanding the project's client ecosystem by introducing new SDKs for Go, Rust, and C, alongside significant enhancements to the Java SDK with gRPC and CloudEvents support. Concurrently, the core architecture was refactored through a unified storage plugin SPI that standardizes offset management and capabilities, while common modules were strengthened with robust configuration conversion frameworks and centralized protocol enums.

2025–2026 — Unified connector and agent architecture

18 changes.

This period focused on implementing a new unified connector architecture, replacing legacy libraries with standalone plugins for major data sources and sinks. It also introduced the A2A protocol support and a standalone agent runtime, enabling direct agent-to-agent communication and LLM integration. Underlying infrastructure improvements included a new binary wire format, a standalone connector runtime with durable storage, and strict architectural guards to enforce module boundaries.

Features

A2A Gateway REST and SSE API exposed on the runtime

The runtime now includes an embedded A2A Gateway that exposes a REST API with SSE streaming for agent-to-agent task management. This new component, located in the \a2a\ package, provides endpoints for submitting, listing, and canceling tasks, as well as long-polling and streaming task status updates. It integrates with the existing EventMesh transport layer to route messages and uses a pluggable \TaskStore\ for durable task lifecycle management. The gateway also supports optional bearer token authentication and integrates with the unified security gate for quota and access control.

eventmesh-runtime/src/main · high confidence

Add A2A Gateway Client Demo for agent interaction

A new demo client (A2AGatewayDemo) has been added to the examples module, illustrating how to connect to the A2A Gateway Server (default port 10108) to list registered agents, submit synchronous and asynchronous tasks to a weather agent, and query task status.

eventmesh-examples/src/main/java/org/apache/eventmesh/a2a · high confidence

Add CloudEvents TCP publish and request-reply examples

The TCP demo examples now include two new Java programs for CloudEvents: AsyncPublish, which demonstrates asynchronous message publishing to an EventMesh TCP endpoint, and SyncRequest, which demonstrates synchronous request-reply (RR) communication, including handling the response payload and checking for null values in the event format and data.

eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents · high confidence

Add in-memory storage plugin for local development and testing

A new \eventmesh-storage-memory\ plugin has been added, providing an in-memory implementation of the \MeshStoragePlugin\ interface. This plugin supports all seven storage capabilities (topic management, partition assignment, explicit offset commit, end offset query, align pull offset, deferred pop ack, and lite topics) and is intended for local development sandboxes and CI smoke runs where provisioning an external broker like Kafka or RocketMQ is undesirable. It can be selected by setting \eventmesh.storage.type=memory\ (or the environment variable \EVENTMESH\_STORAGE\_TYPE=memory\). State is process-local and lost on shutdown, so it is not suitable for production use. The plugin includes a TCK test suite to verify compliance with the storage API contract.

eventmesh-storage-plugin/eventmesh-storage-memory · high confidence

Add utility helper class for examples

A new \Utils\ class has been added to the \eventmesh-examples\ module to provide shared helper methods for example code. This includes utilities for detecting the local IP address (with specific logic for Windows and Linux environments), reading properties files from the classpath, and constructing HTTP URLs from port and path components.

eventmesh-examples/src/main/java/org/apache/eventmesh/util · high confidence

Added CloudEvents TCP subscription examples for async and sync modes

The eventmesh-examples module now includes two new demo classes, AsyncSubscribe and SyncResponse, located in the TCP CloudEvents subscription package. These examples demonstrate how to use the EventMesh TCP client to subscribe to CloudEvents, covering both asynchronous message handling (where the handler returns empty) and synchronous request-response patterns (where the handler returns the event).

eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents · high confidence

Added Java gRPC stubs and CloudEvent protocol models

The \eventmesh-common\ module now includes the generated Java classes for the CloudEvents gRPC protocol, providing the data models (\CloudEvent\, \CloudEventBatch\) and service stubs (\PublisherServiceGrpc\, \ConsumerServiceGrpc\, \HeartbeatServiceGrpc\) required for gRPC-based event communication.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/cloudevents · high confidence

Added gRPC AdminService protocol definitions and Java stubs

The EventMesh common module now includes the generated Java classes and proto source for the AdminService gRPC interface. This adds support for two new administrative RPCs: a unary \invoke\ call and a bidirectional streaming \invokeBiStream\ call, both exchanging \Payload\ messages (containing metadata and a body) with the server. Users can now utilize the generated \AdminServiceGrpc\ stubs to communicate with EventMesh administrative endpoints via gRPC.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver, eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/proto · high confidence

Added gRPC CloudEvent protocol resolver for Java

A new GrpcEventMeshCloudEventProtocolResolver class has been introduced in the meshmessage protocol plugin to handle serialization and deserialization of CloudEvents via the gRPC protocol. This component bridges the internal EventMesh CloudEvent structures with the standard io.cloudevents.CloudEvent format using Protobuf, enabling support for single events, null-safe handling, and batch event processing within the Java gRPC transport layer.

eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/grpc · high confidence

Expanded configuration type support with new data converters

The configuration management system now supports a wider range of data types out of the box. New converter classes have been added to handle primitive types (Character, Boolean, Byte, Short, Integer, Long, Float, Double), complex collections (List, Map, Properties), and specialized formats (Date, LocalDate, LocalDateTime, Enum, IPAddress, URI, String). This allows configuration fields of these types to be automatically parsed and validated from string-based configuration sources without requiring custom conversion logic.

eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter · high confidence

HTTP protocol resolvers for single and batch message sending

The HTTP protocol resolver module now includes concrete implementations for converting HTTP publish/subscribe requests into CloudEvents. SendMessageRequestProtocolResolver handles single message sends, supporting both CloudEvents spec v0.3 and v1, while SendMessageBatchV2ProtocolResolver handles batch message sends using the V2 request format. SendMessageBatchProtocolResolver is also added as a placeholder for future batch support. These resolvers map HTTP headers and bodies to CloudEvent attributes and extensions, enabling EventMesh to process HTTP-based message publishing.

eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http · high confidence

Initial release of the EventMesh C SDK with TCP support and RMB messaging

This change introduces the EventMesh C/C++ SDK, providing a new client library for C-based applications to interact with EventMesh. The SDK supports TCP communication and implements the RMB (Reliable Message Bus) API, enabling features such as message publishing, subscription, request-response (RR) patterns, and broadcast messaging. It includes a comprehensive set of header files defining the public API (e.g., \rmb\_pub.h\, \rmb\_sub.h\, \rmb\_msg.h\), configuration management via \rmb\_cfg.h\, and logging capabilities. A sample \demo.c\ and configuration file \rmb.conf\ are provided to demonstrate usage, and the build system relies on \make\ with git submodules for dependencies.

eventmesh-sdks/eventmesh-sdk-c · high confidence

Introduce A2A (Agent-to-Agent) protocol plugin

This change adds the \eventmesh-protocol-a2a\ plugin, enabling EventMesh to support the A2A protocol for agent communication. It provides a Java SDK client (\A2AClient\) for registering agent cards, sending tasks, and handling streaming responses via a REST gateway. The plugin includes protocol adaptors (\A2AFrameAdaptor\, \EnhancedA2AProtocolAdaptor\) to convert between A2A JSON-RPC messages and EventMesh CloudEvents, a topic factory for structured agent discovery and task routing, and validators for agent card schemas.

eventmesh-protocol-plugin/eventmesh-protocol-a2a · high confidence

Introduce EventMesh Agent runtime with HTTP fetch tool and SPI plugin support

The agent module has been restructured into a standalone runtime (eventmesh-agent-runtime) that boots a streaming agent process to register with the EventMesh control plane, manage conversation history, and bridge prompts to an OpenAI-compatible LLM gateway. This release ships the first in-tree agent plugin, HttpFetchTool, which allows the agent to fetch HTTP/HTTPS URLs and return the response body as a tool result. The runtime supports extensibility via an SPI mechanism for custom tools and exposes connector-backed tools for reading and writing events, configurable through system properties and environment variables.

eventmesh-agent-plugin/eventmesh-agent-plugin-http-fetch, eventmesh-agent-runtime, eventmesh-connector-plugin/eventmesh-connector-api · high confidence

Introduce HTTP protocol body abstraction classes

Added \Body\, \BaseRequestBody\, and \BaseResponseBody\ classes to the \eventmesh-common\ HTTP protocol package. The abstract \Body\ class provides a factory method (\buildBody\) that dispatches incoming HTTP requests to specific request body implementations (such as \SendMessageRequestBody\, \RegRequestBody\, and \HeartbeatRequestBody\) based on the request code, while \BaseResponseBody\ standardizes the structure for HTTP responses including return code, message, and timestamp.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body · high confidence

Introduce Java SDK gRPC protocol common classes

This change adds a new set of common utility classes, enums, and wrappers to the \eventmesh-common\ module to support the Java SDK's gRPC protocol implementation. Specifically, it introduces \EventMeshCloudEventUtils\ for handling CloudEvent attributes, \ClientType\ and \GrpcType\ enums to define client roles and gRPC modes, \StatusCode\ for standardized error codes, and wrapper classes (\EventMeshCloudEventWrapper\, \BatchEventMeshCloudEventWrapper\) to encapsulate CloudEvent payloads for transmission. These components provide the foundational data structures and helper methods required for the gRPC communication layer.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/common · high confidence

Introduce TCP protocol data model classes

The \eventmesh-common\ module now includes a new \org.apache.eventmesh.common.protocol.tcp\ package containing the core data structures for the TCP protocol. This adds the \Command\ enum defining message types (such as heartbeat, subscription, and RR requests), the \OPStatus\ enum for operation results, and model classes including \Package\ (the wire format with Header and body), \Header\ (metadata and properties), \EventMeshMessage\ (message payload), \Subscription\, \RedirectInfo\, and \UserAgent\ (client identity). These classes provide the foundational types for serializing and deserializing TCP traffic.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp · high confidence

Introduce initial Go SDK module with core protocol definitions and utilities

Adds the \eventmesh-sdks/eventmesh-sdk-go\ module, providing the foundational Go client library for EventMesh. This release includes core protocol structures for HTTP, TCP, and CloudEvents, along with utilities for unique ID generation (Snowflake and UUID), message serialization, and standard build/lint tooling (Makefile, golangci-lint).

eventmesh-sdks/eventmesh-sdk-go · high confidence

Introduce initial Rust SDK with gRPC CloudEvents support

Adds the \eventmesh-sdk-rust\ module, providing a new Rust client for EventMesh that communicates via gRPC. The SDK supports publishing, batch publishing, and request-reply messaging using both standard EventMesh messages and CloudEvents (via the \cloud\_events\ feature). It includes gRPC producer and consumer implementations, protobuf definitions for CloudEvents and the EventMesh service, and example code for quickstart usage.

eventmesh-sdks/eventmesh-sdk-rust · high confidence

Introduce legacy HTTP protocol transport objects in eventmesh-common

The \eventmesh-common\ module now includes the \org.apache.eventmesh.common.protocol.http\ package, introducing \HttpCommand\, \HttpEventWrapper\, and \WebhookProtocolTransportObject\ as the core HTTP protocol transport types. \HttpCommand\ provides a mechanism to construct HTTP responses from requests, including support for custom status codes and automatic header management. \HttpEventWrapper\ offers a similar abstraction for HTTP events, utilizing maps for headers and a byte array for the body, while \WebhookProtocolTransportObject\ defines the structure for webhook cloud events. These classes are marked as internal legacy types, restricting their usage to the Java SDK and the \eventmesh-protocol-meshmessage\ module to maintain architectural boundaries.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http · high confidence

Introduce new SPI extension loading framework

The eventmesh-spi module now provides a new extension loading mechanism via the EventMeshExtensionFactory, which supports both singleton and prototype instance lifecycles for plugins. This change introduces the EventMeshSPI annotation to mark extension interfaces, the EventMeshExtensionType enum to categorize extensions (such as connectors, storage, and metrics), and the ExtensionException class for error handling. Users can now leverage this factory to dynamically load and manage plugin instances based on configuration and type.

eventmesh-spi/src/main/java/org/apache/eventmesh/spi · high confidence

Introduce standalone Connector Runtime with admin API and durable offset storage

The eventmesh-connector-runtime module now provides a standalone process for running connectors, launched via the new start-connector.sh script. This runtime supports both static configuration via system properties and dynamic assignment from the EventMesh runtime scheduler. It introduces a local HTTP admin server (configurable via CONNECTOR\_ADMIN\_PORT) exposing /health, /offsets, /metrics, and /control endpoints for monitoring and lifecycle management. To prevent data loss, the runtime implements per-event publish isolation in the source loop and per-delivery ACK isolation in the sink loop, alongside configurable offset persistence using RocksDB, in-memory, or remote storage modes.

eventmesh-connector-runtime · high confidence

Introduce unified MeshStoragePlugin SPI with capability-based storage abstraction

The storage API now exposes a single, unified \MeshStoragePlugin\ interface that treats the underlying message queue as a persistent FIFO write-ahead log, removing exposure of internal concepts like producer/consumer groups and tags. EventMesh now owns subscription and offset management, pulling messages via \poll\ and committing distribution offsets explicitly. The API introduces a capability marker system (\StorageCapabilities\) allowing backends to declare optional features such as topic management, partition assignment, end-offset querying, pull-offset alignment, deferred POP acknowledgments, and RocketMQ 5.x Lite Topic support. This change also includes new interfaces for lifecycle management, admin operations, and async consumption contexts, alongside a Test Compatibility Kit (TCK) to ensure backend implementations adhere to the new contract.

eventmesh-storage-plugin/eventmesh-storage-api · high confidence

Introduce unified TCP protocol codec for EventMesh

The TCP codec module now provides a centralized \Codec\ class with nested \Encoder\ and \Decoder\ components to handle serialization and deserialization of TCP packages. The encoder constructs messages by writing a magic flag, version, length fields, and JSON-serialized headers and bodies, while the decoder parses incoming byte buffers back into \Package\ objects, including validation of the magic flag and version. This change establishes the standard binary protocol format for TCP communication within the EventMesh common library.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec · high confidence

Introduces HTTP protocol common constants and enums

Adds a new set of enumerations and constants in the \eventmesh-common\ module to standardize the HTTP protocol layer. This includes \RequestCode\ for defining operation types (such as publish, subscribe, and heartbeat), \RequestURI\ for mapping API endpoints, \ClientRetCode\ and \EventMeshRetCode\ for handling response statuses, \ClientType\ for distinguishing publishers and subscribers, \ProtocolVersion\ for versioning, and \ProtocolKey\ for header definitions. These components provide the foundational data structures required for HTTP-based message publishing and subscription operations.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common · high confidence

Introduces structured HTTP request and response header classes for client operations

The \eventmesh-common\ module now includes a set of new Java classes in the \org.apache.eventmesh.common.protocol.http.header.client\ package to model HTTP protocol headers for client-side interactions. This includes a base \Header\ abstract class with a factory method that dispatches to specific implementations based on the request code, as well as dedicated request and response header classes for operations such as heartbeat, registration, unregistration, subscription, and unsubscription. These classes standardize how metadata like environment, IDC, IP, and protocol version are serialized and deserialized for these specific client events.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client · high confidence

Introduction of common exception classes

The eventmesh-common module now includes dedicated exception classes, specifically EventMeshException and JsonException, to provide structured error handling for general runtime issues and JSON processing failures respectively. EventMeshException supports error codes and messages, while JsonException is designed for format errors, improving clarity and debugging for users encountering these specific failure modes.

eventmesh-common/src/main/java/org/apache/eventmesh/common/exception · high confidence

New EventMesh runtime start and stop scripts

The eventmesh-runtime module now includes dedicated shell scripts (start.sh and stop.sh) for launching and managing the EventMeshApplication process. The start script assembles the classpath from the conf, apps, and lib directories, applies default configuration values (such as Kafka storage, ports 10105/10106, and A2A settings), and executes the main application class. The stop script provides graceful shutdown capabilities by locating the running JVM process via jps or pgrep, sending SIGTERM, and waiting up to 10 seconds for the shutdown hook to flush offsets before force-killing if necessary.

eventmesh-runtime/bin · high confidence

New HTTP message header models for push, reply, and batch send operations

The \eventmesh-common\ module now includes a new set of request and response header classes for HTTP-based messaging operations. Specifically, \PushMessageRequestHeader\ and \PushMessageResponseHeader\ handle push message interactions, while \ReplyMessageRequestHeader\ and \ReplyMessageResponseHeader\ manage reply message flows. Additionally, headers for batch sending have been introduced: \SendMessageBatchRequestHeader\ and \SendMessageBatchResponseHeader\ for the standard batch API, and \SendMessageBatchV2RequestHeader\ and \SendMessageBatchV2ResponseHeader\ for the V2 batch API. These classes define the structure for protocol keys, instance metadata (cluster, IP, environment, IDC), and authentication fields, providing the data models used by the HTTP protocol layer.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message · high confidence

New HTTP message protocol body classes for pub/sub operations

The \eventmesh-common\ module now includes a new set of request and response body classes for the HTTP pub/sub protocol, enabling structured handling of message operations. This adds \PushMessageRequestBody\ and \PushMessageResponseBody\ for push notifications, \ReplyMessageRequestBody\ and \ReplyMessageResponseBody\ for message replies, and dedicated classes for single and batch message sending (\SendMessageRequestBody/ResponseBody\, \SendMessageBatchRequestBody/ResponseBody\, \SendMessageBatchV2RequestBody/ResponseBody\). These classes provide standardized fields (such as topic, content, and producer group) and utility methods for serialization, allowing the runtime to correctly parse and construct HTTP payloads for these specific message flows.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message · high confidence

New HTTP protocol body classes for client heartbeat, registration, and subscription operations

The \eventmesh-common\ module now includes a new set of request and response body classes in the \org.apache.eventmesh.common.protocol.http.body.client\ package to support client-side HTTP protocol interactions. Specifically, \HeartbeatRequestBody\ and \HeartbeatResponseBody\ handle client heartbeat reporting, while \RegRequestBody\/\RegResponseBody\ and \UnRegRequestBody\/\UnRegResponseBody\ manage topic registration and unregistration. Additionally, \SubscribeRequestBody\/\SubscribeResponseBody\ and \UnSubscribeRequestBody\/\UnSubscribeResponseBody\ are introduced to handle topic subscription and unsubscription. These classes provide structured data models with fields like \clientType\, \consumerGroup\, \topics\, and \url\, and include utility methods for JSON serialization and map conversion to facilitate communication with the EventMesh broker.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client · high confidence

New Java SDK for simplified HTTP/CloudEvents runtime and gRPC client

The Java SDK now includes a new \CloudEventsClient\ for the simplified runtime, enabling publish, request-reply, subscribe, and streaming operations over HTTP using CloudEvents. It also introduces a gRPC client (\EventMeshGrpcConsumer\) for traditional EventMesh communication, along with supporting classes for streaming sessions and configuration.

eventmesh-sdks/eventmesh-sdk-java/src/main · high confidence

New RocketMQ 5.x storage plugin with POP mode and Lite Topic support

This change introduces the \RocketMQ5RemotingStoragePlugin\, a new storage backend for EventMesh that connects to RocketMQ 5.x via direct remoting RPC (bypassing the standard gRPC client). For users, this enables message storage using RocketMQ 5.x's POP consumption mode, which handles broker-side message assignment and eliminates the need for client-side partition ownership management. The plugin also supports RocketMQ 5.5 Lite Topics (RIP-83), allowing messages to be sent to parent topics with automatic routing to Lite Topic consume queues. It implements specific capabilities including topic management, partition assignment, explicit offset committing, deferred POP acknowledgments, and Lite Topic operations, verified by a new TCK test suite.

eventmesh-storage-plugin/eventmesh-storage-rocketmq5 · high confidence

New TCP demo examples for async, broadcast, and sync request-reply messaging

The TCP demo examples now include three new standalone client programs: AsyncPublish, which sends asynchronous messages with delays using ThreadUtils; AsyncPublishBroadcast, which demonstrates broadcasting messages to multiple subscribers; and SyncRequest, which performs synchronous request-reply interactions and logs the response. These examples utilize the EventMeshTCPClient to connect to the EventMesh broker via TCP, providing users with concrete reference implementations for different messaging patterns.

eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage · high confidence

New TCP demo examples for async, broadcast, and sync subscription modes

The eventmesh-examples module now includes three new Java demo programs—AsyncSubscribe, AsyncSubscribeBroadcast, and SyncResponse—located in the TCP subscriber package. These examples demonstrate how to use the EventMeshTCPClient to subscribe to topics using different subscription types (ASYNC, BROADCASTING, and SYNC) and modes (CLUSTERING and BROADCASTING), providing users with concrete reference implementations for handling incoming EventMeshMessages in various scenarios.

eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage · high confidence

New TCP example utilities for CloudEvents and message testing

Added EventMeshTestUtils and UtilsConstants to the TCP examples module, providing helper methods to generate CloudEvents (v1) and EventMeshMessage packages for sync, async, and broadcast scenarios, along with centralized constants for test configuration such as ports, subsystems, and message properties.

eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common · high confidence

New TCP protocol resolver for EventMeshMessage conversion

Added TcpMessageProtocolResolver to handle bidirectional conversion between TCP EventMeshMessage objects and CloudEvents. The resolver validates protocol parameters, maps message topics and bodies to CloudEvent subjects and data, and ensures proper JSON serialization by defaulting the data content type to application/octet-stream when not explicitly set.

eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/tcp · high confidence

New annotation-driven configuration framework with hot-reload support

The \eventmesh-common\ module now includes a new configuration framework (\org.apache.eventmesh.common.config\) that allows configuration classes to be defined via \@Config\ and \@ConfigField\ annotations. This framework supports loading properties from both \.properties\ and \.yaml\ files, automatically maps them to Java objects, and includes a \ConfigMonitorService\ that periodically reloads configuration values at runtime for fields marked with \reload = true\. A default \CommonConfiguration\ class is provided, establishing baseline settings for system identifiers, environment metadata, and plugin types (e.g., metaStorage, trace, metrics, security, storage, registry).

eventmesh-common/src/main/java/org/apache/eventmesh/common/config · high confidence

New common enumerations for protocol, component, and connection types

The \eventmesh-common\ module now includes a new \org.apache.eventmesh.common.enums\ package containing standard enumerations that define core EventMesh concepts. This adds \ComponentType\ (connector, function, mesh), \ConnectionType\ (persistent, short-lived), \ConnectorStage\ (source, sink), \EventMeshDataContentType\ (JSON), \EventMeshProtocolType\ (CloudEvents, EventMesh Message, Open Message), \HttpMethod\ (standard HTTP verbs), and \ProtocolType\ (TCP, HTTP, gRPC). These types provide a unified, type-safe way for EventMesh components to identify and handle different protocols, connection lifecycles, and data formats.

eventmesh-common/src/main/java/org/apache/eventmesh/common/enums · high confidence

New configuration value conversion framework in eventmesh-common

The eventmesh-common module now includes a new \org.apache.eventmesh.common.config.convert\ package that provides a structured framework for converting configuration properties into strongly-typed Java objects. This change introduces a registry-based converter system (\ConverterMap\) that automatically maps configuration fields to specific converters for types such as \String\, \Integer\, \Long\, \Date\, \LocalDateTime\, \LocalDate\, \URI\, \IPAddress\, \Enum\, \List\, \Map\, and \Properties\. The system supports environment variable fallbacks for configuration keys and enforces non-empty constraints, allowing the application to more robustly parse and validate configuration data from \Properties\ sources.

eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert · high confidence

New internal binary wire format and pluggable codec for EventMesh

EventMesh introduces a new internal wire format, EventMeshFrame, to unify streaming and pub/sub messaging across runtime, storage, and agent components. This compact binary format replaces previous internal representations, supporting StreamRequest, StreamChunk, and CloudEvent types with a 14-byte header and key-value attributes. The change includes a pluggable codec SPI (WireCodec) with a default implementation (EventMeshFrameCodec) that can be overridden via the eventmesh.wire.codec system property. Additionally, FrameLimits are enforced at both encode and decode boundaries to prevent memory exhaustion from oversized frames, and EventMeshFrame is made immutable with defensive copying to ensure thread safety.

eventmesh-common/src/main/java/org/apache/eventmesh/common/wire · high confidence

New protocol adapter SPI and enhanced plugin factory

The \eventmesh-protocol-api\ module now exposes a new \FrameAdaptor\ SPI interface for converting between external protocol formats (such as CloudEvents JSON or MeshMessage TCP) and the internal \EventMeshFrame\, decoupling protocol-specific conversion logic from the runtime. This is supported by an \EnhancedProtocolPluginFactory\ that manages protocol adaptors with lifecycle hooks, priority-based selection, and lazy loading, alongside a \ProtocolRouter\ for intelligent message routing based on preferred protocols, custom rules, and capability matching. The change also introduces \ProtocolMetrics\ for tracking operation success rates and latencies, and a dedicated \ProtocolHandleException\ for error handling, providing a more robust and observable plugin architecture for protocol integration.

eventmesh-protocol-plugin/eventmesh-protocol-api/src/main · high confidence

New protocol and streaming abstractions for EventMesh

The \eventmesh-common\ module introduces new public SPI classes to support protocol transport and streaming calls. The \protocol\ package adds \ProtocolTransportObject\ as a base interface, \ByteTransport\ for raw byte payloads, and subscription models (\SubscriptionItem\, \SubscriptionMode\, \SubscriptionType\) with Jackson converters. The \stream\ package introduces \StreamRequest\ and \StreamChunk\ DTOs for agent runtime communication, along with \StreamEventCodec\ to serialize these objects to and from CloudEvents.

eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol · high confidence

New streaming call demo for single-turn and multi-turn agent interactions

Added a new example client (StreamingCallDemo) that demonstrates how to use the EventMesh CloudEvents client for streaming calls to registered agents. The demo illustrates two usage patterns: a single-turn call where tokens are streamed and printed as they arrive, and a multi-turn session where context is maintained across multiple prompts by reusing the same session ID. It serves as a practical reference for integrating with the new streaming architecture.

eventmesh-examples/src/main/java/org/apache/eventmesh/cloudevents · high confidence

New unified connector implementations for File, Kafka, Pulsar, and RocketMQ

This change introduces new source and sink connector implementations for File, Kafka, Pulsar, and RocketMQ that implement the \SourceConnector\ and \SinkConnector\ interfaces directly, removing the dependency on the legacy \openconnect\ library. For users, this means these connectors now operate as standalone plugins within the new architecture, handling CloudEvent conversion and lifecycle management (init, poll, put, commit) natively. The File connector writes/reads text lines to/from local files, while the Kafka, Pulsar, and RocketMQ connectors manage their respective client producers and consumers to bridge external message queues with the EventMesh runtime. Unit tests are included to verify the SPI contract and basic data flow for each connector.

(repo-wide) · high confidence

New unified connector implementations for HTTP, JDBC, Knative, MongoDB, RabbitMQ, and Redis

This release introduces a new set of source and sink connectors for EventMesh, implementing the unified \SourceConnector\ and \SinkConnector\ interfaces. The diff adds concrete implementations for HTTP (with configurable ports and paths), JDBC (supporting MySQL via prepared statements for both polling and batching), Knative (HTTP-based webhook sources and CloudEvents sinks), MongoDB (using change streams for sources and document insertion for sinks), RabbitMQ (using direct queue consumption and publishing), and Redis (using pub/sub topics). Each connector includes its own configuration files (YAML) for test setups, defining connection details like URLs, ports, queues, and topics, allowing users to integrate EventMesh with these specific data stores and protocols.

(repo-wide) · high confidence

New-architecture connector implementations for Canal, ChatGPT, DingTalk, Lark, and MCP

This change introduces complete source and sink connector implementations for Canal, ChatGPT, DingTalk, Lark, and MCP under the new architecture. The Canal connector replays binlog-derived CloudEvents into MySQL as an atomic JDBC batch (sink) and consumes binlog entries from a Canal server as CloudEvents with at-least-once checkpointing (source). The ChatGPT connector exposes an HTTP endpoint to receive prompts, optionally completes them via the OpenAI REST API, and exposes results as CloudEvents (source), while its sink forwards CloudEvents to a webhook URL. The DingTalk and Lark connectors receive platform webhook pushes (robot callbacks and event subscriptions, respectively), verify signatures/tokens, and expose them as CloudEvents (source), with sinks forwarding events to their respective platform webhooks. The MCP connectors receive JSON-RPC 2.0 notifications from an MCP server as CloudEvents (source) and forward CloudEvents to an MCP server as JSON-RPC requests (sink). Test configuration files for these connectors are also added.

(repo-wide) · high confidence

Registration of MeshMessage protocol and frame adaptors

The system now automatically discovers and registers the MeshMessage protocol implementation via new META-INF service files. Specifically, \org.apache.eventmesh.protocol.api.ProtocolAdaptor\ maps the \eventmeshmessage\ identifier to \MeshMessageProtocolAdaptor\, and \org.apache.eventmesh.protocol.api.FrameAdaptor\ maps \meshmessage\ to \MeshMessageFrameAdaptor\, enabling the runtime to handle this specific protocol variant without manual configuration.

eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/resources · high confidence

Architecture

Architectural guardrails and deprecation for eventmesh-common types

The eventmesh-common module now enforces a clear boundary between public and internal APIs using new @Public and @Internal annotations, restricting downstream modules from importing internal implementation details. Additionally, the legacy EventMeshMessage class is marked as deprecated since version 1.13.0 and scheduled for removal, directing users to migrate to EventMeshFrame for runtime/SDK usage or the legacy TCP bridge variant.

eventmesh-common/src/main/java/org/apache/eventmesh/common · high confidence

Internal refactoring of eventmesh-common into sub-packages

The eventmesh-common module has been reorganized into internal sub-packages (such as internal, lifecycle, metrics, protocol.grpc, and util) to better structure helper classes and enforce dependency rules. This change introduces new internal utilities including a resettable CountDownLatch, thread management wrappers, component lifecycle interfaces, and configuration context helpers, while marking these packages as internal implementation details that are forbidden from being imported by modules outside of eventmesh-common.

(repo-wide) · high confidence

Behavioural changes

Architecture guard enforces package boundaries in CI

The new eventmesh-architecture-guard module introduces nine ArchUnit rules that enforce package boundaries for eventmesh-common, eventmesh-runtime, connector plugins, and storage plugins. These rules are now asserted in FAIL mode, meaning any violation breaks the build and appears as a dedicated "Architecture Guard" check in pull requests via a new CI workflow. This replaces the previous silent WARN mode, which failed to report violations due to missing logging bindings, ensuring that internal package leaks and cross-plugin dependencies are caught immediately.

eventmesh-architecture-guard · high confidence

Automated generation of distribution license and notice files

The build process now automatically generates the \tools/dist-license/LICENSE\ and \tools/dist-license/NOTICE\ files, along with individual license texts for Go dependencies (such as xxhash, cloudevents-sdk-go, and grpc) in the \tools/dist-license/licenses/go\ directory. This ensures that all third-party components included in the distribution carry the correct copyright and license information, simplifying compliance for users redistributing the software.

tools · high confidence

Centralized configuration constants for example applications

The example module now uses a new \ExampleConstants\ class to centralize default values for connection details (such as the default gRPC port 10108), protocol settings, and test topic names. This change consolidates previously scattered string literals and configuration keys, ensuring consistent defaults across HTTP, TCP, and gRPC example demos.

eventmesh-examples/src/main/java/org/apache/eventmesh/common · high confidence

Introduces unified runtime configuration and logging defaults

The runtime now ships with a new \eventmesh.properties\ file that centralizes configuration for storage backends (RocketMQ 4/5, Kafka, or in-memory), delivery topology modes (LOCAL\_STICKY\_PULL vs PARTITION\_OWNED\_PULL), and experimental connector runtime settings. A corresponding \log4j2.xml\ is added to provide default console-based logging for the EventMesh and root loggers, with Kafka and RocketMQ logs set to WARN.

eventmesh-runtime/conf · high confidence

New Dockerfiles for EventMesh core and connector runtimes with non-root execution and health checks

This change introduces dedicated Dockerfiles for the EventMesh core runtime and the connector runtime, replacing previous build artifacts. The core image now runs as a non-root user (uid 10001), includes a HEALTHCHECK probing the admin port (10106), and exposes ports 10105 (traffic), 10106 (admin), and 10107 (WebSocket). The connector image similarly runs as a non-root user (uid 10002), uses process-based health checks, and exposes port 8083 for its optional admin interface. Both images are built using Gradle 8.5 with JDK 21, drop unnecessary locale packages, and persist state in mounted volumes for offset storage.

docker · high confidence

New MeshMessage protocol adaptor and frame conversion layer

The MeshMessage protocol plugin now includes a new \MeshMessageFrameAdaptor\ that converts legacy TCP \Package\ objects directly to/from \EventMeshFrame\ objects, bypassing the previous CloudEvent intermediary path. This is complemented by a refactored \MeshMessageProtocolAdaptor\ that handles TCP, HTTP, and gRPC protocol deserialization and serialization, and a new \MeshMessageProtocolConstant\ enum defining protocol-specific constants.

eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage · high confidence

Project rebrand to Apache EventMesh with unified CloudEvents architecture documentation

The project has been rebranded from 'DeFiBus' to 'Apache EventMesh', updating the README, adding a Chinese translation, and establishing the official Apache governance structure via .asf.yaml. The documentation now describes a unified CloudEvents-over-MQ architecture where the message queue serves as a pure write-ahead log, with the EventMesh Runtime managing subscriptions and delivery semantics. A new maturity model (maturity.md) and capability status table are introduced to track the stability of features like the Connector Runtime and A2A agent gateway, while standard repository infrastructure files (.gitignore, .dockerignore, .licenserc.yaml) are added to support the new project structure.

(repo-wide) · high confidence

Refactored SPI plugin loading with dedicated class loaders and centralized constants

The SPI loader module has been restructured to improve how extensions are discovered and loaded. A new \EventMeshExtensionConstant\ class centralizes the metadata directory path (\META-INF/eventmesh/\). The loading logic is now split into two distinct implementations: \MetaInfExtensionClassLoader\ for loading extensions from the standard classpath, and \JarExtensionClassLoader\ for loading extensions from external plugin directories (defaulting to \./plugin\). A new \EventMeshUrlClassLoader\ provides a singleton-managed URL classloader used by the JAR loader to dynamically load plugin JARs. This change separates classpath-based discovery from external plugin loading, allowing plugins to be loaded from configurable directories outside the application classpath.

eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader · high confidence

Standardized configuration model for EventMesh connectors

The connector configuration system has been refactored to use a unified, type-safe hierarchy in \eventmesh-common\. A new base \Config\ class anchors a structure where \SourceConfig\ and \SinkConfig\ extend it, sharing common \PubSubConfig\ (for mesh address, subject, and credentials) and source-specific \PollConfig\ (for queue capacity and batch settings). This standardization is applied across multiple connector implementations—including HTTP, DingTalk, Lark, Knative, MCP, File, and Kafka—each now possessing dedicated source and sink configuration classes that inherit from this common model, ensuring consistent parameter handling and reducing configuration duplication.

eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector · high confidence

Unified storage SPI with standardized capabilities and offset alignment

The Kafka and RocketMQ storage plugins now implement the new MeshStoragePlugin SPI, declaring standardized capabilities such as TopicManagement, PartitionAssignment, ExplicitOffsetCommit, and AlignPullOffset. This change aligns the pull cursor with the ACK offset on restart, ensuring that message delivery semantics are consistent and that offsets are managed explicitly by EventMesh rather than relying on underlying broker group semantics. The plugins now use the EventMeshFrame wire format for internal storage, and the RocketMQ plugin switches to a remoting-based client to avoid conflicts with the standard client library.

eventmesh-storage-plugin/eventmesh-storage-kafka, eventmesh-storage-plugin/eventmesh-storage-rocketmq · high confidence

Test coverage

Added test configuration properties for eventmesh-common; Added test coverage for the new Java SDK modules; Added tests for A2A Gateway, Admin Security, and Task Expiration; Added tests for EventMesh wire framing and codec round-trips; Added tests for EventMeshExtensionFactory singleton and prototype behavior; Added tests for ObjectConverter config conversion; Added tests for ProtocolPluginFactory; Added unit tests for EventMeshMessage, EventMeshThreadFactory, and ResetCountDownLatch; Added unit tests for HTTP message header classes; Added unit tests for HTTP protocol headers and bodies; Added unit tests for MeshMessageProtocolAdaptor; Added unit tests for TCP protocol codec; Added unit tests for configuration loading and validation; Added unit tests for eventmesh-common utility classes; Added unit tests for gRPC CloudEvent utility methods.

Dependencies

Introduce AgentTool SPI and architecture guard for internal package boundaries

This change adds the \eventmesh-agent-plugin\ module, which implements the AgentTool SPI to allow connector plugins to be exposed as LLM tools via an independent agent process communicating through CloudEvents. It also introduces the \eventmesh-architecture-guard\ module, which uses ArchUnit to enforce that downstream modules do not access internal sub-packages of \eventmesh-common\, ensuring strict module isolation.

(dependencies) · high confidence

Upgrade Gradle wrapper to version 8.7

The project's Gradle wrapper has been updated to use Gradle 8.7 (specifically the binary distribution). This ensures that builds are executed with a consistent, modern version of the Gradle build tool, which may bring performance improvements, new features, and compatibility with newer Java versions compared to previous wrapper versions.

gradle · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 60 → 64 (+4.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 86 → 90 (+4.6)
  • Architecture 100 → 92 (-7.6)
  • Maturity 71 → 75 (+4.1)
  • Readiness 70 → 56 (-14.4)
  • Security 55 → 60 (+4.9)

Resolved (143)

  • A2AGatewayHttpHandler.handle (cognitive 27) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • A2AGatewayHttpHandler.handle (cyclomatic 23) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • A2AGatewayHttpHandler.handleSubmitTask (cognitive 22) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (eventmesh-sdks/eventmesh-sdk-go/go.mod)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/AdminServiceGrpc.java)
  • Duplicated block (10 lines × 2) (eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/cloudevents/PublisherServiceGrpc.java)
  • Duplicated block (10 lines × 2) (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/producer/CloudEventProducer.java)
  • Duplicated block (10 lines × 2) (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java)
  • Duplicated block (10 lines × 2) (eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/JarExtensionClassLoader.java)
  • Duplicated block (10 lines × 3) (eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/cloudevents/ConsumerServiceGrpc.java)
  • Duplicated block (11 lines × 2) (eventmesh-connector-runtime/src/main/java/org/apache/eventmesh/connector/ConnectorRuntime.java)
  • Duplicated block (11 lines × 2) (eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/ce/CloudEventsProvider.java)
  • Duplicated block (11 lines × 2) (eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/gateway/A2AGatewayDemo.java)
  • Duplicated block (11 lines × 2) (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java)
  • Duplicated block (11 lines × 2) (eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshExtensionFactory.java)
  • Duplicated block (11 lines × 2) (eventmesh-storage-plugin/eventmesh-storage-rocketmq5/src/main/java/org/apache/eventmesh/storage/rocketmq5/storage/RocketMQ5RemotingStoragePlugin.java)
  • Duplicated block (13 lines × 2) (eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/ce/CloudEventsProvider.java)
  • Duplicated block (5 lines × 2) (eventmesh-connector-runtime/src/main/java/org/apache/eventmesh/connector/ConnectorAdminServer.java)
  • …and 123 more

New (460)

  • A2AFrameAdaptor.toFrame (cognitive 19) (eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AFrameAdaptor.java)
  • A2AFrameAdaptor.toFrame (cyclomatic 16) (eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AFrameAdaptor.java)
  • A2AGatewayHttpHandler.channelRead0 (cognitive 25) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • A2AGatewayHttpHandler.channelRead0 (cyclomatic 16) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • A2AGatewayHttpHandler.handleList (cognitive 27) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • A2AGatewayHttpHandler.handleList (cyclomatic 16) (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/a2a/A2AGatewayHttpHandler.java)
  • AgentApplication.main (cognitive 18) (eventmesh-agent-runtime/src/main/java/org/apache/eventmesh/agent/AgentApplication.java)
  • Ambiguous naming and parameter overlap. The method subscribe takes a SubscriptionItem but no URL, while subscribe_webhook takes both. It is unclear if subscribe is a legacy method, a simplified wrapper, or if SubscriptionItem internally holds the URL. The naming convention subscribe vs subscribe_webhook suggests a distinction that isn't immediately obvious from the signature alone (e.g., is one for HTTP and one for gRPC?).
  • ClassTooLong: CloudEventsClient (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java)
  • ClassTooLong: EventMeshCloudEventUtils (eventmesh-sdks/eventmesh-sdk-rust/src/common/grpc_eventmesh_message_utils.rs)
  • ClassTooLong: RocketMQ5RemotingStoragePlugin (eventmesh-storage-plugin/eventmesh-storage-rocketmq5/src/main/java/org/apache/eventmesh/storage/rocketmq5/storage/RocketMQ5RemotingStoragePlugin.java)
  • ClassTooLong: UniHttpServer (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/http/UniHttpServer.java)
  • ClassTooLong: UniIngressService (eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/ingress/UniIngressService.java)
  • CloudEventsClient.subscribeLiteBytes (cognitive 21) (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java)
  • ConnectorRuntime.runSinkOnce (cognitive 16) (eventmesh-connector-runtime/src/main/java/org/apache/eventmesh/connector/ConnectorRuntime.java)
  • ConnectorRuntime.runSourceOnce (cognitive 20) (eventmesh-connector-runtime/src/main/java/org/apache/eventmesh/connector/ConnectorRuntime.java)
  • Critical CVE: [GHSA redacted] (eventmesh-sdks/eventmesh-sdk-go/go.mod)
  • DefaultStreamingResponse.startReader (cognitive 20) (eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/stream/DefaultStreamingResponse.java)
  • Documentation: no project overview (docs/index.md)
  • Duplicated block (10 lines × 2) (eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/common/ClientType.java)
  • …and 440 more

Changes since last survey

  • 57 commits — 37 feature/other, 20 fixes

By area

  • eventmesh-runtime/src — 29 commits
  • (root) — 5 commits
  • docs/architecture-review — 3 commits
  • docs/feature — 3 commits
  • .github/workflows — 2 commits
  • docker/Dockerfile — 2 commits
  • eventmesh-common/src — 2 commits
  • deploy/kubernetes — 1 commit
  • docs/architecture — 1 commit
  • docs/control-plane.md — 1 commit
  • docs/state-store-failure-matrix.md — 1 commit
  • eventmesh-agent-runtime/src — 1 commit
  • eventmesh-agent/src — 1 commit
  • eventmesh-architecture-guard/src — 1 commit
  • eventmesh-connector-api/src — 1 commit
  • eventmesh-sdks/eventmesh-sdk-java — 1 commit
  • eventmesh-storage-plugin/eventmesh-storage-api — 1 commit
  • eventmesh-storage-plugin/eventmesh-storage-memory — 1 commit

Notable commits

  • fix: Fix broken Quick start README anchors (#5331)
  • fix: fix(#5342): storage capability matrix + arch-guard plugin boundary rules (#5348)
  • fix: fix(#5350): run containers as non-root, add HEALTHCHECK, drop unused locale setup (#5351)
  • fix: fix(#5356): fail fast on PARTITION_OWNED_PULL without shared MetaStore + arch-guard (#5367)
  • fix: fix(#5357): make EventMeshFrame immutable (defensive copy + unmodifiable view + withAttribute) (#5368)
  • fix: fix(#5357): use immutable frame for MQ offset/partition stamps (#5388)
  • fix: fix(#5358): QuotaHandle (AutoCloseable) + gate-scoped QuotaManager access (#5369)
  • fix: fix(#5359): wire DeliveryTopology + MetaStore into runtime boot; rollback on failure (#5370)
  • fix: fix(#5360): fence stale owners from durable side effects (offsets / broker ACK) (#5371)
  • fix: fix(#5361): FrameLimits — enforce wire bounds at encode AND decode (no-alloc rejects) (#5372)
  • fix: fix(#5362): classify A2A operations for quota (SUBMIT=BACKLOG, reads=THROUGHPUT) (#5373)
  • fix: fix(#5364): admin token guard (fail-closed) + chaos in-process cases (#5374)
  • fix: fix(#5376,#5377,#5378): cluster routing, single ownership lifecycle, durable delivery bootstrap (#5383)
  • fix: fix(#5379,#5380,#5381,#5382): recovery re-dispatch, honest deployment modes, fail-closed security gate, connector generation fencing (#5385)
  • fix: fix(cluster): unify delivery topology with Meta CAS + fencing (#5293 #5288) (#5308)
  • fix: fix(connector): complete the 16 incomplete connector implementations (#5394)
  • fix: fix(offset): unify MQ physical offset and align pull cursor to ACK offset on restart
  • fix: fix(protocol): single protocol path — EventMeshFrame across HTTP ingress, filter chain and TCP egress (#5299) (#5319)
  • fix: fix(reliability): atomic offset writes, durable DLQ, epoch delivery IDs (#5289 #5290 #5291 #5292) (#5307)
  • fix: fix(state): persist ReliableDispatcher.pending to DeliveryStateStore (issue #5301 Sub-PR B, fixes #5294 #5295) (#5311)
  • …and 37 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

apache/eventmesh was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 624585d23aea8790eca33483c30c3c94a528834a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-90d5d2fe38ee.