# ElizaOS Developer Update (2025-12-24 → 2025-12-30)

This update summarizes core framework changes, developer-facing features, bug fixes, and ongoing discussions from GitHub + the developer Discord.

---

## 1) Core Framework

### Messaging API consolidation: server route naming is now consistent
The server’s message-server routes have been normalized to match what `@elizaos/api-client` expects, eliminating a class of 404s caused by mixed naming (`/servers/*` vs `/message-servers/*`).

- PR: **Standardize message server route naming** — https://github.com/elizaOS/eliza/pull/6285

**Technical context**
- `api-client` was already calling `/message-servers/*`.
- Server exposed inconsistent route groups, so some environments would work “by accident” depending on reverse-proxy rewrites or client fallbacks.
- The fix is primarily server-side; client code should no longer need compatibility shims.

If you have custom middleware/proxies routing legacy endpoints, verify you’re not masking errors now that the canonical routes are in place.

---

## 2) New Features

### Backend development hot reload (DX improvement)
A backend hot-reload workflow landed to reduce restart churn when iterating on server/runtime code.

- PR: **Enable hot reload for backend development** — https://github.com/elizaOS/eliza/pull/6293

**What to expect**
- Faster server iteration loops (file-change triggers restart/reload).
- Particularly useful when developing messaging endpoints, plugin wiring, or runtime services.

> Note: If you maintain custom deployment scripts, ensure hot reload is only enabled in dev-mode and not accidentally enabled in production.

---

### CLI process execution is now Bun-native (dependency + portability improvement)
The CLI removed `execa` and direct `child_process` usage in favor of Bun primitives (`Bun.spawn`) and internal `bun-exec` utilities.

- PR: **Replace execa/child_process with Bun.spawn and bun-exec utilities** — https://github.com/elizaOS/eliza/pull/6289

**Why this matters**
- Aligns with repo guidelines (see `CLAUDE.md`) and reduces dependency surface.
- More consistent behavior in Bun-first environments.

**Example: spawning a command (conceptual)**
```ts
// Bun-native process execution pattern (conceptual example)
const proc = Bun.spawn(["docker", "build", "-t", "my-agent", "."]);
const exitCode = await proc.exited;
if (exitCode !== 0) throw new Error(`docker build failed: ${exitCode}`);
```

If you authored downstream tooling that imported CLI internals relying on `execa`, you’ll need to update those imports/usages accordingly.

---

## 3) Bug Fixes (with technical context)

### Fix: message-server API routes mismatched between server and api-client
This was the most impactful runtime bug addressed in the last two days: clients attempting to manage message servers could fail due to missing endpoints.

- PR: https://github.com/elizaOS/eliza/pull/6285

**Symptoms you may have seen**
- `404 Not Found` on endpoints under `/message-servers/*`
- UI flows or automations failing when listing/creating message servers

**Root cause**
- Route naming drift during earlier server refactors; the server exposed a differently named router group than the client targeted.

---

### Docs-driven fixes that prevent incorrect setup commands
While “docs” changes aren’t runtime fixes, they *do* prevent common failure modes (wrong package manager, missing flags).

- PR: **Fix documentation inconsistencies and add missing test flags** — https://github.com/elizaOS/eliza/pull/6288

Notably:
- Corrected commands to use **Bun** (repo standard)
- Documented missing flags such as `--port` and `--skip-type-check` (helps CI/local debugging parity)

---

## 4) API Changes (developer-visible)

### Message server endpoints: treat `/message-servers/*` as canonical
With PR #6285 merged, developers should standardize on `/message-servers/*` for HTTP routing and any reverse-proxy rules.

- PR: https://github.com/elizaOS/eliza/pull/6285

**Action for plugin/app developers**
- If you hard-coded legacy `/servers/*` endpoints anywhere (custom dashboards, scripts), migrate to `/message-servers/*`.

---

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

### Discord plugin: logging identity improvements under discussion
In `#core-devs`, the team discussed improving Discord plugin logs to prefer **character name** but **fall back to agentId** when needed (useful when names collide or are changed).

- Related Discord thread context: developer discussion on 2025-12-29
- Related work item: “Implement character name with agentId fallback in Discord plugin logging”
- Prior Discord voice/multi-bot architecture PR (context): https://github.com/elizaos-plugins/plugin-discord/pull/36

