# ElizaOS Developer Update (2025-12-08 → 2025-12-14)

This update summarizes core engineering work merged during the week, plus high-signal Discord developer discussions relevant to builders shipping on ElizaOS.

---

## 1) Core Framework (Architecture / Runtime / Plugin System)

### Unified ElizaOS API surface (Core)
A “Unified API” entrypoint landed in core to standardize how runtimes and clients interact with ElizaOS functionality, with accompanying tests. This is groundwork for consistent serverless + Node usage patterns and a more stable public interface moving forward.  
- PR: **feat: Unified API - serverless - nodejs** [#6201](https://github.com/elizaos/eliza/pull/6201)

What to look at:
- `packages/core/src/elizaos.ts`
- `packages/core/src/types/elizaos.ts`
- new/updated tests validating the API contract

### Server refactor: reorg + Socket.IO stability surface
The server was reorganized/optimized, including Socket.IO configuration changes and import path reshuffles. While intended as low/medium risk, any custom Socket.IO clients should be regression-tested against the new server layout.  
- PR: **refactor(server): optimization and reorganization** [#6199](https://github.com/elizaos/eliza/pull/6199)

### Type safety & ecosystem cleanup (“deslop”)
A large cleanup removed dead code, replaced `any`/casts with real types, and tightened multiple packages (CLI, app, API client). Expect stricter TypeScript behavior when extending internals (especially if you were depending on loosely typed surfaces).  
- PR: **Shaw/chore/deslop** [#6213](https://github.com/elizaos/eliza/pull/6213) (merged)

### First step towards “TS builds everywhere”
A broad pass fixed TypeScript build errors across many packages. If you maintain forks/plugins, expect previously-implicit types to now be enforced (good for correctness, but may require local fixes if you mirrored old patterns).  
- PR: **fix: resolve TypeScript build errors in every packages - first step** [#6218](https://github.com/elizaos/eliza/pull/6218)

---

## 2) New Features (with technical details + examples)

### CLI: ElizaOS Cloud promoted as default AI provider + login flow
The CLI now recommends **ElizaOS Cloud** as the first option during `elizaos create` model/provider selection, and introduces a browser-based login flow to streamline API key provisioning and configuration.  
- PR: **feat: Add ElizaOS Cloud as Default AI Provider in CLI** [#6208](https://github.com/elizaos/eliza/pull/6208)

This is aligned with ongoing “cloud platform” work discussed in Discord (agents/apps/n8n workflows/MCP/A2A services, plus create→publish→monetize→promote).

**Example (create a new project and select Cloud provider):**
```bash
elizaos create my-agent
# Select "ElizaOS Cloud" when prompted (now the recommended/default option)
```

**If you hit install/config issues, update your local toolchain:**
```bash
elizaos update
```
(Discord reports outdated packages can cause plugin install failures.)

### (In review) Cloud integration: MCP + A2A starter + tighter CLI/starter wiring
A major PR is in progress to “tight integrate” cloud plugin usage (cloud as DB/storage provider), auto-login, and project provisioning, plus MCP/A2A service starters. This is not merged yet but is the most consequential platform feature in flight.  
- PR (open): **Eliza Cloud Integration, add MCP + A2A service starter, integrate CLI and starter projects tight** [#6216](https://github.com/elizaos/eliza/pull/6216)

If you’re building against cloud early, watch this PR closely: it touches provisioning, default flows, and “create → deploy → publish → monetize” guidance.

---

## 3) Bug Fixes (critical fixes with technical context)

### plugin-sql: auto-create PGLite directories + migration to `messageService` API
Two related issues were addressed:

1) **`.eliza` / PGLite directory creation**: previously, clean-room projects could crash unless developers manually created `.eliza/`. plugin-sql now auto-creates required directories, and includes tests.  
2) **Deprecated message event flow**: examples/plugins were updated away from older event-driven message handling toward the new message service API.

- PR: **fix(plugin-sql): migrate to messageService API and auto-create PGLite directories** [#6202](https://github.com/elizaos/eliza/pull/6202)  
- Related closed issue: **“.eliza needed or plugin-sql crashes, should autocreate”** [#6204](https://github.com/elizaos/eliza/issues/6204)

**Before (manual dir creation workaround reported by users):**
```ts
import fs from "fs";

if (!fs.existsSync(".eliza")) fs.mkdirSync(".eliza");
```

**After (expected):** plugin-sql handles this automatically once updated to the fixed release from [#6202](https://github.com/elizaos/eliza/pull/6202).

### Core: character secret encryption ordering
A fix landed to ensure character secrets are encrypted in the correct order, preventing incorrect encryption/decryption behavior across server + core interactions.  
- PR: **fix: encryption for character secrets in correct order** [#6217](https://github.com/elizaos/eliza/pull/6217)

### Client: markdown spacing regressions (UI correctness)
Multiple fixes reduce excessive whitespace (headings, separators, blockquotes) in AI-rendered markdown responses.  
- PR: **fix: markdown spacing compact** [#6159](https://github.com/elizaos/eliza/pull/6159)  
- PR: **fix(client): improve markdown content spacing** [#6197](https://github.com/elizaos/eliza/pull/6197)

### Examples: LOG_LEVEL respected
Standalone CLI chat example now respects user `LOG_LEVEL`.  
- PR: **fix(examples): respect user LOG_LEVEL in standalone-cli-chat** [#6203](https://github.com/elizaos/eliza/pull/6203)

---

## 4) API Changes (developer-visible modifications)

### Message handling: deprecating old `MESSAGE_RECEIVED` event patterns
Examples and plugin-sql moved from the deprecated `MESSAGE_RECEIVED` event approach to the newer message service API.

- PR: [#6202](https://github.com/elizaos/eliza/pull/6202)

**Migration direction (high-level):**
```ts
// Newer pattern (conceptual): route inbound messages through messageService
await runtime.messageService.handleMessage(inboundMessage);
```

If you maintain plugins or custom runtimes that still hook into legacy message events, plan to migrate to the message service interface to stay compatible.

### (Pending / not merged) Server auth API: JWT auth + user management
A full JWT auth system PR is open; if/when merged, it will materially affect server API authentication for multi-tenant / data-isolated deployments.
- PR (open): **feat(auth): implement JWT authentication and user management** [#6200](https://github.com/elizaos/eliza/pull/6200)

Key design points proposed in [#6200](https://github.com/elizaos/eliza/pull/6200):
- `ENABLE_DATA_ISOLATION=true` flips the server into JWT-required mode
- entityId derived from `JWT.sub` via `stringToUuid(sub)`
- verifier selection priority: **Ed25519 > JWKS > Secret**
- `/api/auth/*` endpoints (register/login/refresh/me) only for “Secret” mode

**Proposed local dev (HS256 secret) from PR:**
```bash
ENABLE_DATA_ISOLATION=true JWT_SECRET=test-secret bun run dev
```

---

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

### Twitter/X: API usage concern + platform access status
- Discord devs reported a Twitter agent consuming excessive API requests (“~50 per call”), suggesting batching/pagination logic or retry loops may be overly aggressive. This is a cost/rate-limit risk—audit your Twitter plugin usage and ensure:
  - you are not re-fetching timelines inside loops
  - you bound pagination and respect `since_id` / cursors
  - you apply backoff on non-2xx responses

- Separate partner-channel discussion indicates **regaining X platform access** is “promising,” which may unlock broader publishing workflows. (No merged code changes this week; this is operational/platform status.)

### “Social publishing” in Cloud platform (in progress)
The cloud platform roadmap discussed in Discord includes **social publishing features** integrated into the product loop (create→publish→monetize→promote), plus SEO + ad network integrations. Track the cloud integration work in:
- PR (open): [#6216](https://github.com/elizaos/eliza/pull/6216)

---

## 6) Model Provider Updates (OpenAI / Anthropic / DeepSeek / Cloud)

### ElizaOS Cloud promoted in CLI
As noted above, Cloud is now the recommended provider in `elizaos create`.  
- PR: [#6208](https://github.com/elizaos/eliza/pull/6208)

### OpenAI plugin configuration: TEXT_LARGE errors traced to missing inference provider
Discord reports a recurring runtime error `TEXT_LARGE` even with tiny prompts (e.g., `"hi"`). Community diagnosis: the inference provider plugin (OpenAI or other) was not registered/installed correctly. Recommendation: update packages and ensure a model plugin is configured.

- Developer guidance (from Discord):
```bash
elizaos update
```

### DeepSeek API question closed
A “can I use deepseek api?” issue was closed, implying documentation/compatibility guidance exists or was clarified.  
- Issue: [#6156](https://github.com/elizaos/eliza/issues/6156)

---

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

### 1) Message pipeline migration (V1 event hooks → V2 messageService)
If you built plugins around legacy events (e.g., `MESSAGE_RECEIVED`), treat this week’s changes as an early warning: core examples and plugin-sql have moved to `messageService.handleMessage()` patterns. Continuing to rely on legacy events risks silent incompatibilities as V2 hardens.  
- Reference PR: [#6202](https://github.com/elizaos/eliza/pull/6202)

**Action:** migrate your inbound message handling to the message service API and avoid wiring business logic directly to deprecated events.

### 2) Data isolation auth mode (upcoming) can become a hard break for server deployments
The JWT system in [#6200](https://github.com/elizaos/eliza/pull/6200) is gated behind `ENABLE_DATA_ISOLATION=true`, but once multi-tenant features become default for cloud/self-hosters, expect “unauthenticated-by-default” server setups to break unless they provide valid auth (JWT or legacy header mode).  
- Reference PR (open): [#6200](https://github.com/elizaos/eliza/pull/6200)

**Action:** if you deploy server for multiple users/entities, start validating your auth strategy now (JWT_SECRET vs JWKS vs Ed25519).

### 3) Server + Socket.IO changes: retest custom clients
The server refactor [#6199](https://github.com/elizaos/eliza/pull/6199) included Socket.IO configuration changes. If you have custom socket clients or reverse proxies, run integration tests against the updated server.

---

### References / Useful Links
- Repo: https://github.com/elizaos/eliza
- PRs:  
  - [#6201](https://github.com/elizaos/eliza/pull/6201) Unified API (core)  
  - [#6199](https://github.com/elizaos/eliza/pull/6199) Server reorg/optimization  
  - [#6213](https://github.com/elizaos/eliza/pull/6213) Type cleanup (“deslop”)  
  - [#6202](https://github.com/elizaos/eliza/pull/6202) plugin-sql: messageService + auto-create dirs  
  - [#6208](https://github.com/elizaos/eliza/pull/6208) CLI: Cloud default provider  
  - [#6217](https://github.com/elizaos/eliza/pull/6217) Secret encryption ordering fix  
  - [#6218](https://github.com/elizaos/eliza/pull/6218) TS build errors (first step)  
  - [#6159](https://github.com/elizaos/eliza/pull/6159), [#6197](https://github.com/elizaos/eliza/pull/6197) Client markdown spacing fixes  
  - [#6216](https://github.com/elizaos/eliza/pull/6216) Cloud integration (open)  
  - [#6200](https://github.com/elizaos/eliza/pull/6200) JWT auth (open)
- Issues:  
  - [#6204](https://github.com/elizaos/eliza/issues/6204) `.eliza` dir autocreate (closed)  
  - [#6156](https://github.com/elizaos/eliza/issues/6156) DeepSeek API question (closed)