## Developer Update (ElizaOS) — Week of 2026-01-20 to 2026-01-26

This update summarizes core framework work, ecosystem/plugin progress, and developer-reported issues discussed across GitHub + Discord.

---

## 1) Core Framework

### V2 architecture work continues (runtime-first, multi-language)
The V2.0.0 working branch remains in progress and is explicitly refactoring toward a **runtime-first** distribution (Rust + TypeScript runtimes, essential plugins), stripping app/server/CLI “non-essentials” from the V2 branch snapshot:
- PR: **V2.0.0 working branch** — https://github.com/elizaos/eliza/pull/6351

In parallel, the **dynamic execution engine** work for V2 is iterating on schema-driven execution + validation (see also “Breaking Changes / V1→V2” below):
- PR (open): **Dynamic execution engine** — https://github.com/elizaos/eliza/pull/6384

### CLI/module resolution hardening
A critical CLI entrypoint import was updated to use the package alias instead of reaching into a non-exported path (fixes `ERR_PACKAGE_PATH_NOT_EXPORTED` failures seen in the wild when running `elizaos create`).
- Issue (user report): https://github.com/elizaos/eliza/issues/6388  
- Fix (merged): https://github.com/elizaos/eliza/pull/6389

---

## 2) New Features

### (Cloud) Register external MCP servers for agent tool-use via proxying
Developers confirmed you can attach external **Model Context Protocol (MCP)** servers to an Eliza Cloud agent by registering the MCP endpoint in Cloud, after which Eliza can proxy tool calls to it.

- Discord context (MCP integration discussion): `#coders` on 2026-01-25  
- Endpoint referenced: `POST /api/v1/mcps`

Example request (shape may vary by deployment; confirm against Cloud OpenAPI/Docs):
```bash
curl -X POST "https://<your-eliza-cloud-host>/api/v1/mcps" \
  -H "Authorization: Bearer $ELIZA_CLOUD_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "redteam-tools",
    "baseUrl": "https://mcp.example.com",
    "headers": { "Authorization": "Bearer <mcp-token>" }
  }'
```

This unblocks “human-in-the-loop” red teaming workflows where an agent can reason about tool availability and execute MCP tools through Cloud-controlled routing.

### Streaming text APIs (Python + OpenAI plugin)
The Python runtime work merged earlier this month (but active in the current dev cycle) introduced “true streaming” primitives and aligned Python plugins/examples to the runtime model:
- PR (merged): https://github.com/elizaos/eliza/pull/6358  
  Notable additions:
  - Streaming model types (`ModelType.TEXT_*_STREAM`)
  - Runtime methods like `use_model_stream()` / `register_streaming_model()`
  - Streaming message handling (`DefaultMessageService.handle_message_stream()` + `StreamingMessageResult`)
  - OpenAI plugin implementing streaming handlers
  - Python quickstart docs added: `docs/python-quickstart.md`

Illustrative example (Python; exact imports may differ depending on your packaging target):
```python
# Pseudocode: streaming usage pattern
runtime = AgentRuntime(...)
runtime.register_streaming_model("openai:gpt-4.1-mini")

async for event in runtime.use_model_stream(
    model="openai:gpt-4.1-mini",
    messages=[{"role": "user", "content": "Stream a response token-by-token."}],
):
    # event could be token chunks / structured stream events depending on provider
    print(event.delta, end="", flush=True)
```

---

## 3) Bug Fixes (with technical context)

### Fix: `elizaos create` failing with `ERR_PACKAGE_PATH_NOT_EXPORTED`
**Symptom:** global install + `elizaos create` crashed because the `elizaos` bin script imported `@elizaos/cli/dist/index.js`, which is not necessarily exported under Node’s ESM “exports” rules.

**Root cause:** Node ESM package export maps reject deep imports unless explicitly exported, causing:
- `Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './dist/index.js' is not defined by "exports"...`

**Fix:** switch the import to the package alias export surface (`@elizaos/cli`) so Node resolves via supported exports.
- PR: https://github.com/elizaos/eliza/pull/6389  
- Related issue: https://github.com/elizaos/eliza/issues/6388

### Discord bootstrap/versioning issues (field migration + cached versions)
Community reports highlighted two recurring sources of “it still says 1.6.5 / Discord bootstrap fails” when moving to 1.7.2:

1) **Cached CLI + stale project dependencies** (Bun global + local lockfiles) causing mixed versions
2) **Schema/field alignment across plugins** (see `serverId` → `messageServerId` below)

Recommended cleanup steps from Discord (reproduced):
```bash
bun pm cache rm
bun uninstall -g @elizaos/cli
bun i -g @elizaos/cli

rm -rf node_modules bun.lock
# ensure package.json pins the intended @elizaos/* versions, then reinstall
bun install
```

