You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by ch...@apache.org on 2026/09/17 07:36:45 UTC

(eventmesh) branch develop updated (e66971f25 -> 44c0a8ab3)

This is an automated email from the ASF dual-hosted git repository.

qqeasonchen pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/eventmesh.git


 discard e66971f25 feat: restore the 1.x default port scheme - 10105 traffic / 10106 admin, A2A to 10108, 10205 gRPC reserved
     new 44c0a8ab3 feat: restore the 1.x default port scheme - 10105 traffic / 10106 admin, A2A to 10108, 10205 gRPC reserved

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (e66971f25)
            \
             N -- N -- N   refs/heads/develop (44c0a8ab3)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/image-smoke-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org


(eventmesh) 01/01: feat: restore the 1.x default port scheme - 10105 traffic / 10106 admin, A2A to 10108, 10205 gRPC reserved

Posted by ch...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qqeasonchen pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/eventmesh.git

commit 44c0a8ab32a30bd3b547d1eaddbd5f7a74d74fa5
Author: qqeasonchen <qq...@gmail.com>
AuthorDate: Thu Sep 17 15:36:33 2026 +0800

    feat: restore the 1.x default port scheme - 10105 traffic / 10106 admin, A2A to 10108, 10205 gRPC reserved
    
    8080/8081 collide with the most common dev-service ports (Tomcat, Jenkins,
    Spring Boot apps, proxies). Move back onto the project's own 1.x default
    port block, which keeps long-time users on familiar numbers:/n
    - traffic HTTP 8080 -> 10105 (all app protocols multiplex on it, incl.
      the legacy /eventmesh/* bridge)
    - admin HTTP    8081 -> 10106
    - WebSocket     8082 -> 10107 (opt-in, unchanged default -1)
    - A2A Gateway   10105 -> 10108 (frees 10105 for the CORE runtime; the
      experimental gateway takes the adjacent 10108)
    - 10205 documented as RESERVED for a future gRPC protocol port (the 1.x
      default): the uni runtime does not ship a gRPC server yet, and the
      port must not be casually taken so a later gRPC addition lands on the
      historical number
    
    Touched: EventMeshApplication defaults, bin/start.sh, docker/Dockerfile(+.connector),
    K8s manifests + README, SDK CloudEventsClient default URL + javadocs, A2AClient /
    ExampleConstants / A2AGatewayDemo, e2e test literals, docs (quickstart,
    configuration, deployment, a2a) and eventmesh.properties comments.
    
    Configuration keys are unchanged - only defaults move; existing
    deployments pinning the old ports keep working.
    
    Also point image-smoke-test.yml at the new container ports (host 18080/18081
    -> container 10105/10106).
---
 .github/workflows/image-smoke-test.yml             |  2 +-
 deploy/kubernetes/README.md                        |  8 ++---
 deploy/kubernetes/connector-deployment.yaml        |  2 +-
 deploy/kubernetes/runtime-service.yaml             |  4 +--
 deploy/kubernetes/runtime-statefulset.yaml         |  8 ++---
 docker/Dockerfile                                  | 18 +++++++-----
 docker/Dockerfile.connector                        |  2 +-
 docs/feature/a2a.md                                | 28 +++++++++---------
 docs/feature/deployment.md                         | 14 ++++-----
 docs/quickstart/configuration.md                   | 11 +++----
 docs/quickstart/getting-started.md                 | 24 +++++++--------
 .../eventmesh/a2a/demo/gateway/A2AGatewayDemo.java |  4 +--
 .../apache/eventmesh/common/ExampleConstants.java  |  2 +-
 .../apache/eventmesh/protocol/a2a/A2AClient.java   |  2 +-
 eventmesh-runtime/bin/start.sh                     |  8 ++---
 eventmesh-runtime/conf/eventmesh.properties        |  4 +--
 .../runtime/boot/EventMeshApplication.java         |  4 +--
 .../boot/ClusterBootstrapCompositionTest.java      |  4 +--
 .../boot/EventMeshApplicationStartupTest.java      |  2 +-
 .../runtime/boot/UniRuntimeTopologyWiringTest.java |  6 ++--
 .../runtime/cluster/ClusterDeliveryFaultTest.java  |  2 +-
 .../runtime/cluster/ClusterMembershipLoadTest.java | 34 +++++++++++-----------
 .../runtime/cluster/LoadBalancingScoringTest.java  | 14 ++++-----
 .../apache/eventmesh/runtime/it/AgentLauncher.java |  2 +-
 .../eventmesh/runtime/it/RuntimeLauncher.java      |  8 ++---
 .../eventmesh/runtime/it/StreamingDemoRunner.java  |  8 ++---
 .../client/cloudevents/CloudEventsClient.java      |  2 +-
 .../cloudevents/CloudEventsClientBuilder.java      |  2 +-
 .../stream/DefaultStreamingResponse.java           |  2 +-
 29 files changed, 118 insertions(+), 113 deletions(-)

diff --git a/.github/workflows/image-smoke-test.yml b/.github/workflows/image-smoke-test.yml
index cd9275fb1..30130d74a 100644
--- a/.github/workflows/image-smoke-test.yml
+++ b/.github/workflows/image-smoke-test.yml
@@ -31,7 +31,7 @@ jobs:
 
       - name: Run the runtime (memory storage default, no broker)
         run: |
-          docker run -d --name em-smoke -p 18080:8080 -p 18081:8081 apache/eventmesh:2.0.0-snapshot
+          docker run -d --name em-smoke -p 18080:10105 -p 18081:10106 apache/eventmesh:2.0.0-snapshot
           for i in $(seq 1 60); do
             if curl -sf http://localhost:18081/admin/health > /dev/null 2>&1; then
               echo "healthy after ${i}s"; break
diff --git a/deploy/kubernetes/README.md b/deploy/kubernetes/README.md
index 3a912800d..3711cb6bc 100644
--- a/deploy/kubernetes/README.md
+++ b/deploy/kubernetes/README.md
@@ -17,13 +17,13 @@ operator path from the legacy `master` branch (`eventmesh-operator/`, issue
 kubectl apply -k .
 ```
 
-The runtime Service exposes `eventmesh-runtime.eventmesh-system:8080`
-(traffic) and `:8081` (admin). Verify:
+The runtime Service exposes `eventmesh-runtime.eventmesh-system:10105`
+(traffic) and `:10106` (admin). Verify:
 
 ```shell
 kubectl -n eventmesh-system get pods
 TOKEN=$(kubectl -n eventmesh-system get secret eventmesh-admin-token -o jsonpath='{.data.token}' | base64 -d)
-kubectl -n eventmesh-system run curl --rm -it --image=curlimages/curl --   curl -s -H "Authorization: Bearer $TOKEN"   http://eventmesh-runtime.eventmesh-system.svc.cluster.local:8081/admin/health
+kubectl -n eventmesh-system run curl --rm -it --image=curlimages/curl --   curl -s -H "Authorization: Bearer $TOKEN"   http://eventmesh-runtime.eventmesh-system.svc.cluster.local:10106/admin/health
 ```
 
 ## What each piece does
@@ -34,7 +34,7 @@ kubectl -n eventmesh-system run curl --rm -it --image=curlimages/curl --   curl
 | `runtime-configmap.yaml` | `eventmesh.properties` (storage endpoints) — subPath-mounted into `conf/` |
 | `runtime-secret.yaml` | Admin bearer token (example; replace before use) |
 | `runtime-statefulset.yaml` | Runtime pods: ports, probes on `/admin/health`, non-root (uid 10001), PVC for the RocksDB offset store |
-| `runtime-service.yaml` | Stable DNS for traffic (8080) + admin (8081) |
+| `runtime-service.yaml` | Stable DNS for traffic (10105) + admin (10106) |
 | `connector-configmap.yaml` | Connector topology as `CONNECTOR_OPTS` (edit + rollout restart) |
 | `connector-deployment.yaml` | Connector-runtime pods (non-root uid 10002, process liveness probe) |
 
diff --git a/deploy/kubernetes/connector-deployment.yaml b/deploy/kubernetes/connector-deployment.yaml
index 9cf29d18f..7dffce461 100644
--- a/deploy/kubernetes/connector-deployment.yaml
+++ b/deploy/kubernetes/connector-deployment.yaml
@@ -48,7 +48,7 @@ spec:
           imagePullPolicy: IfNotPresent
           env:
             - name: EVENTMESH_RUNTIME_URL
-              value: http://eventmesh-runtime.eventmesh-system.svc.cluster.local:8080
+              value: http://eventmesh-runtime.eventmesh-system.svc.cluster.local:10105
             - name: CONNECTOR_OFFSET_MODE
               value: remote
           envFrom:
diff --git a/deploy/kubernetes/runtime-service.yaml b/deploy/kubernetes/runtime-service.yaml
index 0b7925e3e..15d7c12b8 100644
--- a/deploy/kubernetes/runtime-service.yaml
+++ b/deploy/kubernetes/runtime-service.yaml
@@ -31,8 +31,8 @@ spec:
     app.kubernetes.io/component: runtime
   ports:
     - name: http
-      port: 8080
+      port: 10105
       targetPort: http
     - name: admin
-      port: 8081
+      port: 10106
       targetPort: admin
diff --git a/deploy/kubernetes/runtime-statefulset.yaml b/deploy/kubernetes/runtime-statefulset.yaml
index feb5e9236..83267e10a 100644
--- a/deploy/kubernetes/runtime-statefulset.yaml
+++ b/deploy/kubernetes/runtime-statefulset.yaml
@@ -51,16 +51,16 @@ spec:
           imagePullPolicy: IfNotPresent
           ports:
             - name: http
-              containerPort: 8080
+              containerPort: 10105
             - name: admin
-              containerPort: 8081
+              containerPort: 10106
           env:
             - name: EVENTMESH_STORAGE_TYPE
               value: memory
             - name: EVENTMESH_HTTP_PORT
-              value: "8080"
+              value: "10105"
             - name: EVENTMESH_ADMIN_PORT
-              value: "8081"
+              value: "10106"
             # Dependent env var: bin/start.sh passes JAVA_OPTS to java as
             # extra -D flags, so the admin token reaches the JVM without
             # landing in the pod spec or `kubectl describe` output.
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 0613b2ab3..f2f43cd19 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -58,20 +58,24 @@ RUN chmod +x bin/*.sh \
  && mkdir -p /data/app/eventmesh/data /data/app/eventmesh/logs \
  && chown eventmesh:eventmesh /data/app/eventmesh/data /data/app/eventmesh/logs
 
-# 8080 = traffic HTTP (/events/* CloudEvents + legacy /eventmesh/*).
-# 8081 = independent admin port (UniAdminServer /admin/*, incl. GET /admin/health).
-# 8082 = WebSocket push transport (opt-in via -Deventmesh.ws.port in JAVA_OPTS).
+# 10105 = traffic HTTP (/events/* CloudEvents + legacy /eventmesh/*).
+# 10106 = independent admin port (UniAdminServer /admin/*, incl. GET /admin/health).
+# 10107 = WebSocket push transport (opt-in via -Deventmesh.ws.port in JAVA_OPTS).
+# 10108 = A2A gateway demos (Experimental, not started by bin/start.sh).
+# 10205 = RESERVED for the future gRPC protocol port (the 1.x default; the uni
+#         runtime does not ship a gRPC server yet - do not bind it to another
+#         service so gRPC can land on its historical number).
 # Note (#5380 deployment modes, see docs/feature/deployment.md, deployment modes): this image is the
 # CORE Runtime. The A2A Gateway (A2AGatewayServer, EXPERIMENTAL) and the v2 streaming
 # session layer are NOT started by bin/start.sh; they require a dedicated launcher /
 # embedder wiring and are documented as separate deployment modes.
-EXPOSE 8080 8081 8082
+EXPOSE 10105 10106 10107
 
 # Liveness probe against the admin health endpoint (issue #5350). Uses bash's
 # /dev/tcp redirection so no curl/wget layer is added; any non-200 first line
 # (connection refused, 5xx) fails the check.
 HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=3 \
-  CMD bash -c 'exec 3<>/dev/tcp/127.0.0.1/${EVENTMESH_ADMIN_PORT:-8081} \
+  CMD bash -c 'exec 3<>/dev/tcp/127.0.0.1/${EVENTMESH_ADMIN_PORT:-10106} \
     && printf "GET /admin/health HTTP/1.0\r\nHost: localhost\r\n\r\n" >&3 \
     && head -n1 <&3 | grep -q " 200 "' || exit 1
 
@@ -83,8 +87,8 @@ ENV CONFPATH=/data/app/eventmesh/conf
 # needed. Override with -e EVENTMESH_STORAGE_TYPE=kafka|rocketmq|rocketmq5 and
 # supply the backend address via conf/eventmesh.properties (mount a volume over
 ENV EVENTMESH_STORAGE_TYPE=memory
-ENV EVENTMESH_HTTP_PORT=8080
-ENV EVENTMESH_ADMIN_PORT=8081
+ENV EVENTMESH_HTTP_PORT=10105
+ENV EVENTMESH_ADMIN_PORT=10106
 ENV EVENTMESH_OFFSET_PATH=/data/app/eventmesh/data/offset
 # Extra -D flags: TLS keystore, ws.port, meta.type/meta.addr for clustering, …
 # For container memory limits consider -XX:MaxRAMPercentage=70.
diff --git a/docker/Dockerfile.connector b/docker/Dockerfile.connector
index c5235e72a..2af4d1435 100644
--- a/docker/Dockerfile.connector
+++ b/docker/Dockerfile.connector
@@ -58,7 +58,7 @@ ENV DOCKER=true
 ENV EVENTMESH_HOME=/data/app/connector
 ENV EVENTMESH_LOG_HOME=/data/app/connector/logs
 ENV CONFPATH=/data/app/connector/conf
-ENV EVENTMESH_RUNTIME_URL=http://localhost:8080
+ENV EVENTMESH_RUNTIME_URL=http://localhost:10105
 ENV CONNECTOR_ADMIN_PORT=0
 ENV CONNECTOR_OFFSET_MODE=remote
 ENV CONNECTOR_OFFSET_PATH=/data/app/connector/data/connector-offset
diff --git a/docs/feature/a2a.md b/docs/feature/a2a.md
index 09c940431..7cbb9df25 100644
--- a/docs/feature/a2a.md
+++ b/docs/feature/a2a.md
@@ -191,7 +191,7 @@ The `A2AClient` provides a typed Java API for agent developers:
 
 ```java
 A2AClient client = A2AClient.builder()
-    .gatewayUrl("http://localhost:10105")
+    .gatewayUrl("http://localhost:10108")
     .namespace("global")
     .agentName("my-agent")
     .agentCard(card)
@@ -401,7 +401,7 @@ The A2A Gateway provides a REST API for external clients and non-Java agents.
 #### 5.3.1 Submit Task (Sync)
 
 ```bash
-curl -X POST 'http://localhost:10105/a2a/tasks?mode=sync' \
+curl -X POST 'http://localhost:10108/a2a/tasks?mode=sync' \
   -H 'Content-Type: application/json' \
   -d '{"targetAgent":"weather-agent","message":"Beijing"}'
 ```
@@ -418,7 +418,7 @@ Response:
 #### 5.3.2 Submit Task (Async)
 
 ```bash
-curl -X POST 'http://localhost:10105/a2a/tasks?mode=async' \
+curl -X POST 'http://localhost:10108/a2a/tasks?mode=async' \
   -H 'Content-Type: application/json' \
   -d '{"targetAgent":"weather-agent","message":"Shanghai"}'
 ```
@@ -435,7 +435,7 @@ Response (HTTP 202):
 #### 5.3.3 SSE Stream
 
 ```bash
-curl -N http://localhost:10105/a2a/tasks/task-a1b2c3d4/stream
+curl -N http://localhost:10108/a2a/tasks/task-a1b2c3d4/stream
 ```
 
 Response (`text/event-stream`):
@@ -450,14 +450,14 @@ data: {"taskId":"task-a1b2c3d4","state":"completed","data":"The weather in Beiji
 #### 5.3.4 List Agents
 
 ```bash
-curl http://localhost:10105/a2a/agents
+curl http://localhost:10108/a2a/agents
 ```
 
 ### 5.4 A2AClient SDK (Java)
 
 ```java
 A2AClient client = A2AClient.builder()
-    .gatewayUrl("http://localhost:10105")
+    .gatewayUrl("http://localhost:10108")
     .namespace("global")
     .agentName("my-agent")
     .agentCard(card)
@@ -767,29 +767,29 @@ A2A Gateway 提供完整的 REST API,支持非 Java 客户端通过 HTTP 交
 
 ```bash
 # 同步提交 task
-curl -X POST 'http://localhost:10105/a2a/tasks?mode=sync' \
+curl -X POST 'http://localhost:10108/a2a/tasks?mode=sync' \
   -H 'Content-Type: application/json' \
   -d '{"targetAgent":"weather-agent","message":"Beijing"}'
 
 # 异步提交 task
-curl -X POST 'http://localhost:10105/a2a/tasks?mode=async' \
+curl -X POST 'http://localhost:10108/a2a/tasks?mode=async' \
   -H 'Content-Type: application/json' \
   -d '{"targetAgent":"weather-agent","message":"Shanghai"}'
 
 # 查询状态
-curl http://localhost:10105/a2a/tasks/{taskId}
+curl http://localhost:10108/a2a/tasks/{taskId}
 
 # 列出 tasks(支持 state/limit/offset)
-curl 'http://localhost:10105/a2a/tasks?state=COMPLETED&limit=20&offset=0'
+curl 'http://localhost:10108/a2a/tasks?state=COMPLETED&limit=20&offset=0'
 
 # SSE 流式推送(含 heartbeat 保活)
-curl -N http://localhost:10105/a2a/tasks/{taskId}/stream
+curl -N http://localhost:10108/a2a/tasks/{taskId}/stream
 
 # 健康检查
-curl http://localhost:10105/a2a/health
+curl http://localhost:10108/a2a/health
 
 # 列出 agents
-curl http://localhost:10105/a2a/agents
+curl http://localhost:10108/a2a/agents
 ```
 
 #### REST API 端点列表
@@ -812,7 +812,7 @@ curl http://localhost:10105/a2a/agents
 
 ```java
 A2AClient client = A2AClient.builder()
-    .gatewayUrl("http://localhost:10105")
+    .gatewayUrl("http://localhost:10108")
     .namespace("global")
     .agentName("my-agent")
     .agentCard(card)
diff --git a/docs/feature/deployment.md b/docs/feature/deployment.md
index 6783d0a61..1e364e278 100644
--- a/docs/feature/deployment.md
+++ b/docs/feature/deployment.md
@@ -25,9 +25,9 @@ distribution does not start the A2A listener.
 
 | Port | Server | Notes |
 | --- | --- | --- |
-| 8080 | Traffic HTTP | `/events/*`, `/session/*`, `/agent/*`, legacy `/eventmesh/*` |
-| 8081 | Admin HTTP | `/admin/*` + `/metrics` (Prometheus); token-guarded |
-| 8082 | WebSocket *(opt-in)* | `-Deventmesh.ws.port=8082`; disabled by default |
+| 10105 | Traffic HTTP | `/events/*`, `/session/*`, `/agent/*`, legacy `/eventmesh/*` |
+| 10106 | Admin HTTP | `/admin/*` + `/metrics` (Prometheus); token-guarded |
+| 10107 | WebSocket *(opt-in)* | `-Deventmesh.ws.port=10107`; disabled by default |
 
 ## Running
 
@@ -37,7 +37,7 @@ distribution does not start the A2A listener.
 docker run -d --name eventmesh \
   -e EVENTMESH_STORAGE_TYPE=kafka \
   -e EVENTMESH_KAFKA_NAMESRV=YOUR_KAFKA:9092 \
-  -p 8080:8080 -p 8081:8081 \
+  -p 10105:10105 -p 10106:10106 \
   apache/eventmesh:latest
 ```
 
@@ -62,7 +62,7 @@ onto `-D` system properties.
 ### Verify
 
 ```shell
-curl http://localhost:8081/admin/health     # {"status":"UP"}
+curl http://localhost:10106/admin/health     # {"status":"UP"}
 ```
 
 ## Kubernetes
@@ -95,7 +95,7 @@ Multi-instance coordination keys:
 ```properties
 -Deventmesh.meta.type=nacos          # cluster mode; currently: nacos
 -Deventmesh.meta.addr=nacos:8848
--Deventmesh.instance.id=10.0.0.5:8080   # defaults to host:port
+-Deventmesh.instance.id=10.0.0.5:10105  # defaults to host:port
 -Deventmesh.offset.meta=true         # opt-in remote offset tier (see below)
 ```
 
@@ -113,7 +113,7 @@ process** — `eventmesh-connector-runtime` — and talk to the runtime over
 HTTP + CloudEvents:
 
 ```shell
-docker run -e EVENTMESH_RUNTIME_URL=http://runtime:8080 eventmesh-connector:uni
+docker run -e EVENTMESH_RUNTIME_URL=http://runtime:10105 eventmesh-connector:uni
 ```
 
 Connector definitions are managed through `/admin/connectors` (CRUD) and
diff --git a/docs/quickstart/configuration.md b/docs/quickstart/configuration.md
index a0705ff1e..e459127ee 100644
--- a/docs/quickstart/configuration.md
+++ b/docs/quickstart/configuration.md
@@ -75,9 +75,10 @@ Usually set via `-D` by `bin/start.sh`; override here if needed.
 
 | Key | Default | Description |
 |---|---|---|
-| `eventmesh.http.port` | `8080` | Traffic HTTP (`/events/*`, `/agent/*`, `/session/*`) |
-| `eventmesh.admin.port` | `8081` | Admin HTTP (`/admin/*`, `/metrics`) |
-| `eventmesh.ws.port` | `-1` (disabled) | WebSocket push port; set e.g. `8082` to enable |
+| `eventmesh.http.port` | `10105` | Traffic HTTP (`/events/*`, `/agent/*`, `/session/*`) |
+| `eventmesh.admin.port` | `10106` | Admin HTTP (`/admin/*`, `/metrics`) |
+| `eventmesh.ws.port` | `-1` (disabled) | WebSocket push port; set e.g. `10107` to enable |
+| `eventmesh.grpc.port` | `10205` | RESERVED for the future gRPC protocol (not served yet; keeps the 1.x default warm) |
 | `eventmesh.offset.path` | `./data/offset` | Local offset store directory |
 
 ## 4. Security
@@ -112,7 +113,7 @@ programmatically via `configureTopicRateLimit(topic, capacity, permitsPerSecond)
 buckets make publish fail with `RateLimitedException` → HTTP `429` on the publish endpoint.
 Cluster-wide limits can be inspected and adjusted at `POST /admin/ratelimit`.
 
-## 6. Admin endpoints (port 8081)
+## 6. Admin endpoints (port 10106)
 
 | Endpoint | Purpose |
 |---|---|
@@ -129,7 +130,7 @@ Cluster-wide limits can be inspected and adjusted at `POST /admin/ratelimit`.
 | `GET/POST /admin/connectors` | connector definitions (CRUD) |
 | `GET /admin/connector-workers` | connector worker registry |
 
-## 7. Traffic endpoints (port 8080)
+## 7. Traffic endpoints (port 10105)
 
 Full request/response shapes: see the [client guide](../feature/client-java.md).
 Summary:
diff --git a/docs/quickstart/getting-started.md b/docs/quickstart/getting-started.md
index ea1de2886..9413b201c 100644
--- a/docs/quickstart/getting-started.md
+++ b/docs/quickstart/getting-started.md
@@ -44,7 +44,7 @@ changes.
 ```shell
 sudo docker pull apache/eventmesh:latest
 sudo docker run -d --name eventmesh \
-  -p 8080:8080 -p 8081:8081 \
+  -p 10105:10105 -p 10106:10106 \
   apache/eventmesh:latest
 ```
 
@@ -53,8 +53,8 @@ dependency, ready for a smoke test as-is. For a real broker add
 `-e EVENTMESH_STORAGE_TYPE=kafka` (or `rocketmq` / `rocketmq5`) and the
 backend address keys shown below.
 
-Ports: `8080` = traffic HTTP (`/events/*`), `8081` = admin HTTP (`/admin/*`). The WebSocket
-push port (`8082`) is opt-in.
+Ports: `10105` = traffic HTTP (`/events/*`), `10106` = admin HTTP (`/admin/*`). The WebSocket
+push port (`10107`) is opt-in.
 
 ### Option B — From source
 
@@ -76,7 +76,7 @@ Storage-specific keys (all overridable via `-D` system properties) are documente
 ### Verify it is up
 
 ```shell
-curl http://localhost:8081/admin/health
+curl http://localhost:10106/admin/health
 # {"status":"UP"}
 ```
 
@@ -86,7 +86,7 @@ Applications send standard [CloudEvents](https://cloudevents.io) 1.0 over HTTP.
 means the event is durably in the WAL:
 
 ```shell
-curl -X POST "http://localhost:8080/events/publish?topic=orders" \
+curl -X POST "http://localhost:10105/events/publish?topic=orders" \
   -H "Content-Type: application/cloudevents+json" \
   -d '{
     "specversion": "1.0",
@@ -105,17 +105,17 @@ then receive via one of three transports:
 
 ```shell
 # 1. register: clientId + topic + distribution mode
-curl -X POST http://localhost:8080/events/subscribe \
+curl -X POST http://localhost:10105/events/subscribe \
   -H "Content-Type: application/json" \
   -d '{"clientId":"order-svc","topic":"orders","mode":"LOAD_BALANCE"}'
 
 # 2a. HTTP long-polling (params: clientId, max, timeoutMs)
-curl "http://localhost:8080/events/poll?clientId=order-svc&max=100&timeoutMs=30000"
+curl "http://localhost:10105/events/poll?clientId=order-svc&max=100&timeoutMs=30000"
 # → [{"deliveryId":"d-...","event":{...CloudEvent...}}, ...]
 
 # 2b. after processing, acknowledge so the offset advances (at-least-once).
 #     One deliveryId per call - take it from the poll response above.
-curl -X POST http://localhost:8080/events/ack \
+curl -X POST http://localhost:10105/events/ack \
   -H "Content-Type: application/json" \
   -d '{"deliveryId":"d-..."}'
 ```
@@ -132,7 +132,7 @@ SSE and WebSocket push are also available; the raw HTTP forms are:
 
 ```shell
 # SSE — server push over a long-lived HTTP connection
-curl -N "http://localhost:8080/events/stream?clientId=order-svc" \r
+curl -N "http://localhost:10105/events/stream?clientId=order-svc" \r
   -H "Accept: text/event-stream"
 
 # WebSocket — full-duplex server push over the dedicated WS port
@@ -140,7 +140,7 @@ curl -N "http://localhost:8080/events/stream?clientId=order-svc" \r
 curl --include --no-buffer \r
   -H "Connection: Upgrade" -H "Upgrade: websocket" \r
   -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: dGVzdA==" \r
-  "http://localhost:8082/events/stream?clientId=order-svc"
+  "http://localhost:10107/events/stream?clientId=order-svc"
 ```
 
 The `CloudEventsClient` Java SDK wraps all three transports —
@@ -151,7 +151,7 @@ The `CloudEventsClient` Java SDK wraps all three transports —
 
 ```java
 CloudEventsClient client = CloudEventsClient.builder()
-    .baseUrl("http://localhost:8080")
+    .baseUrl("http://localhost:10105")
     .build();
 client.init();
 
@@ -180,4 +180,4 @@ Full API (request/reply, streaming sessions, lite topics, SSE/WS): see the
 - [A2A gateway](../feature/a2a.md) — agent-to-agent messaging (Experimental)
 - Admin API (`/admin/*`) quick reference: `metrics`, `subscriptions`, `offsets`, `clients`,
   `client/reject`, `dlq/replay`, `dlq/browse`, `ratelimit`, `health`, `connectors`,
-  `connector-workers` on port 8081
+  `connector-workers` on port 10106
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/gateway/A2AGatewayDemo.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/gateway/A2AGatewayDemo.java
index be4bd0c03..6eb50cdc7 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/gateway/A2AGatewayDemo.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/a2a/demo/gateway/A2AGatewayDemo.java
@@ -37,7 +37,7 @@ import lombok.extern.slf4j.Slf4j;
  * <ol>
  *   <li>Start the A2A Gateway Server first:
  *       <pre>java org.apache.eventmesh.runtime.a2a.A2AGatewayServer</pre>
- *       (server listens on port 10105 by default, with a pre-registered weather-agent)</li>
+ *       (server listens on port 10108 by default, with a pre-registered weather-agent)</li>
  *   <li>Then run this client demo.</li>
  * </ol>
  *
@@ -49,7 +49,7 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class A2AGatewayDemo {
 
-    private static final String GATEWAY_URL = "http://localhost:10105";
+    private static final String GATEWAY_URL = "http://localhost:10108";
     private static final String NAMESPACE = "global";
 
     public static void main(String[] args) throws Exception {
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java
index 9972ca743..e60d0ca85 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java
@@ -28,7 +28,7 @@ public class ExampleConstants {
     public static final String EVENTMESH_GRPC_PORT = "eventmesh.grpc.port";
 
     public static final String DEFAULT_EVENTMESH_IP = "localhost";
-    public static final String DEFAULT_EVENTMESH_IP_PORT = "127.0.0.1:10105";
+    public static final String DEFAULT_EVENTMESH_IP_PORT = "127.0.0.1:10108";
 
     public static final String EVENTMESH_GRPC_ASYNC_TEST_TOPIC = "TEST-TOPIC-GRPC-ASYNC";
     public static final String EVENTMESH_GRPC_RR_TEST_TOPIC = "TEST-TOPIC-GRPC-RR";
diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AClient.java b/eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AClient.java
index 94b0f73bb..4852c6cde 100644
--- a/eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AClient.java
+++ b/eventmesh-protocol-plugin/eventmesh-protocol-a2a/src/main/java/org/apache/eventmesh/protocol/a2a/A2AClient.java
@@ -442,7 +442,7 @@ public class A2AClient implements AutoCloseable {
 
     public static class Builder {
 
-        private String gatewayUrl = "http://localhost:10105";
+        private String gatewayUrl = "http://localhost:10108";
         private String namespace = "global";
         private String agentName;
         private AgentCard agentCard;
diff --git a/eventmesh-runtime/bin/start.sh b/eventmesh-runtime/bin/start.sh
index 82e4a1e4a..cfc58001e 100644
--- a/eventmesh-runtime/bin/start.sh
+++ b/eventmesh-runtime/bin/start.sh
@@ -24,8 +24,8 @@
 #
 # Env vars (all optional):
 #   EVENTMESH_STORAGE_TYPE  kafka | rocketmq | rocketmq5    (default kafka)
-#   EVENTMESH_HTTP_PORT     traffic HTTP port              (default 8080)
-#   EVENTMESH_ADMIN_PORT    admin HTTP port                (default 8081)
+#   EVENTMESH_HTTP_PORT     traffic HTTP port              (default 10105)
+#   EVENTMESH_ADMIN_PORT    admin HTTP port                (default 10106)
 #   EVENTMESH_OFFSET_PATH   RocksDB offset dir             (default $EVENTMESH_HOME/data/offset)
 #   JAVA_OPTS               extra -D flags (tls.*, ws.port, meta.*, …)
 #
@@ -36,8 +36,8 @@ EVENTMESH_HOME="${EVENTMESH_HOME:-$(cd "$SCRIPT_DIR/.." && pwd)}"
 cd "$EVENTMESH_HOME"
 
 EVENTMESH_STORAGE_TYPE="${EVENTMESH_STORAGE_TYPE:-kafka}"
-EVENTMESH_HTTP_PORT="${EVENTMESH_HTTP_PORT:-8080}"
-EVENTMESH_ADMIN_PORT="${EVENTMESH_ADMIN_PORT:-8081}"
+EVENTMESH_HTTP_PORT="${EVENTMESH_HTTP_PORT:-10105}"
+EVENTMESH_ADMIN_PORT="${EVENTMESH_ADMIN_PORT:-10106}"
 EVENTMESH_OFFSET_PATH="${EVENTMESH_OFFSET_PATH:-$EVENTMESH_HOME/data/offset}"
 JAVA_OPTS="${JAVA_OPTS:-}"
 
diff --git a/eventmesh-runtime/conf/eventmesh.properties b/eventmesh-runtime/conf/eventmesh.properties
index 233fed8c6..a864ebdd1 100644
--- a/eventmesh-runtime/conf/eventmesh.properties
+++ b/eventmesh-runtime/conf/eventmesh.properties
@@ -49,8 +49,8 @@ eventMesh.server.kafka.namesrvAddr=localhost:9092
 #sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="USER" password="PASS";
 
 # ===== Runtime ports (usually set via -D by bin/start.sh) =====
-#eventmesh.http.port=8080
-#eventmesh.admin.port=8081
+#eventmesh.http.port=10105
+#eventmesh.admin.port=10106
 #eventmesh.ws.port=-1
 #eventmesh.offset.path=./data/offset
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshApplication.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshApplication.java
index eb80ad3b0..a969c3e7b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshApplication.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshApplication.java
@@ -376,8 +376,8 @@ public class EventMeshApplication {
 
     public static void main(String[] args) throws Exception {
         String storageType = System.getProperty("eventmesh.storage.type", "memory");
-        int httpPort = Integer.getInteger("eventmesh.http.port", 8080);
-        final int adminPort = Integer.getInteger("eventmesh.admin.port", 8081);
+        int httpPort = Integer.getInteger("eventmesh.http.port", 10105);
+        final int adminPort = Integer.getInteger("eventmesh.admin.port", 10106);
         final String offsetPath = System.getProperty("eventmesh.offset.path", "./data/offset");
 
         // Cluster config (optional): -Deventmesh.meta.type=nacos -Deventmesh.meta.addr=localhost:8848
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/ClusterBootstrapCompositionTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/ClusterBootstrapCompositionTest.java
index 0a69b5fd9..2200ef41e 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/ClusterBootstrapCompositionTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/ClusterBootstrapCompositionTest.java
@@ -50,7 +50,7 @@ class ClusterBootstrapCompositionTest {
     private UniRuntime runtime() {
         return new UniRuntime(new StubStorage(), new InMemoryOffsetStore(),
             20L, 50L, 100, 50L,
-            org.apache.eventmesh.runtime.cluster.DeliveryTopology.LOCAL_STICKY_PULL, "test", "test:8080");
+            org.apache.eventmesh.runtime.cluster.DeliveryTopology.LOCAL_STICKY_PULL, "test", "test:10105");
     }
 
     /** #5377: with the app-layer ownership pre-installed, UniRuntime reuses it — one lifecycle. */
@@ -62,7 +62,7 @@ class ClusterBootstrapCompositionTest {
         org.apache.eventmesh.runtime.cluster.FencingToken token =
             new org.apache.eventmesh.runtime.cluster.FencingToken();
         org.apache.eventmesh.runtime.cluster.ClusterMembership membership =
-            new org.apache.eventmesh.runtime.cluster.ClusterMembership(meta, "test", "test:8080",
+            new org.apache.eventmesh.runtime.cluster.ClusterMembership(meta, "test", "test:10105",
                 15_000L, System::currentTimeMillis, token);
         PartitionOwnership installed = new PartitionOwnership(
             membership, meta, runtime.storage(), "test", 5_000L, System::currentTimeMillis, token);
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshApplicationStartupTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshApplicationStartupTest.java
index c699098e1..cd433f85d 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshApplicationStartupTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshApplicationStartupTest.java
@@ -99,7 +99,7 @@ class EventMeshApplicationStartupTest {
 
     private static UniRuntime runtime() {
         return new UniRuntime(new StubStorage(), new InMemoryOffsetStore(),
-            20L, 50L, 100, 50L, DeliveryTopology.LOCAL_STICKY_PULL, "test", "test:8080");
+            20L, 50L, 100, 50L, DeliveryTopology.LOCAL_STICKY_PULL, "test", "test:10105");
     }
 
     @Test
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/UniRuntimeTopologyWiringTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/UniRuntimeTopologyWiringTest.java
index 0a8a0019d..9351f88e6 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/UniRuntimeTopologyWiringTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/UniRuntimeTopologyWiringTest.java
@@ -62,7 +62,7 @@ class UniRuntimeTopologyWiringTest {
         // #5356: PARTITION_OWNED_PULL + missing MetaStore must throw at start(), never
         // silently degrade to an isolated in-process store (poll-all duplicate consumption).
         UniRuntime runtime = new UniRuntime(new RecordingStorage(), new InMemoryOffsetStore(),
-            20L, 50L, 100, 50L, DeliveryTopology.PARTITION_OWNED_PULL, "A", "A:8080");
+            20L, 50L, 100, 50L, DeliveryTopology.PARTITION_OWNED_PULL, "A", "A:10105");
         // clusterMeta deliberately left null
         IllegalStateException ex = assertThrows(IllegalStateException.class, runtime::start);
         assertTrue(ex.getMessage().contains("PARTITION_OWNED_PULL requires a shared MetaStore"),
@@ -75,9 +75,9 @@ class UniRuntimeTopologyWiringTest {
         RecordingStorage storageA = new RecordingStorage();
         RecordingStorage storageB = new RecordingStorage();
         UniRuntime runtimeA = new UniRuntime(storageA, new InMemoryOffsetStore(), 20L, 50L, 100, 50L,
-            DeliveryTopology.PARTITION_OWNED_PULL, "A", "A:8080");
+            DeliveryTopology.PARTITION_OWNED_PULL, "A", "A:10105");
         UniRuntime runtimeB = new UniRuntime(storageB, new InMemoryOffsetStore(), 20L, 50L, 100, 50L,
-            DeliveryTopology.PARTITION_OWNED_PULL, "B", "B:8080");
+            DeliveryTopology.PARTITION_OWNED_PULL, "B", "B:10105");
         runtimeA.clusterMeta = sharedMeta;
         runtimeB.clusterMeta = sharedMeta;
         try {
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterDeliveryFaultTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterDeliveryFaultTest.java
index 52c63c19b..efecbf0ed 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterDeliveryFaultTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterDeliveryFaultTest.java
@@ -191,7 +191,7 @@ class ClusterDeliveryFaultTest {
             this.id = id;
             this.meta = new PartitionedMetaStore(sharedMeta);
             FencingToken token = new FencingToken(bootEpoch, new AtomicLong(0));
-            this.membership = new ClusterMembership(meta, id, id + ":8080", TTL_MS, clock::get, token);
+            this.membership = new ClusterMembership(meta, id, id + ":10105", TTL_MS, clock::get, token);
             this.storage = new FakeStorage();
             this.ownership = new PartitionOwnership(membership, meta, storage, id, 1_000L, clock::get, token);
         }
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterMembershipLoadTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterMembershipLoadTest.java
index 467a9096c..a77659e6c 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterMembershipLoadTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/ClusterMembershipLoadTest.java
@@ -37,22 +37,22 @@ class ClusterMembershipLoadTest {
     void heartbeatWritesLoadAndAddress() {
         AtomicClock clock = new AtomicClock();
         InMemoryMetaStore meta = new InMemoryMetaStore();
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
         m.withLoadSupplier(() -> "3|2000|1500|0.25");
         m.heartbeat();
 
         String val = meta.get(ClusterMembership.INSTANCE_PREFIX + "self");
         // <ts>|<addr>|<active>|<inflow>|<outflow>|<cpu>
-        assertEquals("0|self:8080|3|2000|1500|0.25", val);
+        assertEquals("0|self:10105|3|2000|1500|0.25", val);
     }
 
     @Test
     void heartbeatWithoutLoadSupplierOmitsLoadFields() {
         AtomicClock clock = new AtomicClock();
         InMemoryMetaStore meta = new InMemoryMetaStore();
-        ClusterMembership m = new ClusterMembership(meta, "self", "1.2.3.4:8080", 15_000L, clock::get, new FencingToken());
+        ClusterMembership m = new ClusterMembership(meta, "self", "1.2.3.4:10105", 15_000L, clock::get, new FencingToken());
         m.heartbeat();
-        assertEquals("0|1.2.3.4:8080", meta.get(ClusterMembership.INSTANCE_PREFIX + "self"));
+        assertEquals("0|1.2.3.4:10105", meta.get(ClusterMembership.INSTANCE_PREFIX + "self"));
     }
 
     @Test
@@ -60,37 +60,37 @@ class ClusterMembershipLoadTest {
         AtomicClock clock = new AtomicClock(20_000L); // now = 20000
         InMemoryMetaStore meta = new InMemoryMetaStore();
         // Two live peers with load, one stale.
-        meta.put("/em/instances/a", "19000|h1:8080|5|5000|4000|0.10"); // age 1000 < ttl
-        meta.put("/em/instances/b", "19500|h2:8080|20|5000000|4000000|0.90"); // heavy, age 500 < ttl
-        meta.put("/em/instances/c", "1000|h3:8080|1|100|50|0.01"); // age 19000 > ttl 15000 → pruned
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        meta.put("/em/instances/a", "19000|h1:10105|5|5000|4000|0.10"); // age 1000 < ttl
+        meta.put("/em/instances/b", "19500|h2:10105|20|5000000|4000000|0.90"); // heavy, age 500 < ttl
+        meta.put("/em/instances/c", "1000|h3:10105|1|100|50|0.01"); // age 19000 > ttl 15000 → pruned
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
 
         Map<String, ClusterMembership.InstanceInfo> live = m.liveInstancesWithLoad();
         assertEquals(2, live.size(), "stale peer c must be pruned");
         assertNotNull(live.get("a"));
-        assertEquals("h1:8080", live.get("a").address);
+        assertEquals("h1:10105", live.get("a").address);
         assertEquals(5, live.get("a").load.activeSessions);
         assertEquals(0.10, live.get("a").load.cpuLoad, 1e-9);
-        assertEquals("h2:8080", live.get("b").address);
+        assertEquals("h2:10105", live.get("b").address);
         assertEquals(20, live.get("b").load.activeSessions);
     }
 
     @Test
     void setSelfAddressOverridesPlaceholder() {
         ClusterMembership m = new ClusterMembership(new InMemoryMetaStore(), "self", "self", 15_000L, () -> 0, new FencingToken());
-        m.setSelfAddress("10.0.0.5:8080");
+        m.setSelfAddress("10.0.0.5:10105");
         // addressOf(self) returns the overridden address.
-        assertEquals("10.0.0.5:8080", m.addressOf("self"));
+        assertEquals("10.0.0.5:10105", m.addressOf("self"));
     }
 
     @Test
     void peerWithoutLoadReportsNullSnapshot() {
         AtomicClock clock = new AtomicClock(10_000L);
         InMemoryMetaStore meta = new InMemoryMetaStore();
-        meta.put("/em/instances/old", "9500|h:8080"); // old-format peer, no load fields
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        meta.put("/em/instances/old", "9500|h:10105"); // old-format peer, no load fields
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
         Map<String, ClusterMembership.InstanceInfo> live = m.liveInstancesWithLoad();
-        assertEquals("h:8080", live.get("old").address);
+        assertEquals("h:10105", live.get("old").address);
         assertNull(live.get("old").load, "peer without load fields must parse to null snapshot");
     }
 
@@ -99,8 +99,8 @@ class ClusterMembershipLoadTest {
         // A peer that reports only active + inflow (older build) → outflow/cpu default 0, not null.
         AtomicClock clock = new AtomicClock(10_000L);
         InMemoryMetaStore meta = new InMemoryMetaStore();
-        meta.put("/em/instances/p", "9500|h:8080|7|300");
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        meta.put("/em/instances/p", "9500|h:10105|7|300");
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
         LoadMeter.Snapshot load = m.liveInstancesWithLoad().get("p").load;
         assertEquals(7, load.activeSessions);
         assertEquals(300L, load.inflowBytesPerSec);
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/LoadBalancingScoringTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/LoadBalancingScoringTest.java
index b4822f1b5..9b96c9251 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/LoadBalancingScoringTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cluster/LoadBalancingScoringTest.java
@@ -57,13 +57,13 @@ class LoadBalancingScoringTest {
         AtomicClock clock = new AtomicClock(20_000L);
         InMemoryMetaStore meta = new InMemoryMetaStore();
         // Instance A: light load
-        meta.put("/em/instances/a", "19000|h1:8080|2|500|400|0.10");
+        meta.put("/em/instances/a", "19000|h1:10105|2|500|400|0.10");
         // Instance B: heavy load
-        meta.put("/em/instances/b", "19500|h2:8080|20|5000000|4000000|0.90");
+        meta.put("/em/instances/b", "19500|h2:10105|20|5000000|4000000|0.90");
         // Instance C: stale (should be pruned)
-        meta.put("/em/instances/c", "1000|h3:8080|1|100|50|0.01");
+        meta.put("/em/instances/c", "1000|h3:10105|1|100|50|0.01");
 
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
         Map<String, ClusterMembership.InstanceInfo> live = m.liveInstancesWithLoad();
 
         assertEquals(2, live.size(), "stale instance c must be pruned");
@@ -84,11 +84,11 @@ class LoadBalancingScoringTest {
         AtomicClock clock = new AtomicClock(10_000L);
         InMemoryMetaStore meta = new InMemoryMetaStore();
         // Normal instance
-        meta.put("/em/instances/normal", "9000|h1:8080|3|1000|800|0.20");
+        meta.put("/em/instances/normal", "9000|h1:10105|3|1000|800|0.20");
         // Overloaded instance (cpu > 0.8)
-        meta.put("/em/instances/overloaded", "9500|h2:8080|5|2000|1500|0.90");
+        meta.put("/em/instances/overloaded", "9500|h2:10105|5|2000|1500|0.90");
 
-        ClusterMembership m = new ClusterMembership(meta, "self", "self:8080", 15_000L, clock::get, new FencingToken());
+        ClusterMembership m = new ClusterMembership(meta, "self", "self:10105", 15_000L, clock::get, new FencingToken());
         Map<String, ClusterMembership.InstanceInfo> live = m.liveInstancesWithLoad();
 
         LoadMeter.Snapshot normal = live.get("normal").load;
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/AgentLauncher.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/AgentLauncher.java
index ecfce3783..cfb99758a 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/AgentLauncher.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/AgentLauncher.java
@@ -50,7 +50,7 @@ public class AgentLauncher {
             System.exit(1);
         }
         String agentId = args[0];
-        String runtimeUrl = System.getProperty("em.runtimeUrl", "http://localhost:8080");
+        String runtimeUrl = System.getProperty("em.runtimeUrl", "http://localhost:10105");
         String agentParent = System.getProperty("em.agentParent", "em-agent");
         String llmBaseUrl = System.getProperty("llm.base.url", E2EConfig.LLM_BASE_URL);
         String llmApiKey = System.getProperty("llm.api.key",
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/RuntimeLauncher.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/RuntimeLauncher.java
index 1079dc344..dfff33ec7 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/RuntimeLauncher.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/RuntimeLauncher.java
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  *
  * <p>Usage:<pre>
  *   gradle :eventmesh-runtime:startRuntime
- *   # override: -Dit.namesrv5=host:9876 -Dem.agentParent=my-agent -Dem.port=8080
+ *   # override: -Dit.namesrv5=host:9876 -Dem.agentParent=my-agent -Dem.port=10105
  * </pre>
  */
 public class RuntimeLauncher {
@@ -54,7 +54,7 @@ public class RuntimeLauncher {
         String namesrv = System.getProperty("it.namesrv5", E2EConfig.ROCKETMQ5_NAMESRV);
         String agentParent = System.getProperty("em.agentParent", "em-agent");
         String clientParent = System.getProperty("em.clientParent", "em-client");
-        int trafficPort = Integer.getInteger("em.port", 8080);
+        int trafficPort = Integer.getInteger("em.port", 10105);
 
         log.info("=== RuntimeLauncher: broker={} port={} ===", namesrv, trafficPort);
         log.info("  agentParent={} clientParent={}", agentParent, clientParent);
@@ -70,7 +70,7 @@ public class RuntimeLauncher {
         Thread.sleep(3_000L);
 
         // --- runtime + session layer (mode 1: streaming call) ---
-        EventMeshApplication app = new EventMeshApplication(storage, new InMemoryOffsetStore(), trafficPort, 8081);
+        EventMeshApplication app = new EventMeshApplication(storage, new InMemoryOffsetStore(), trafficPort, 10106);
         app.runtime().withStorageConfig(props);
         UniIngressService ingress = app.runtime().ingress();
         SessionRegistry registry = new SessionRegistry(new InMemoryMetaStore(), 30_000L);
@@ -82,7 +82,7 @@ public class RuntimeLauncher {
         app.withAgentRegistrar(agentRegistrar).withMatchmaker(matchmaker).withSessionRouter(router);
         app.start();
         log.info("=== Runtime ready on http://localhost:{} (traffic) http://localhost:{} (admin) ===",
-            trafficPort, 8081);
+            trafficPort, 10106);
 
         // Block until killed (Ctrl+C). Add a shutdown hook so the process exits cleanly.
         Thread main = Thread.currentThread();
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/StreamingDemoRunner.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/StreamingDemoRunner.java
index 14aba4644..37b80a560 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/StreamingDemoRunner.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/it/StreamingDemoRunner.java
@@ -34,7 +34,7 @@ import com.sun.net.httpserver.HttpServer;
  * A one-command, self-contained runner for {@code StreamingCallDemo} (eventmesh-examples): it boots
  * an in-process {@code EventMeshApplication} + {@code StreamingAgent} (mock LLM, deterministic
  * Ev/ent/Mesh tokens) against a real RocketMQ 5.x broker, then drives the demo's {@code main()}
- * against the booted server on {@code http://localhost:8080}. Lets you SEE the streaming demo run
+ * against the booted server on {@code http://localhost:10105}. Lets you SEE the streaming demo run
  * without manually wiring a server.
  *
  * <p>Run (see the {@code runDemo} gradle task):<pre>
@@ -74,7 +74,7 @@ public class StreamingDemoRunner {
         // --- runtime + session layer (mode 1: streaming call) ---
         org.apache.eventmesh.runtime.boot.EventMeshApplication app =
             new org.apache.eventmesh.runtime.boot.EventMeshApplication(
-                storage, new org.apache.eventmesh.runtime.offset.InMemoryOffsetStore(), 8080, 8081);
+                storage, new org.apache.eventmesh.runtime.offset.InMemoryOffsetStore(), 10105, 10106);
         app.runtime().withStorageConfig(props);
         org.apache.eventmesh.runtime.ingress.UniIngressService ingress = app.runtime().ingress();
         org.apache.eventmesh.runtime.session.SessionRegistry registry =
@@ -130,8 +130,8 @@ public class StreamingDemoRunner {
         // --- drive the (unmodified) demo client ---
         int exit = 0;
         try {
-            String[] demoArgs = port == 8080
-                ? new String[0] // demo defaults to localhost:8080
+            String[] demoArgs = port == 10105
+                ? new String[0] // demo defaults to localhost:10105
                 : new String[] {"http://localhost:" + port};
             log.info("=== running StreamingCallDemo.main({}) ===",
                 demoArgs.length == 0 ? "(defaults)" : java.util.Arrays.toString(demoArgs));
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java
index 349a5adab..be8a7c777 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClient.java
@@ -55,7 +55,7 @@ import lombok.extern.slf4j.Slf4j;
  *
  * <pre>
  *   CloudEventsClient client = CloudEventsClient.builder()
- *       .runtimeUrl("http://localhost:8080").clientId("order-svc").build();
+ *       .runtimeUrl("http://localhost:10105").clientId("order-svc").build();
  *   client.publish("orders", event);
  *   client.subscribe("orders", "BROADCAST", e -> handle(e));
  * </pre>
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClientBuilder.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClientBuilder.java
index d9750ae29..94cf76bee 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClientBuilder.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/CloudEventsClientBuilder.java
@@ -20,7 +20,7 @@ package org.apache.eventmesh.client.cloudevents;
 /** Builder for {@link CloudEventsClient}. */
 public class CloudEventsClientBuilder {
 
-    private String runtimeUrl = "http://localhost:8080";
+    private String runtimeUrl = "http://localhost:10105";
     private String clientId = "client-1";
     private long pollIntervalMs = 1000L;
     /** WebSocket push server base URL (e.g. {@code http://localhost:8082}) — the runtime's WS
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/stream/DefaultStreamingResponse.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/stream/DefaultStreamingResponse.java
index c22a9487c..750aebc05 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/stream/DefaultStreamingResponse.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/cloudevents/stream/DefaultStreamingResponse.java
@@ -103,7 +103,7 @@ public class DefaultStreamingResponse implements StreamingResponse {
      * write the request body, and return a live {@link DefaultStreamingResponse} (its SSE-read
      * virtual thread starts here).
      *
-     * @param baseUrl       runtime base URL (e.g. {@code http://localhost:8080})
+     * @param baseUrl       runtime base URL (e.g. {@code http://localhost:10105})
      * @param mapper        Jackson ObjectMapper for deserializing StreamChunk JSON
      * @param sessionId     the session id
      * @param agentId       the agent id (for {@link #agentId()})


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org