# ElizaOS Developer Update (2026-01-19 → 2026-01-25)

This week continued the V2 groundwork while stabilizing the V1.7.x developer experience, especially around streaming, cross-runtime parity (TS/Rust/Python), and social plugins.

---

## 1) Core Framework

### V2 architecture track: runtime-first, multi-language parity
Ongoing V2 work continues to push ElizaOS toward a runtime-centric architecture (Rust + TypeScript, with Python bridge work), reducing coupling to “app/server/CLI” concerns in the core branch. See the long-running V2 umbrella PR:  
- **V2.0.0 working branch**: https://github.com/elizaos/eliza/pull/6351

### Dynamic execution engine prototype (V2)
A schema-driven “dynamic prompt execution” path is being developed to reduce brittle parsing and to detect truncated outputs (context-window blowups) via validation codes (UUID snippets) and retry/backoff. This is aimed at improving determinism for structured outputs across TS/Rust/Python.

- **PR (open):** “V2.0.0: dynamic execution engine” https://github.com/elizaos/eliza/pull/6384

Key technical ideas:
- Schema rows + required-field validation
- Validation levels (0–3) for trust vs checkpoint/full validation
- Retry with exponential backoff on validation failure
- Streaming-aware validation extractors (TS)

> If you build custom evaluators/actions that rely on ad-hoc XML parsing, start planning for schema-driven structured outputs in V2.

---

## 2) New Features

### (V2/Python) True token streaming APIs + model streaming registration
Python runtime and examples were updated and expanded, including **true token-by-token SSE streaming** in the A2A FastAPI server and new core streaming types.

- **PR (merged):** “fix(v2.0.0): Python example testing & fixes” https://github.com/elizaos/eliza/pull/6358  
- **Docs added:** `docs/python-quickstart.md` (in-repo) via PR #6358

New/updated primitives called out in the PR summary:
- `ModelType.TEXT_*_STREAM`
- `AgentRuntime.use_model_stream()` / `register_streaming_model()`
- `DefaultMessageService.handle_message_stream()` returning `StreamingMessageResult`

#### Example: registering a streaming model (Python, conceptual)
```python
from elizaos.runtime import AgentRuntime
from elizaos.types.model import ModelType

runtime = AgentRuntime(...)

async def stream_handler(params):
    # yield token chunks (or SSE-ready events depending on your adapter)
    async for tok in your_llm.stream(params.prompt):
        yield tok

runtime.register_streaming_model(ModelType.TEXT_LARGE_STREAM, stream_handler)

# Then use the streaming message path
result = await runtime.use_model_stream(ModelType.TEXT_LARGE_STREAM, {"prompt": "Hello"})
async for chunk in result:
    print(chunk, end="")
```

### (V2/Python) In-memory DB plugin hardening for examples
The Python chat example now includes an in-memory DB plugin by default (to avoid “no DB” footguns for new users), plus improved adapter handling for Pydantic models and kwargs-style params.

- **PR (merged):** https://github.com/elizaos/eliza/pull/6358

---

## 3) Bug Fixes (with technical context)

### Discord plugin bootstrap/runtime errors resolved (V1.7.2 + plugin-discord 1.3.8)
Multiple users reported breakage during upgrade (SQL migration failures, bootstrap errors, and Discord runtime issues like private field access / audit log perms). Community debugging found the *practical* root cause for many local environments was **cached bun/package metadata and stale project manifests**.

**Recommended remediation steps (from community debugging):**
```bash
bun pm cache rm
bun uninstall -g @elizaos/cli
bun i -g @elizaos/cli

rm -rf node_modules bun.lock
# then ensure your package.json versions are correct (or scaffold a fresh project)
```

Discord-side fixes landed in the plugin release line; users confirmed:
- **ElizaOS core:** 1.7.2
- **Discord plugin:** 1.3.8 (fixes server functionality issues; DM edge-cases may remain)

Community reference (Discord):  
- coders channel thread (MCP + self-hosting + security + version fix context): https://discord.com/channels/1253563208833433701/1300025221834739744

### Persisting Discord DM edge-case: “User has no name or username”
There is still an outstanding DM-flow robustness issue: role provider logs indicate some DM senders have missing username/name fields and are skipped. If you depend on DM onboarding flows, validate your provider assumptions around user identity fields and add fallback identifiers.

