You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add Contextual Multi-Armed Bandit (CMAB) Support as headline feature
- Include Redis Streams auto-detection and notification improvements
- Add flexible Redis authentication across all services
- Release date: November 20, 2025
Copy file name to clipboardExpand all lines: CHANGELOG.md
+27-10Lines changed: 27 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,27 +6,43 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
7
7
## [Unreleased]
8
8
9
+
## [4.3.0] - November 20, 2025
10
+
11
+
This release introduces production-ready support for Contextual Multi-Armed Bandit (CMAB), enabling AI-powered experimentation that learns and adapts in real-time based on user context.
12
+
9
13
### New Features
10
14
11
-
***Redis Streams for Persistent Notification Delivery**: Added Redis Streams implementation as an alternative to Redis Pub/Sub for notification synchronization across Agent nodes. Redis Streams provides:
15
+
***Contextual Multi-Armed Bandit (CMAB) Support** ([#446](https://github.com/optimizely/agent/pull/446), [#447](https://github.com/optimizely/agent/pull/447)): Agent now fully supports Optimizely's Contextual Multi-Armed Bandit feature for intelligent experiment variation selection. Features include:
16
+
- Full CMAB decision API integration using go-sdk v2.1.1 client.CmabConfig API
- Redis cache for multi-instance deployments with shared decision caching
19
+
- Configurable via `client.cmab.cache` in config.yaml
20
+
- Configurable prediction endpoint via `client.cmab.predictionEndpoint` for testing/staging environments
21
+
- Flexible Redis authentication support (auth_token, redis_secret, password fields)
22
+
- Follows the same plugin-based architecture as ODP cache for consistency
23
+
24
+
This enables efficient scaling of CMAB-powered feature experiments across multiple Agent instances with shared caching and real-time learning.
25
+
26
+
***Redis Version Auto-Detection for Notifications** ([#448](https://github.com/optimizely/agent/pull/448)): Agent now automatically detects Redis version at startup and selects the optimal notification implementation:
- Detection fails: Falls back to Redis Pub/Sub (safe default)
30
+
31
+
Simply configure `synchronization.notification.default: "redis"` and Agent handles the rest. No configuration changes needed when upgrading Redis versions.
32
+
33
+
***Redis Streams for Persistent Notification Delivery** ([#448](https://github.com/optimizely/agent/pull/448)): Added Redis Streams implementation for notification synchronization across Agent nodes. Redis Streams provides:
12
34
- Persistent message delivery with acknowledgment
13
35
- Automatic retries with exponential backoff
14
36
- Consumer groups for load balancing
15
-
- Configurable batching and flush intervals
37
+
- Configurable batching and flush intervals (batch_size, flush_interval)
16
38
- Connection error recovery with reconnection logic
17
39
- Comprehensive metrics tracking
18
40
19
-
Configure via `synchronization.notification.default: "redis-streams"` in config.yaml. See [docs/redis-streams.md](docs/redis-streams.md) for configuration options including batch_size, flush_interval, max_retries, and connection_timeout.
20
-
21
-
***CMAB Redis Cache Support** ([#447](https://github.com/optimizely/agent/pull/447)): Added Redis cache support for Contextual Multi-Armed Bandit (CMAB) decisions following the same plugin-based architecture as ODP cache:
- Redis cache for multi-instance deployments with shared caching
24
-
- Configurable via `client.cmab.cache` in config.yaml
25
-
- Supports both in-memory and Redis cache backends
41
+
Automatically enabled when Redis >= 5.0 is detected. See [docs/redis-streams.md](docs/redis-streams.md) for advanced configuration options.
26
42
27
43
***Flexible Redis Authentication**: Added support for flexible Redis password field names across all Redis clients (ODP cache, UPS, CMAB cache, and synchronization):
28
44
- Supports `auth_token`, `redis_secret`, and `password` fields (in order of preference)
29
-
- Falls back to environment variables: `REDIS_PASSWORD`, `REDIS_ODP_PASSWORD`, `REDIS_UPS_PASSWORD`, `REDIS_CMAB_PASSWORD`
45
+
- Falls back to environment variables: `REDIS_PASSWORD`, `REDIS_ODP_PASSWORD`, `REDIS_UPS_PASSWORD`, `REDIS_CMAB_PASSWORD`, `REDIS_PUBSUB_PASSWORD`
30
46
- Avoids security scanning alerts from hardcoded "password" field names
31
47
32
48
***CMAB Prediction Endpoint Configuration**: Added configurable CMAB prediction endpoint via `client.cmab.predictionEndpoint` in config.yaml or `OPTIMIZELY_CMAB_PREDICTIONENDPOINT` environment variable for testing/staging environments
@@ -40,6 +56,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
40
56
41
57
* Improved Redis connection error handling and recovery across all Redis clients
42
58
* Added comprehensive test coverage for Redis authentication and CMAB caching
59
+
* Added SSE timeout warning in config.yaml to help users configure proper timeouts for notification streams
0 commit comments