# ElizaOS Developer Update (2025-12-09 → 2025-12-16)

This update summarizes core framework work, new capabilities, and notable developer-facing changes merged or discussed over the past week. Sources include GitHub PRs/issues in `elizaos/eliza` and developer Discord threads (coders/core-devs/discussion/partners).

---

## 1) Core Framework

### Unified ElizaOS API surface (serverless + Node.js)
Work landed to formalize a “unified API” layer in core, aimed at making programmatic usage consistent across runtimes (Node/serverless) and reducing bespoke wiring in downstream apps.

- PR: **“feat: Unified API - serverless - nodejs”** ([#6201](https://github.com/elizaos/eliza/pull/6201))
- Touches: `packages/core/src/elizaos.ts`, types in `packages/core/src/types/elizaos.ts`, plus tests.

**Developer impact**
- If you previously wrapped runtime calls ad-hoc, prefer the new `ElizaOS` entrypoint (or updated types) to avoid drift as Cloud + server integrations tighten.

> If you maintain an SDK or internal wrapper, re-run type generation and ensure you’re not pinning old core types.

---

## 2) New Features

### ElizaOS Cloud becomes the default/recommended AI provider in the CLI
The CLI now promotes **ElizaOS Cloud** as the first option in `elizaos create` model selection and adds a smoother browser-based login/API key setup.

- PR: **“feat: Add ElizaOS Cloud as Default AI Provider in CLI”** ([#6208](https://github.com/elizaos/eliza/pull/6208))

**What changed**
- `elizaos create` selection list now leads with Cloud.
- CLI login flow provisions credentials more seamlessly (reduces manual env setup errors).
- Additional tests cover selection + Cloud config utilities.

**Practical usage**
```bash
# Update to ensure you get the new selection + login behavior
elizaos update

# Create a new project and choose ElizaOS Cloud (now default/recommended)
elizaos create
```

If you’re automating project scaffolding (CI templates), validate that your non-interactive flows still pin the provider you expect.

---

### Cloud integration starter work (MCP + A2A service starter) — in review
Large in-flight PR integrating Cloud plugin deeper into CLI + starter projects, including MCP/A2A service starters and a more opinionated create→deploy→publish/monetize flow.

- PR (open): **“Eliza Cloud Integration, add MCP + A2A service starter, integrate CLI and starter projects tight”** ([#6216](https://github.com/elizaos/eliza/pull/6216))

**Why it matters**
- Expect upcoming “happy path” scaffolds for:
  - Agents
  - Apps
  - n8n workflows
  - MCP / A2A services  
  (This matches the Cloud direction discussed in Discord on 2025-12-14.)

---

## 3) Bug Fixes (with technical context)

### `plugin-sql`: PGLite directory auto-create + migration hardening + new message ingestion path
Multiple fixes landed to reduce first-run failures and improve DB stability across upgrades.

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

**Root causes addressed**
1. **Cold-start failures** when `.eliza/` (or PGLite backing directories) were absent.
2. Upgrade/migration fragility for older schemas (pre-1.6.5 camelCase → 1.6.5+ conventions) and **RLS (row-level security)** handling.

**Developer impact**
- You should no longer need to manually create `.eliza` directories in minimal Node examples.
- DB upgrades should be more idempotent, with improved test coverage for production-like migration sequences.

**Also important:** examples and the SQL plugin moved away from deprecated event-based message handling toward the **messageService API** (details in “Breaking Changes” below).

---

### TypeScript build correctness sweep (first step)
A broad set of TS build error fixes landed across core/client/plugins to reduce “works locally but fails in CI/production” type drift.

- PR: **“fix: resolve TypeScript build errors in every packages - first step”** ([#6218](https://github.com/elizaos/eliza/pull/6218))

If you maintain external plugins, this is a good time to:
- recompile against the latest `@elizaos/*` types
- remove `any`/`unknown` patches you added to “get it building”

---

### Character secret encryption ordering bug fix
Encryption sequencing was corrected for character secrets to ensure secrets are encrypted/decrypted in the intended lifecycle order.

- PR: **“fix: encryption for character secrets in correct order”** ([#6217](https://github.com/elizaos/eliza/pull/6217))

**Why this matters**
- Mis-ordered encryption can manifest as “secrets missing” or “invalid credentials” on reload, especially when server CRUD endpoints persist character config.

---

### CLI test harness fix: `startAgents` signature mismatch
The CLI `elizaos test` pipeline was failing because the e2e harness used an outdated `startAgents` signature and a stale mock name.

- PR: **“fix(cli): correct startAgents API signature in e2e-tests”** ([#6207](https://github.com/elizaos/eliza/pull/6207))

If you have custom test harnesses that call server start helpers, compare signatures against the latest CLI implementation to avoid subtle breakage.

---

### Client UI: markdown spacing improvements
Several UI-only fixes reduce excessive whitespace in markdown-rendered model output.

- 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))

---

## 4) API Changes

### Message ingestion: deprecated `MESSAGE_RECEIVED` event → `messageService.handleMessage()`
Examples and SQL plugin integration moved to the newer message pipeline.

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

**What to change in your code**
If you previously emitted/handled `MESSAGE_RECEIVED` (or relied on the older event flow), migrate to:

```ts
await runtime.messageService.handleMessage({
  // message payload (content, roomId, entityId, etc.)
});
```

> Exact payload shape depends on your runtime/server wiring; follow the updated examples in-repo (see `examples/standalone*.ts` in PR #6202).

**Why**
- Centralizes validation, persistence, and downstream fanout in one path.
- Avoids plugin-level duplication and reduces DB constraint edge cases.

---

### CLI/provider configuration
With Cloud promoted to the default provider in CLI ([#6208](https://github.com/elizaos/eliza/pull/6208)), some projects may see different default `.env` expectations if you relied on “first option is OpenAI”.

**Recommendation**
- Explicitly set your provider in automation templates rather than relying on interactive defaults.

---

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

### Twitter reply ingestion + DB foreign key failures (triage + likely mitigations)
Developers reported that **Twitter replies** were causing database failures due to **foreign key constraint** issues (Discord `#coders`, 2025-12-15). A maintainer indicated that “latest codebase has SQL fixes” (consistent with the plugin-sql migration + schema hardening work in [#6215](https://github.com/elizaos/eliza/pull/6215)).

**What to do if you hit this**
1. Update to latest packages:
```bash
elizaos update
```
2. Ensure you’re on the updated SQL plugin and have run/allowed migrations.
3. If still failing, capture:
   - the failing insert/update statement
   - the FK name
   - the message/reply IDs involved  
   and open an issue referencing the Twitter ingestion path + your DB backend (Postgres vs PGLite).

### Regaining “X” access + Cloud social publishing direction
On 2025-12-14 (Discord), the team discussed momentum around regaining X access and noted Cloud is integrating **social publishing** plus SEO and ad network connections. No code PRs this week specifically for Twitter/Telegram/Discord/Farcaster plugins beyond the DB stabilization context above, but expect Cloud-first social workflows to land soon (also see open PR [#6216](https://github.com/elizaos/eliza/pull/6216)).

---

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

### DeepSeek support: issue closed (provider compatibility)
- Issue (closed): **“can i use deepseek api?”** ([#6156](https://github.com/elizaos/eliza/issues/6156))

While the weekly data doesn’t include the closing comment content, the closure suggests the recommended path is either:
- using an OpenAI-compatible interface where applicable, or
- using ElizaOS Cloud as the abstraction layer (now first-class in CLI via [#6208](https://github.com/elizaos/eliza/pull/6208)).

### Common runtime error: `TEXT_LARGE` on minimal input due to missing AI plugin
On 2025-12-13 (Discord `#coders`), a `TEXT_LARGE` error was traced to **no inference provider plugin registered** (OpenAI plugin not installed/registered). Suggested fix was updating packages:

```bash
elizaos update
```

**Developer reminder**
- Minimal runtime requires both:
  - a DB plugin (e.g., `@elizaos/plugin-sql`)
  - an inference plugin (e.g., `@elizaos/plugin-openai`, or Cloud provider)

---

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

### Message pipeline migration is effectively a breaking behavior change for custom integrations
Even if types compile, behavior can diverge if you still rely on the legacy `MESSAGE_RECEIVED` event path.

**Action required**
- Move inbound messages (from any connector: Twitter/Telegram/Discord/custom webhooks) to `messageService.handleMessage()` and delete legacy event emitters where possible.
- Re-test message ordering + persistence, especially for reply threads and cross-room routing.

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

---

### Data isolation + JWT authentication is coming online (migration planning)
JWT auth and multi-entity isolation work is implemented but not shown as merged in the provided weekly PR list; however it is a major open change:

- PR (open): **“feat(auth): implement JWT authentication and user management”** ([#6200](https://github.com/elizaos/eliza/pull/6200))

**Why this matters for V1→V2**
- Moves from “header-based entity selection” (`X-Entity-Id`, legacy mode) toward **JWT-derived entityId** (`sub` → `stringToUuid(sub)`), and introduces verifier strategies (Ed25519/JWKS/HS256).
- Impacts server middleware, Socket.IO auth, and how multi-tenant resources will be scoped.

**Prep checklist**
- If you operate a multi-tenant deployment, start mapping how your identity provider’s `sub` values should map to Eliza entities.
- Avoid hard-coding `X-Entity-Id` assumptions in client code; keep auth pluggable.

---

## Links & References

### PRs
- Unified API: [#6201](https://github.com/elizaos/eliza/pull/6201)  
- SQL plugin messageService + directory auto-create: [#6202](https://github.com/elizaos/eliza/pull/6202)  
- SQL plugin migration/RLS/organization: [#6215](https://github.com/elizaos/eliza/pull/6215)  
- Cloud default provider in CLI: [#6208](https://github.com/elizaos/eliza/pull/6208)  
- CLI e2e `startAgents` signature fix: [#6207](https://github.com/elizaos/eliza/pull/6207)  
- TS build fixes: [#6218](https://github.com/elizaos/eliza/pull/6218)  
- Character secrets encryption order: [#6217](https://github.com/elizaos/eliza/pull/6217)  
- Markdown spacing fixes: [#6159](https://github.com/elizaos/eliza/pull/6159), [#6197](https://github.com/elizaos/eliza/pull/6197)  
- Open (major): JWT auth: [#6200](https://github.com/elizaos/eliza/pull/6200)  
- Open (major): Cloud integration + MCP/A2A starters: [#6216](https://github.com/elizaos/eliza/pull/6216)

### Issues
- `.eliza` auto-create expectation (closed): [#6204](https://github.com/elizaos/eliza/issues/6204)  
- DeepSeek API question (closed): [#6156](https://github.com/elizaos/eliza/issues/6156)

### Developer Discord (context, triage signals)
- Twitter replies → FK constraints + “latest codebase has SQL fixes” (2025-12-15, `#coders`)
- `TEXT_LARGE` due to missing inference plugin; “run `elizaos update`” (2025-12-13, `#coders`)
- Proposal: require screenshots/videos in PRs to reduce prod regressions (2025-12-15, `core-devs`)
- Cloud direction: create→publish→monetize→promote loop + social publishing/SEO/ad network (2025-12-14)

---