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

## 1) Core Framework

### Monorepo stabilization after large refactor
A major cleanup PR landed early in the week and briefly destabilized type-checking/tests; follow-up work restored build health:

- **Chore / cleanup (“deslop”)**: tightened types, removed dead code and try/catch patterns, improved API-client typings, and updated CLI/app scaffolding.  
  PR: https://github.com/elizaos/eliza/pull/6213
- **TypeScript build fixes across packages**: unblocked builds in `core`, `server`, `client`, `plugin-sql`, `plugin-bootstrap`, and CLI scenario tooling, and restored correct runtime behaviors impacted by the cleanup (including logging paths and websocket log retrieval, per core-dev discussion).  
  PR: https://github.com/elizaos/eliza/pull/6218

**Developer impact:** if you pulled mid-week and hit TS failures or “mysterious” runtime regressions, update to latest and re-install deps (see CLI commands below).

### Core “ElizaOS” unified API (serverless-first direction)
The core package added/expanded a unified “ElizaOS” API surface intended to work in serverless Node.js contexts.

- PR: https://github.com/elizaos/eliza/pull/6201  
- Files touched include `packages/core/src/elizaos.ts` and core typings in `packages/core/src/types/elizaos.ts`.

**Why this matters:** this is laying groundwork for a consistent programmatic interface that can be used outside the full server runtime (e.g., workers/functions), and will likely become the recommended integration path for lightweight deployments.

---

## 2) New Features

### CLI: ElizaOS Cloud promoted as default AI provider + login flow
The CLI now recommends **ElizaOS Cloud** as the first/default model provider option during `elizaos create`, and includes a browser-based login flow to provision keys/config automatically.

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

This improves “time-to-first-agent” and reduces misconfiguration that previously surfaced as runtime errors (see Discord “TEXT_LARGE” note below).

**Example (create flow):**
```bash
elizaos update
elizaos create
# Choose "ElizaOS Cloud" when prompted (now the default/recommended option)
```

### Dependency modernization to fix drizzle-kit / drizzle-orm mismatches
A repo-wide dependency bump aligned `drizzle-orm` versions and fixed drizzle-kit compatibility issues across the ecosystem.

- PR: https://github.com/elizaos/eliza/pull/6210

**Developer impact:** fewer “works in one package, breaks in another” DB/tooling failures, especially for `@elizaos/plugin-sql` consumers and monorepo contributors.

### (In review / active) Eliza Cloud integration + MCP + A2A starter
A large PR is in progress to deeply integrate the ElizaOS Cloud plugin, add MCP + A2A service starters, and tighten CLI ↔ starter projects around a create → deploy → publish/monetize workflow.

- PR (open): https://github.com/elizaos/eliza/pull/6216

**Note:** because this is a very large change-set, expect follow-up docs and potential minor breaking edges in project initialization when it merges.

---

## 3) Bug Fixes

### plugin-sql: auto-create `.eliza` / PGLite directories + migrate to messageService API
A recurring papercut was fixed: developers building agents from scratch had to manually create `.eliza/` to avoid `plugin-sql` crashes. The plugin now ensures required directories exist and adds coverage for directory creation.

- PR: https://github.com/elizaos/eliza/pull/6202  
- Related issue (closed): https://github.com/elizaos/eliza/issues/6204

It also modernizes examples away from the deprecated event-based message handling to the new service API (see **Breaking Changes**).

### Fix: character secret encryption order (prevents incorrect secret handling)
Character secret encryption is order-sensitive; this patch fixes encryption happening in the wrong sequence, which could result in secrets not decrypting correctly or being stored inconsistently between client/server.

- PR: https://github.com/elizaos/eliza/pull/6217

### Example: standalone CLI respects `LOG_LEVEL`
The standalone CLI chat example now honors user `LOG_LEVEL`, making debugging less noisy and improving operator control.

- PR: https://github.com/elizaos/eliza/pull/6203

### Discord triage: `TEXT_LARGE` with minimal prompts
Developers reported `TEXT_LARGE` errors even when sending `"hi"`. The most likely cause identified: **no AI provider plugin registered** (e.g., OpenAI plugin missing). Also, plugin installation failures were linked to outdated packages.

- Discord (coders): 2025-12-13 notes  
- Recommended fix:
```bash
elizaos update
```

Then confirm you have an inference provider plugin installed and registered (example below).

---

## 4) API Changes

### Message ingestion: favor `messageService.handleMessage()` over legacy events
Example code and plugin migrations this week reinforced the newer API:

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

**Before (legacy pattern):**
```ts
// (illustrative) runtime.on(MESSAGE_RECEIVED, ...)
```

