# ElizaOS Developer Update — 2025-12-15 to 2025-12-21

This week focused on **real-time streaming across core + Cloud**, continued **messaging API standardization** (moving away from legacy event hooks), and hardening **plugin/version compatibility** in the registry ahead of the Cloud MVP ship.

---

## 1) Core Framework

### Streaming primitives landed across runtime/client/server
Core streaming support was expanded end-to-end in `elizaos/eliza`:

- **Core runtime**: new/extended streaming types and utilities (`StreamingContext`, stream-aware runtime execution paths)
- **Server**: stream event plumbing in messaging APIs and Socket.IO
- **Client**: chat UI now supports progressive token rendering instead of “single final blob”
- **CLI**: test runner improvements to validate stream behavior

Relevant PR:
- **Streaming support in text generation**: https://github.com/elizaos/eliza/pull/6212

### Unified API (serverless-friendly) groundwork
Work continued on the “Unified API” surface intended to run in serverless + Node.js contexts.

Relevant PR:
- **Unified API — serverless/nodejs**: https://github.com/elizaos/eliza/pull/6201

### Monorepo release coordination (Cloud streaming dependency chain)
A concrete release workflow was reaffirmed for Cloud streaming rollout:
1) **Release monorepo** (`elizaos/eliza`)  
2) Review/merge **elizacloud-plugin**  
3) Update **cloud-v2** to latest core

(From developer discussions; ensure your Cloud deployments pull the matching `@elizaos/core` + plugin versions to avoid runtime mismatches.)

---

## 2) New Features

### Real-time streaming responses (opt-in)
Streaming is now an **opt-in** behavior (rather than default) and is being standardized across runtime + transport layers.

**What you get**
- Token-by-token UI updates (client)
- Stream events over Socket.IO (server)
- Stream-aware execution in core runtime (core)

**Example: enabling streaming in a message flow**
> Note: API shape varies slightly depending on whether you’re calling core directly, via server HTTP, or Socket.IO. The key contract is passing `stream: true` and providing a stream handler/context.

```ts
import { AgentRuntime } from "@elizaos/core";
import { plugin as sqlPlugin } from "@elizaos/plugin-sql";
import { openaiPlugin } from "@elizaos/plugin-openai";

const runtime = new AgentRuntime({
  character: { name: "DevBot", bio: "Streaming demo bot" },
  plugins: [sqlPlugin, openaiPlugin],
});

await runtime.initialize();

// Pseudocode illustrating the new streaming intent.
// Use the stream callbacks/hooks provided by your transport (server/socket/client).
const result = await runtime.elizaos.sendMessage({
  roomId: "room_123",
  content: { text: "Give me a short summary of streaming in ElizaOS." },
  stream: true,
  onToken: (token: string) => process.stdout.write(token),
});

console.log("\n\nFinal:", result.content?.text);
```

Relevant PR:
- https://github.com/elizaos/eliza/pull/6212

### ElizaOS Cloud as the default provider in the CLI (DX improvement)
CLI now recommends **ElizaOS Cloud first**, including a browser-based login flow to provision credentials more smoothly.

Relevant PR:
- https://github.com/elizaos/eliza/pull/6208

---

## 3) Bug Fixes

### SQL plugin: automatic local directory creation + migration to messageService API
A common “fresh project” crash was addressed: developers no longer need to manually create `.eliza/` or PGlite directories in many cases.

Also included: moving examples and plugin wiring away from deprecated message event patterns to `messageService.handleMessage()`.

Relevant PR:
- https://github.com/elizaos/eliza/pull/6202  
Related historical issue context:
- https://github.com/elizaos/eliza/issues/6204

### Registry: detect + fix core dependency/version mismatches
The plugin registry added checks/logic to prevent broken installs caused by mismatched `@elizaos/core` compatibility ranges.

Relevant PR:
- https://github.com/elizaos-plugins/registry/pull/244

### Client rendering: markdown spacing fixes
Multiple UI fixes reduced excessive whitespace in markdown-rendered model output.

Relevant PRs:
- https://github.com/elizaos/eliza/pull/6197
- https://github.com/elizaos/eliza/pull/6159

---

## 4) API Changes (Developer-Facing)