(Reported in Discord discussions on 2026-01-23; follow-up/issue not yet linked.)

### Security: active scam patterns to warn end-users about
Two separate scam vectors were reported:
1) A “Create A Ticket” bot requesting wallet addresses (confirmed scam).  
2) Fraudulent “token migration support” messages asking users to send tokens to a wallet.

Developers operating public agents/servers should:
- Remove or restrict untrusted “support bots”
- Pin “never share seed / never send tokens for migration” warnings in community-facing UIs
- Treat inbound “support” DMs as hostile by default

---

## 4) API Changes

### Eliza Cloud: register external MCP servers via API (newly clarified)
Discord engineering discussions clarified how to attach external MCP servers to Eliza Cloud agents:

- **Endpoint:** `POST /api/v1/mcps`  
- **Behavior:** once registered, Eliza Cloud can **proxy calls** to that MCP endpoint so agents can use those tools during reasoning/execution.

Discussion reference:
- https://discord.com/channels/1253563208833433701/1300025221834739744

#### Example: registering an MCP server (HTTP)
```bash
curl -X POST "https://<your-elizacloud-host>/api/v1/mcps" \
  -H "Authorization: Bearer $ELIZA_CLOUD_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "redteam-tools",
    "baseUrl": "https://mcp.example.com",
    "description": "External MCP server for red teaming + HITL workflows"
  }'
```

> Docs action item raised: ensure `/api/v1/mcps` is documented with required fields, auth scopes, and expected proxy semantics.

---

## 5) Social Media Integrations (Twitter / Telegram / Discord / Farcaster)

### Discord
- Plugin runtime stability improved in **plugin-discord 1.3.8** (per community confirmations).
- Remaining DM identity edge-case still needs hardening if you rely on onboarding flows via DM.

### Telegram
No new Telegram-specific changes were discussed in Discord this week, but note that earlier compatibility alignment work exists in:
- plugin-telegram v1.7.x alignment PR: https://github.com/elizaos-plugins/plugin-telegram/pull/24

### Twitter/X
Core-devs discussed pursuing an **enterprise Twitter API key** to unlock more reliable integrations/limits for official agents and automations. (No PR yet; tracked as an operational dependency.)

---

## 6) Model Provider Updates

### OpenAI streaming handlers (V2/Python track)
The V2/Python work included OpenAI plugin support for streaming handlers and core exports updated to include streaming types.

- **PR (merged):** https://github.com/elizaos/eliza/pull/6358

### Anthropic/Claude usage signals
- Migration agent was reported as using **Claude Sonnet** (community Q&A context). This isn’t a code change by itself, but it’s a signal that real deployments are standardizing on Sonnet-class models for tool-using agents due to response structure quality.

### CI model upgrades (Claude workflows)
Earlier in the month, CI workflows were upgraded to use **Opus 4.5** and expanded security/maintenance automation:
- https://github.com/elizaos/eliza/pull/6324

---

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

### `serverId` → `messageServerId` rename (V1.7 line)
If you have custom plugins/providers/actions reading `serverId` from room/world/message context, you must migrate to `messageServerId`. This change caused real-world breakage when core and plugins were version-skewed.

- **PR:** https://github.com/elizaos/eliza/pull/6333

#### What to change
- Old: `room.serverId`, `world.serverId`, logging metadata `serverId`
- New: `room.messageServerId`, `world.messageServerId`, logging metadata `messageServerId`

### V2 “runtime-first” restructuring (planning warning)
The V2 branch explicitly removes or de-emphasizes non-essential packages (app/server/CLI) in favor of a portable runtime core.

- **V2 umbrella PR:** https://github.com/elizaos/eliza/pull/6351

If you maintain tooling that assumes:
- monorepo package layout stability
- CLI-centric bootstrapping
- Node-only runtime targets

…plan for V2 to require refactors. Track V2 work closely and avoid deep coupling to current internal package boundaries where possible.

---

### References & Links
- V2 umbrella: https://github.com/elizaos/eliza/pull/6351  
- Dynamic execution engine (open): https://github.com/elizaos/eliza/pull/6384  
- Python streaming + examples fixes (merged): https://github.com/elizaos/eliza/pull/6358  
- `messageServerId` migration fix: https://github.com/elizaos/eliza/pull/6333  
- Discord discussion (MCP + versions + security): https://discord.com/channels/1253563208833433701/1300025221834739744