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

This update summarizes developer-facing changes and ongoing work across ElizaOS core + plugins, based on GitHub activity and developer Discord threads.

---

## 1) Core Framework

### Messaging runtime: continued shift to `messageService` (away from legacy events)
Core and ecosystem work continues to consolidate message ingestion through the `messageService.handleMessage()` flow rather than older event-driven hooks (e.g., `MESSAGE_RECEIVED`). This unblocks consistent streaming semantics, better testability, and cross-channel parity (server, Socket.IO, plugins).

*Related (recent) merged work:*  
- Streaming + message service propagation across core/server/client: **PR #6212** (merged earlier this month; still the foundation for current week’s work)  
  https://github.com/elizaOS/eliza/pull/6212  
- SQL plugin migration to messageService API + auto PGLite dir creation: **PR #6202**  
  https://github.com/elizaOS/eliza/pull/6202  

### Unified API surface for serverless Node.js usage
A “Unified API” path was introduced for serverless + Node.js scenarios, reducing coupling to the full server runtime and providing a cleaner entrypoint for send/handle message flows.

- **PR #6201 — “Unified API - serverless - nodejs”**  
  https://github.com/elizaOS/eliza/pull/6201

### Cloud-first developer experience is being tightened (in progress)
Work is underway to “tightly integrate” Eliza Cloud into CLI + starter projects, including provisioning credentials and smoothing create → deploy → publish flows.

- **PR #6216 — “Eliza Cloud Integration, add MCP + A2A service starter…” (open)**  
  https://github.com/elizaOS/eliza/pull/6216  
  Context from Discord: Eliza Cloud is close to launch as an AI-assisted/low-code agent builder and deployment surface, initially focused on elizaOS but with components expected to open to other agent frameworks later.

---

## 2) New Features

### Streaming responses end-to-end (core → server → client)
Streaming support is now a first-class concept in the core runtime types and is plumbed through the client chat surfaces and server messaging endpoints.

- **PR #6212 — “enhance streaming support in text generation”**  
  https://github.com/elizaOS/eliza/pull/6212

**Developer usage (illustrative): enabling streaming in model calls**  
Exact APIs vary by provider plugin, but the core pattern is now supported throughout the stack:

```ts
import { AgentRuntime } from "@elizaos/core";

const runtime = new AgentRuntime({
  character,
  plugins: [/* sql, model provider, channels... */],
});

await runtime.initialize();

const result = await runtime.messageService.handleMessage({
  roomId,
  userId,
  text: "Summarize the last 20 messages, but stream partial output.",
  // key: opt into streaming where supported
  stream: true,
});
```