Discord noted bootstrap stability in:
- core: **elizaos 1.7.2**
- Discord plugin: **plugin-discord 1.3.8** (confirm exact tag/release in the plugin repo)

### Ongoing investigation: plugin action handler callbacks only emitting first callback
A developer reported that, in a clean 1.7.2 project, only the **first** action callback was emitted back to chat, and callbacks appeared to arrive as “action completion responses” rather than immediate partial feedback.

Maintainers confirmed the framework supports multiple callbacks, and troubleshooting is focusing on **task planner mode** (onestep vs multistep) and how the UI/transport consumes callback events.
- Discord thread: `#coders` on 2026-01-26
- Action item: investigate callback emission/consumption defaults in 1.7.2 and verify docs match runtime behavior.

---

## 4) API Changes (Developer-facing)

### `serverId` → `messageServerId` migration in bootstrap/sql surfaces
Work earlier in January completed a cross-cutting rename to reduce ambiguity and align “message server” identity across transports:
- PR (merged): https://github.com/elizaos/eliza/pull/6333

If you have custom actions/providers/plugins reading `serverId` from room/world/message context, audit and update to `messageServerId` (or support both during transition).

### Eliza Cloud MCP registration API
As discussed in Discord, Cloud now supports registering external MCP servers via:
- `POST /api/v1/mcps` (Cloud API)

Developers building Cloud tooling should treat MCPs as first-class configurable resources and plan for secrets handling (don’t embed MCP tokens in agent configs; use Cloud secrets where available).

---

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

### Discord plugin
- Prior weekly alignment work ensured compatibility with `@elizaos/core` 1.7.x:
  - plugin-discord PR: https://github.com/elizaos-plugins/plugin-discord/pull/44
- Discord community reported bootstrap fixes landing by **plugin-discord 1.3.8** (validate your installed version if you still see bootstrap errors).

### Telegram plugin
- Updated to match core 1.7.x payload/types alignment:
  - plugin-telegram PR: https://github.com/elizaos-plugins/plugin-telegram/pull/24

### Twitter API access (operational note)
A consultant recommendation surfaced in Discord: obtain an **enterprise Twitter/X API key** if you are building production-grade Twitter automations (rate limits and elevated access continue to be a gating factor).

### Farcaster
Team shared Farcaster links in `#core-devs`; no code-level Farcaster plugin changes were reported in the provided activity for this week.

---

## 6) Model Provider Updates (OpenAI / Anthropic / etc.)

### OpenAI: streaming support wired through Python runtime
Streaming handlers were added in the OpenAI plugin as part of the Python runtime stabilization work:
- PR (merged): https://github.com/elizaos/eliza/pull/6358

### Anthropic naming/mapping confusion flagged as urgent
An open issue indicates possible internal/docs confusion about **Opus vs Sonnet** mapping to tier labels (e.g., “Ultra/Pro”).
- Issue (open): https://github.com/elizaos/eliza/issues/6390

If you rely on tier-alias names in config, double-check what your deployment actually routes to (and pin exact provider model IDs where possible) until the mapping is clarified and documented.

### AI Gateway credits unblocked (operational)
The team resolved a blocking issue where AI Gateway credits were preventing inference and development work (no PR link in the provided data; mentioned in daily progress summary). If you experienced sudden “no inference available” behavior, re-test against current gateway status and ensure your org/project billing config is valid.

---

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

V2 work is active and **not a drop-in upgrade** from V1. Expect breaking changes in:
- packaging (runtime-first distribution; fewer bundled “apps”)
- runtime APIs (schema-driven execution paths, validation levels, streaming event types)
- plugin ports (only “critical plugins” are intended to ship early in V2)

References:
- V2 working branch: https://github.com/elizaos/eliza/pull/6351
- V2 dynamic execution engine (open): https://github.com/elizaos/eliza/pull/6384

**Migration guidance (practical):**
- If you are shipping production agents today, stay on **1.7.x** and pin `@elizaos/*` versions.
- Avoid coupling to internal file paths (use public exports only—see the CLI import breakage fixed in #6389).
- When authoring plugins, prefer reading both `serverId` and `messageServerId` during the transition window, but write `messageServerId` going forward.

---

### Security / Safety Notes (from Discord)
Two scams were reported:
1) A fake “Create A Ticket” bot requesting wallet addresses (confirmed scam).
2) Fraudulent “token migration support” DMs instructing users to send tokens to a wallet.

Developers running community deployments should:
- remove/disable untrusted ticket bots
- pin official support flows to a single channel (Discord cited: `#1425417640071139358`)
- ensure docs clearly state “we will never ask you to send tokens to migrate” (where applicable)

---