**After (current pattern):**
```ts
// Pseudocode showing the intended direction
await runtime.messageService.handleMessage({
  content: "hello",
  roomId,
  entityId,
  metadata: { source: "cli" }
});
```

If you maintain custom plugins/examples still emitting legacy events, plan to migrate.

### Core ElizaOS unified API surface expanded
- PR: https://github.com/elizaos/eliza/pull/6201

Expect ongoing typing and method-shape evolution here as serverless support solidifies.

---

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

### Twitter plugin: build/SQL error fallout mitigated
Community reports indicated TypeScript/build fixes resolved SQL errors affecting the Twitter plugin in the latest ElizaOS version (mentioned in Discord, 2025-12-11). The practical resolution is to update to a commit that includes the TS fixes.

- PR with broad TS/build fixes: https://github.com/elizaos/eliza/pull/6218

### Twitter agent excessive API requests (investigation ongoing)
A report noted a Twitter agent consuming “~50 requests per call” (Discord, 2025-12-12). No merged fix was referenced in this week’s activity snapshot; treat this as **active performance/quotas risk**.

**Mitigation suggestions (until a patch lands):**
- Add local caching for timeline lookups / user lookups in your agent logic.
- Reduce polling frequency and batch operations where possible.
- Ensure request deduplication across message loops.

---

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

### ElizaOS Cloud positioned as first-class provider (CLI)
- PR: https://github.com/elizaos/eliza/pull/6208  
This reduces dependency on external keys for quick starts and should prevent “no provider registered” runtime errors in new projects.

### OpenAI plugin still the common baseline (and required to avoid “no provider” failures)
Discord support identified missing OpenAI (or any inference) plugin registration as the cause of `TEXT_LARGE` errors on minimal input.

**Minimal runtime wiring example:**
```ts
import { AgentRuntime, type Character } from "@elizaos/core";
import { plugin as sqlPlugin } from "@elizaos/plugin-sql";
import { openaiPlugin } from "@elizaos/plugin-openai";

const character: Character = { name: "Eliza", bio: "You are a helpful assistant" };

const runtime = new AgentRuntime({
  character,
  plugins: [sqlPlugin, openaiPlugin],
});

await runtime.initialize();
```

### DeepSeek usage guidance (via OpenAI-compatible endpoints)
Developers discussed two working approaches:

1) **DeepSeek via OpenRouter**: you typically need an **OpenRouter** key (not a DeepSeek key) if using OpenRouter as the gateway.  
2) **DeepSeek direct**: use your DeepSeek key by pointing the OpenAI plugin to a DeepSeek-compatible endpoint (OpenAI-compatible API surface).

Reference mentioned in Discord: https://github.com/elizaos-plugins/plugin-openai

---

## 7) Breaking Changes (V1 → V2 migration warnings)

### ⚠️ Message handling: legacy `MESSAGE_RECEIVED` event path is being deprecated
This week’s example/plugin changes (PR #6202) continue the move to **service-driven message ingestion**. If you have V1-era code that listens for or emits `MESSAGE_RECEIVED`, you should migrate to:

- `runtime.messageService.handleMessage(...)`

**Risk if you don’t migrate:** messages may not enter the same processing pipeline as newer plugins/examples, and you can miss middleware, persistence hooks, or compatibility layers that have shifted into `messageService`.

### ⚠️ Authentication & multi-tenant direction (in review)
JWT authentication and entity derivation from `sub` is implemented in an open PR and may become the default in “data isolation mode”:

- PR (open): https://github.com/elizaos/eliza/pull/6200

If/when enabled (`ENABLE_DATA_ISOLATION=true`), clients will need to send `Authorization: Bearer <token>` and rely less on legacy headers like `X-Entity-Id`.

### Upgrade guidance (recommended this week)
To avoid known install/build mismatches and plugin install failures:
```bash
elizaos update
# then reinstall deps if needed
bun install
```

**Docs / references**
- OpenAI plugin: https://github.com/elizaos-plugins/plugin-openai
- PR index (this week’s key work):  
  - #6201 https://github.com/elizaos/eliza/pull/6201  
  - #6202 https://github.com/elizaos/eliza/pull/6202  
  - #6208 https://github.com/elizaos/eliza/pull/6208  
  - #6210 https://github.com/elizaos/eliza/pull/6210  
  - #6213 https://github.com/elizaos/eliza/pull/6213  
  - #6217 https://github.com/elizaos/eliza/pull/6217  
  - #6218 https://github.com/elizaos/eliza/pull/6218  
  - #6216 (open) https://github.com/elizaos/eliza/pull/6216  
  - #6200 (open) https://github.com/elizaos/eliza/pull/6200