### Message ingestion: deprecated event hooks → `messageService.handleMessage()`
If you were relying on legacy patterns like subscribing to a `MESSAGE_RECEIVED` event and manually routing, the ecosystem is moving toward a single, explicit message ingestion point:

- **New preferred path**: `messageService.handleMessage(...)`
- Applies to examples and the SQL plugin integration paths

Relevant PR:
- https://github.com/elizaos/eliza/pull/6202

### CLI test harness signature alignment
The CLI’s e2e test command was failing due to an API signature mismatch; this was corrected to reflect the current runtime start contract.

Relevant PR:
- https://github.com/elizaos/eliza/pull/6207

---

## 5) Social Media Integrations

### Discord plugin: refactors + permissioned invite URLs
- Ongoing internal message handling refactor (preparing for unified messaging patterns)
- A **tiered permission system for bot invite URLs** was merged (useful for safer deployments across multiple guilds)

Relevant PRs:
- Refactor (in progress): https://github.com/elizaos-plugins/plugin-discord/pull/32
- Tiered invite permissions (merged): https://github.com/elizaos-plugins/plugin-discord/pull/33

### Telegram plugin: unified messaging API refactor started
Telegram began aligning to the same standardized messaging contract as core.

Relevant PR:
- https://github.com/elizaos-plugins/plugin-telegram/pull/22

### X (Twitter) business integration
A deal with **X** was confirmed in developer discussion, which likely impacts forthcoming official Twitter/X integration strategy and deployment pathways (details pending public technical spec). Keep an eye on upcoming PRs/issues as this formalizes.

---

## 6) Model Provider Updates

### Streaming rollout across provider plugins (in flight)
Provider plugins have active work to implement consistent streaming behavior:
- OpenAI: https://github.com/elizaos-plugins/plugin-openai/pull/21  
- Anthropic: https://github.com/elizaos-plugins/plugin-anthropic/pull/12  
- OpenRouter: https://github.com/elizaos-plugins/plugin-openrouter/pull/21  

### OpenRouter plugin: version bump
- https://github.com/elizaos-plugins/plugin-openrouter/pull/22

### “Model agnostic” direction
In developer discussion, the runtime direction remains **provider-agnostic**: streaming and messaging standardization are being implemented in core so that provider plugins can conform with minimal bespoke logic.

---

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

### If you still depend on V1-style message events, plan to migrate now
- Legacy event-driven message intake patterns are being replaced by explicit message service ingestion (`messageService.handleMessage()`).
- Example migrations are already landing (see #6202), and plugins are being refactored to match (Telegram/Discord PRs above).

**Migration tip (conceptual):**
```ts
// Old (conceptual):
runtime.on("MESSAGE_RECEIVED", (msg) => route(msg));

// New (preferred):
await runtime.messageService.handleMessage({
  roomId,
  userId,
  content: { text: incomingText },
});
```

### Cloud + core version alignment matters more now
With streaming and messaging changes crossing core/server/client boundaries, **version skew** will show up as:
- missing stream events
- incompatible message payload shapes
- broken registry installs (mitigated by registry#244, but you still need to align versions)

**Recommendation**
- Pin compatible versions across `@elizaos/core`, server/client packages, and your provider plugins.
- Follow the coordinated release order discussed above when upgrading Cloud deployments.

---

## Links & References

- Core streaming support: https://github.com/elizaos/eliza/pull/6212  
- SQL plugin messageService migration + dir autocreate: https://github.com/elizaos/eliza/pull/6202  
- CLI Cloud default provider: https://github.com/elizaos/eliza/pull/6208  
- Registry core/version mismatch detection: https://github.com/elizaos-plugins/registry/pull/244  
- Telegram unified messaging API refactor: https://github.com/elizaos-plugins/plugin-telegram/pull/22  
- Discord refactor: https://github.com/elizaos-plugins/plugin-discord/pull/32  
- Discord tiered invite permissions: https://github.com/elizaos-plugins/plugin-discord/pull/33  
- Provider streaming PRs:
  - OpenAI: https://github.com/elizaos-plugins/plugin-openai/pull/21  
  - Anthropic: https://github.com/elizaos-plugins/plugin-anthropic/pull/12  
  - OpenRouter: https://github.com/elizaos-plugins/plugin-openrouter/pull/21