# ElizaOS Developer Update (2025-12-21 → 2025-12-27)

This update consolidates GitHub activity across `elizaos/eliza` and key plugin repos, plus core-dev Discord notes from Dec 23–25.

---

## 1) Core Framework

### True streaming transport (SSE) replacing polling
Core moved to “true SSE” for real-time updates, replacing less efficient polling patterns ([issue #5930](https://github.com/elizaos/eliza/issues/5930)). This is foundational for:
- responsive chat UIs
- token-by-token model streaming
- consistent real-time semantics across web + serverless runtimes

### Typed custom events in the runtime
Plugins can now register strongly-typed custom events via a generic parameter on `registerEvent` ([PR #6277](https://github.com/elizaos/eliza/pull/6277)). This reduces unsafe casting in plugins and improves editor/TS inference.

```ts
import type { EventPayload } from "@elizaos/core";

interface MyCustomPayload extends EventPayload {
  roomId: string;
  confidence: number;
}

runtime.registerEvent<MyCustomPayload>("my.custom.event", async (payload) => {
  // payload is typed
  runtime.logger.info(payload.roomId, payload.confidence);
});
```

### Server refactor + messaging internals stabilization
A major server optimization/reorganization landed earlier in the month and remains relevant to this week’s integration work ([PR #6199](https://github.com/elizaos/eliza/pull/6199)). It reorganizes messaging endpoints/services and tightens Socket.IO behavior, which downstream plugins (Discord/Telegram) are aligning to.

### Cloud beta positioning (runtime + platform direction)
Discord confirms **Eliza Cloud is in beta**, onboarding ecosystem builders for production feedback, with broader ramp-up planned in January (Discord #core-devs, 2025-12-23). Cloud is being positioned as:
- default place for **agent registration** ahead of EthDenver
- a “tokenomics engine” (revenue → buybacks; details in community comms)

---

## 2) New Features

### Streaming support for text generation (end-to-end plumbing)
Streaming support was enhanced across core + client + server surfaces ([PR #6212](https://github.com/elizaos/eliza/pull/6212)), complementing provider-side work such as OpenAI streaming in the plugin repo ([plugin-openai PR #21](https://github.com/elizaos-plugins/plugin-openai/pull/21)).

**Developer impact:** you can now opt into streaming at the request level (see API Changes for details). This enables token streaming UIs and progressive tool output.

### CLI: ElizaOS Cloud as default provider + browser-based login
The CLI now recommends ElizaOS Cloud as the first/default AI provider and includes a browser-based login flow for API key provisioning ([PR #6208](https://github.com/elizaos/eliza/pull/6208)).

```bash
# create a new project and select ElizaOS Cloud when prompted (now default)
elizaos create

# login flow opens a browser to provision an API key
elizaos login
```

### Knowledge plugin: configurable API rate limiting
`plugin-knowledge` introduced configurable rate limiting for high-throughput APIs ([plugin-knowledge PR #49](https://github.com/elizaos-plugins/plugin-knowledge/pull/49)). This is important for:
- multi-tenant traffic shaping
- preventing memory/embedding endpoints from being overloaded during bursts

### Discord plugin: refactors + permission system groundwork
`plugin-discord` received significant refactoring and TypeScript stabilization:
- message handling overhaul ([plugin-discord PR #32](https://github.com/elizaos-plugins/plugin-discord/pull/32))
- TS error fixes ([plugin-discord PR #38](https://github.com/elizaos-plugins/plugin-discord/pull/38))
- permission system introduction ([plugin-discord PR #34](https://github.com/elizaos-plugins/plugin-discord/pull/34))
- multi-bot voice architecture proposal ([plugin-discord PR #36](https://github.com/elizaos-plugins/plugin-discord/pull/36))

These changes are part of the broader effort to standardize message handling across plugins (Discord core-dev notes, 2025-12-23).

---

## 3) Bug Fixes (critical / high-impact)

### Agents failing to respond due to MessageBusService error
A critical bug that prevented agents from responding (MessageBusService-related) was resolved ([issue #6140](https://github.com/elizaos/eliza/issues/6140)). If you saw intermittent “agent doesn’t answer” failures under load or during channel/session creation, pull latest and retest.

### SQL plugin: auto-create PGlite directories + migrate to MessageService API
The SQL plugin was updated to:
- auto-create required PGlite directories (removes a common “missing `.eliza`/storage dir” footgun)
- migrate examples + plugin wiring to the new `messageService.handleMessage()` API  
([PR #6202](https://github.com/elizaos/eliza/pull/6202))

This specifically addresses developer reports where a fresh runtime crashed unless the project pre-created `.eliza` directories (see related issue context in [#6204](https://github.com/elizaos/eliza/issues/6204)).

### Client markdown rendering fixes
Two UI fixes improved markdown spacing/compactness in chat responses:
- [PR #6197](https://github.com/elizaos/eliza/pull/6197)
- [PR #6159](https://github.com/elizaos/eliza/pull/6159)

### GitHub Actions failure due to provider billing
Discord reported CI job failures caused by Claude billing needing a top-up (Discord, 2025-12-24). If you see non-deterministic CI failures in provider-backed workflows, confirm secrets/billing status before chasing code regressions.

---

## 4) API Changes (developer-visible)

### Messaging: migrate from legacy `MESSAGE_RECEIVED` to `messageService.handleMessage()`
The framework continues converging on the unified MessageService API. Examples and plugins are being updated accordingly ([PR #6202](https://github.com/elizaos/eliza/pull/6202)). If your plugin still listens to legacy events, plan a migration now (see Breaking Changes).

**Updated pattern (conceptual):**
```ts
// preferred: route inbound messages through messageService
await runtime.messageService.handleMessage({
  text,
  roomId,
  entityId,
  // ... attachments, metadata, etc.
});
```

### Streaming: opt-in request parameter
Streaming support is additive and opt-in ([PR #6212](https://github.com/elizaos/eliza/pull/6212)). Expect a `stream: true`-style flag on generation requests (exact shape depends on your provider/plugin).

```ts
const res = await elizaos.generateText({
  prompt: "Explain SSE vs polling",
  stream: true,
});
```

### Message format tightening (serverId → messageServerId)
A bootstrap-related fix notes a message format shift: “dropped `serverId` in favor of `messageServerId`” ([PR #6261](https://github.com/elizaos/eliza/pull/6261)). If you store/forward message envelopes, verify your mappings.

### Authentication (in-flight): JWT + multi-tenant data isolation
JWT auth + user management is under active development and **not yet merged** ([PR #6200](https://github.com/elizaos/eliza/pull/6200)). It introduces:
- `ENABLE_DATA_ISOLATION=true` mode requiring JWT
- verifier factory (Ed25519 > JWKS > Secret)
- entity derivation from `sub` → `entityId = stringToUuid(sub)`

Track this PR closely if you’re building hosted/multi-tenant services.

---

## 5) Social Media Integrations

### Twitter plugin: immediate apply of posting enablement
A reliability fix ensures posting enablement settings apply immediately and consistently ([plugin-twitter PR #42](https://github.com/elizaos-plugins/plugin-twitter/pull/42)). This addresses cases where runtime configuration changes didn’t take effect until restart.

### Discord plugin: stability + message handling standardization
See New Features + Bug Fixes. The practical takeaway is improved type-safety and fewer edge-case failures in message routing, which matters for production Discord bots.

### Telegram plugin: unified messaging API refactor (ongoing)
Telegram work is aligned with the unified messaging API effort ([plugin-telegram PR #22](https://github.com/elizaos-plugins/plugin-telegram/pull/22)).

### Farcaster: self-hosted hub plugin added to registry
The registry gained a self-hosted Farcaster integration (“local hub”) to reduce dependence on third-party APIs ([registry PR #243](https://github.com/elizaos-plugins/registry/pull/243)).

---

## 6) Model Provider Updates

### OpenAI: streaming generation
Provider-side streaming landed in the OpenAI plugin ([plugin-openai PR #21](https://github.com/elizaos-plugins/plugin-openai/pull/21)) and is intended to plug into the core streaming surfaces delivered in [PR #6212](https://github.com/elizaos/eliza/pull/6212).

### Anthropic / OpenRouter: streaming groundwork (in progress)
Streaming work was initiated across additional providers earlier in December:
- Anthropic streaming ([plugin-anthropic PR #12](https://github.com/elizaos-plugins/plugin-anthropic/pull/12))
- OpenRouter streaming ([plugin-openrouter PR #21](https://github.com/elizaos-plugins/plugin-openrouter/pull/21))

If you maintain a provider plugin, align your streaming semantics with core (SSE + message stream events) to avoid fragmentation.

---

## 7) Breaking Changes / V1 → V2 Migration Warnings

### Action required: stop relying on legacy message events
If your plugin is still built around `MESSAGE_RECEIVED` or other legacy event-only ingestion, migrate to the unified `messageService.handleMessage()` path now ([PR #6202](https://github.com/elizaos/eliza/pull/6202)). The ecosystem (Discord/Telegram/SQL/examples) is actively standardizing here, and drift will cause:
- missed messages
- duplicated conversations
- inconsistent session/channel semantics

### Verify message envelope fields (`serverId` removal)
If your integration expects `serverId`, review and update for `messageServerId` ([PR #6261](https://github.com/elizaos/eliza/pull/6261)). This can silently break filters, routing, and analytics pipelines that key off the old field name.

### Auth mode divergence (legacy header vs JWT)
Upcoming JWT/data-isolation work ([PR #6200](https://github.com/elizaos/eliza/pull/6200)) introduces two modes:
- legacy: `X-Entity-Id` header
- isolated: bearer JWT required (`ENABLE_DATA_ISOLATION=true`)

Do not assume headers will remain accepted in isolated deployments—design your clients to support bearer auth.

---

### Pointers / References
- Weekly summary (Dec 21–27): `github_summaries_week_latest_2025-12-21.md` (internal aggregation)
- Core repo: https://github.com/elizaos/eliza
- Public roadmap referenced in Discord (Dec 23): available on GitHub (link shared in community channels; ensure you’re following the repo announcements)

If you’re shipping plugins this week: prioritize (1) MessageService migration, (2) streaming compatibility testing (SSE + provider streams), and (3) verifying message schema changes across any stored transcripts or analytics.