**Recommended logging pattern (example)**
```ts
const displayId = character?.name?.trim() || agentId;
logger.info(`[discord] agent=${displayId} event=message_received`);
```

### X (Twitter): DegenAI integration planned (not merged this week)
The team is planning to connect the DegenAI trading engine to X so the agent can automatically post performance/wins.

- Mentioned in Discord: 2025-12-29 discussions (product + roadmap)

No code/PR is linked yet; treat as upcoming work.

---

## 6) Model Provider Updates (OpenAI, Anthropic, DeepSeek, etc.)

### Eliza Cloud: open beta + ecosystem wiring in progress
Developer Discord confirmed **Eliza Cloud open beta** access is live with “light support” ahead of a full launch. This aligns with ongoing efforts to make Cloud a first-class provider path through the tooling/docs.

- Discord: 2025-12-27 → 2025-12-29 (multiple mentions)

### Streaming CoT request opened (capability request)
A new issue requests **streaming Chain-of-Thought (CoT) reasoning**. This is not implemented yet, but it’s a signal that streaming APIs and UI need to handle multiple concurrent stream channels (final answer stream vs reasoning stream), plus policy/safety constraints.

- Issue: **Support streaming Chain of Thought (CoT) reasoning** — https://github.com/elizaOS/eliza/issues/6294

**Developer note**
- If you’re building clients on ElizaOS streaming today, avoid assuming a single stream type. Design stream consumers to be multiplexed (e.g., `delta.answer`, `delta.tool`, `delta.reasoning`, etc.), even if the server currently emits fewer event types.

---

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

### Messaging API migration is ongoing: prefer messageService over legacy events
While not newly merged *this week*, the ecosystem is actively migrating away from older event patterns (e.g., `MESSAGE_RECEIVED`) toward the `messageService.handleMessage()` style API. This surfaced repeatedly in recent work and community debugging.

**Why you should care**
- V2-style messaging favors explicit service calls and standardized stream/event typing.
- Plugins/examples that still rely on legacy events are more likely to break as the runtime tightens types and routing.

If you maintain older agents/plugins:
- Audit for legacy event hooks and migrate to the messageService-based flow.
- Track the broader TypeScript modernization effort (below), as stricter typing will make “it compiles by accident” less common.

### TypeScript architecture push (Decorators / DI / advanced typing)
An epic was opened to drive more “world-class TS patterns” (Decorators, DI, advanced type system usage). Expect refactors that may affect internal import paths, service initialization, and plugin ergonomics.

- Epic: https://github.com/elizaOS/eliza/issues/6292

**Practical guidance**
- Avoid importing deep internal files from `@elizaos/*` packages; prefer public exports.
- If you author plugins, prepare for stronger compile-time constraints (and fewer `any` escape hatches).

---

## Appendix: Notable Issues & Community-Reported Problems

- **Auto-open conversation UX** when selecting an agent with existing conversations:
  - Issue: https://github.com/elizaOS/eliza/issues/6295

- **Agent naming edge cases** reported in Discord:
  - Names like `"null"` or numeric-only strings (`"1"`, `"69"`, `"666"`) causing save failures or client exceptions (dashboard-side).
  - No linked GitHub issue/PR in the provided data; if you can reproduce, file an issue with exact payload + stack trace.

- **Windows Python MCP setup pitfalls** (DaVinci Resolve MCP):
  - “no module named src” workaround: set `PYTHONPATH` before running `.bat`.
  - Recommendation: provide a Windows setup guide (requested in Discord).

---

## Links (PRs / Issues / Docs touched this week)

**PRs**
- https://github.com/elizaOS/eliza/pull/6285 — fix(server): standardize message server route naming  
- https://github.com/elizaOS/eliza/pull/6288 — docs: fix inconsistencies + add missing test flags  
- https://github.com/elizaOS/eliza/pull/6289 — fix(cli): Bun-native process execution  
- https://github.com/elizaOS/eliza/pull/6290 — docs(plugin-dummy-services): comprehensive README  
- https://github.com/elizaOS/eliza/pull/6293 — fix: enable hot reload for backend development  

**Issues**
- https://github.com/elizaOS/eliza/issues/6292 — epic: TS patterns (Decorators/DI/advanced typing)  
- https://github.com/elizaOS/eliza/issues/6294 — feature request: streaming CoT  
- https://github.com/elizaOS/eliza/issues/6295 — UX: auto-open conversation when clicking agent