If you are implementing/maintaining a provider plugin, ensure you emit partial tokens/events in the shape expected by the runtime’s streaming context (see `packages/core/src/types/streaming.ts` touched in #6212).

### CLI: ElizaOS Cloud as default AI provider + browser login flow
CLI now defaults to ElizaOS Cloud for model/provider selection and includes a browser-based auth flow intended to reduce first-run friction.

- **PR #6208 — “Add ElizaOS Cloud as Default AI Provider in CLI”**  
  https://github.com/elizaOS/eliza/pull/6208

---

## 3) Bug Fixes (critical / developer-impacting)

### Starknet plugin: `"Failed to parse String to BigInt"` during token deployment (under investigation)
A developer reported a failure when running `DEPLOY_STARKNET_UNRUGGABLE_MEME_TOKEN` after updating the Starknet plugin; error indicates a BigInt parsing boundary (string encoding / JSON serialization / decimal vs hex).

- Discord thread (Dec 21–22): FenrirFawks ↔ Odilitime debugging, with request to review a modified `unruggable.ts` including additional logging.

**Likely root causes to audit in plugin code:**
- `JSON.stringify()` dropping `BigInt` (native JSON cannot serialize BigInt)
- Passing decimal strings where a hex-prefixed string is required (or vice versa)
- Using `BigInt("...")` against strings containing commas/whitespace or non-base10 prefixes
- Converting BigInt → string too early and losing base/radix context

**Recommended mitigation pattern (plugin-side):**
```ts
// If you must serialize: convert BigInt safely
const bigIntToString = (x: bigint) => x.toString(10);

// If you accept user input: normalize + validate before BigInt()
const parseBigIntStrict = (s: string) => {
  const v = s.trim();
  if (!/^(0x[0-9a-fA-F]+|\d+)$/.test(v)) throw new Error(`Invalid integer: ${s}`);
  return BigInt(v);
};
```

Track/coordinate the eventual fix in the relevant Starknet plugin repo once an issue/PR is opened (not yet present in this week’s aggregated GitHub events).

### CLI package size regression (templates copying DB files repeatedly) (reported; pending fix)
A Discord report flagged ~17GB disk usage in the CLI package due to database files being copied multiple times in project-starter templates. This is developer-experience critical (install time, CI, artifact sizes) and should be addressed by:
- ensuring starter templates don’t vendor DB artifacts
- adding `.npmignore`/`files` hygiene
- preventing build steps from copying runtime DB state

(No PR link yet; please open an issue in `elizaOS/eliza` if not already tracked.)

---

## 4) API Changes (developer-facing)

### Message format & initialization semantics (watch for downstream plugin impacts)
A recent core/bootstrap fix exposed `initPromise` for plugins and corrected message formatting after prior shape changes (notably around server/message IDs). If you maintain custom plugins, confirm you are not depending on deprecated message fields.

- **PR #6261 — “bootstrap action/provide format change fix + initPromise fix”**  
  https://github.com/elizaOS/eliza/pull/6261

### Auth / multi-tenancy direction: JWT mode (open PR)
JWT authentication + user management is implemented behind a feature flag and designed to support multiple verification strategies (Ed25519, JWKS, HS256 secret). This is not merged yet, but developers integrating ElizaOS in multi-tenant environments should review.

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

---

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

### Twitter (X)
- API constraints remain significant; community confirmed `plugin-twitter` works with a paid ~$200/mo X API account when using the **1.x branch** (per Discord guidance). If you are blocked by rate limits, ensure you are on the correct plugin branch and audit your polling/post cadence.

Operational note:
- The primary `@elizaos` account is currently suspended; use alternate accounts for announcements:
  - https://x.com/elizaecofund
  - https://x.com/elizaosc

### Telegram / Discord
- Architectural refactors toward unified messaging were initiated earlier (Telegram PR #22, Discord PR #32 referenced in prior weekly summary) to align with the core messageService direction.
- Additional Discord plugin work landed recently (tiered permission system for invite URLs) per contributor activity logs; verify your bot invite flows if you depend on custom scopes.

### Farcaster
- Self-hosted Farcaster hub connectivity remains available via the registry addition (decentralization push). If you need third-party API independence, prefer the local-hub plugin option. (See registry PR #243 in earlier summaries.)

---

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

### Streaming provider alignment
Streaming is being implemented consistently across major provider plugins (OpenAI / Anthropic / OpenRouter) as part of the broader “real-time agents” initiative (see December monthly summary for the PRs opened in each plugin repo). If you maintain a provider integration:
- ensure streaming yields partial deltas compatible with core streaming context
- confirm the client receives and renders partial tokens correctly

### OpenRouter maintenance
- Version bump merged in `plugin-openrouter` (**PR #22**) per activity logs; update if you are pinning plugin versions tightly.

### ElizaOS Cloud as a provider (CLI-first)
ElizaOS Cloud is now the recommended/default provider path in the CLI, and ongoing work aims to unify provisioning + storage/DB integration via Cloud (see PR #6216).

---

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

### Legacy event ingestion → `messageService.handleMessage()`
If you built plugins or agent wrappers on legacy events (e.g., `MESSAGE_RECEIVED`), you should migrate to the `messageService` pipeline. Symptoms of not migrating include:
- messages not being persisted or streamed correctly
- incompatibility with updated server messaging routes
- inconsistent behavior across channels (Discord vs web vs CLI)

**Migration sketch:**
```ts
// Old (conceptual)
runtime.on("MESSAGE_RECEIVED", (msg) => { /* ... */ });

// New
await runtime.messageService.handleMessage({
  roomId: msg.roomId,
  userId: msg.userId,
  text: msg.text,
  attachments: msg.attachments,
});
```

### Message shape changes (IDs / fields)
Core has iterated on message identifiers (e.g., dropping `serverId` in favor of message server semantics). Audit any custom UI or plugin code that assumes specific message fields exist.

See: **PR #6261**  
https://github.com/elizaOS/eliza/pull/6261

---

## GitHub / Issue Tracker Highlights (UX work queued)
No PRs were merged in `elizaOS/eliza` during Dec 22–23, but UI/UX work items continue to be defined.

New issues opened (selected):
- **#6274** Create Agent button consistency (My Agents vs Dashboard)  
  https://github.com/elizaOS/eliza/issues/6274
- **#6273** Move avatar button position in agent builder  
  https://github.com/elizaOS/eliza/issues/6273
- **#6272** Add Topics/Adjectives to agent config form  
  https://github.com/elizaOS/eliza/issues/6272
- **#6271** Inline “send message” button  
  https://github.com/elizaOS/eliza/issues/6271
- **#6270** Tooltip for system prompt  
  https://github.com/elizaOS/eliza/issues/6270

These are non-breaking, but they signal near-term UI surface churn—avoid brittle selectors in automation/Cypress and prefer stable test IDs where available.

---

## Security Note (developer awareness)
A **critical (CVSS 10) RCE** was mentioned for **n8n** in core-dev Discord discussions. If your ElizaOS deployment pipelines integrate n8n:
- review n8n advisories and upgrade immediately
- isolate workflow execution environments
- rotate credentials if exposure is suspected

(Track internal documentation work item: “Document n8n security vulnerability” — raised in Discord; no GitHub issue linked yet.)