# ElizaOS Developer Update (2026-01-11 → 2026-01-17)

This update summarizes core framework work, plugin ecosystem changes, and developer-facing issues discussed in Discord and tracked on GitHub for the week ending **2026-01-17**.

---

## 1) Core Framework

### Faster `AgentRuntime.initialize()` (30–40% improvement)
The runtime init path was optimized via parallelization and atomic upserts, reducing cold start by ~30% and warm start by ~40%. This is particularly impactful when using SQL adapters and message-server flows.  
PR: https://github.com/elizaos/eliza/pull/6342

### Optional embedding dimension short-circuit (`EMBEDDING_DIMENSION`)
Core now supports setting a fixed embedding dimension, allowing initialization to skip the “probe embedding” call (~500ms) when dimensions are known in advance.  
PR: https://github.com/elizaos/eliza/pull/6357

**Character config example**
```json
{
  "name": "my-agent",
  "settings": {
    "EMBEDDING_DIMENSION": 1536
  }
}
```

### Action lifecycle: `unregisterAction` added
Core runtime gained an `unregisterAction` method to allow dynamic action removal (useful for hot-reload, feature flags, and multi-tenant environments where action surfaces differ per room/world).  
(Referenced in daily engineering summary for 2026-01-17; PR link not included in the provided data.)

**Example**
```ts
runtime.registerAction(myAction);

// ... later, disable/remove action at runtime:
runtime.unregisterAction(myAction.name);
```

### Multi-transport client hooks (HTTP/SSE/WebSocket)
Unified client hooks were introduced to standardize chat/session interactions across transports and align transport naming between `api-client` and `server`.  
PR: https://github.com/elizaos/eliza/pull/6300

### Message lifecycle correctness: `MESSAGE_SENT` emission
A core event emission bug was fixed so `MESSAGE_SENT` is emitted after a successful send to the central server (important for downstream telemetry, plugin reactions, and delivery guarantees).  
(Referenced in daily engineering summary for 2026-01-17; PR link not included in the provided data.)

---

## 2) New Features

### Neon serverless support + stronger RLS posture in `plugin-sql`
`plugin-sql` added a dedicated Neon adapter/manager and improved RLS security and clarity across adapters.  
PR: https://github.com/elizaos/eliza/pull/6343

**When to use Neon adapter**
- You want serverless Postgres with HTTP/WebSocket connectivity constraints.
- You rely on RLS isolation (`ENABLE_DATA_ISOLATION=true`) in multi-tenant deployments.

### Refactor: `BaseDrizzleAdapter` split into domain stores
The ~3,900-line `BaseDrizzleAdapter` was decomposed into composable stores (MemoryStore, EntityStore, WorldStore, etc.) while preserving the public API. This should make it easier to extend/patch storage behavior without editing a monolith.  
PR: https://github.com/elizaos/eliza/pull/6366

### CI upgrades: Claude workflows (Opus 4.5) + security/maintenance automation
Claude-powered workflows were upgraded and extended with security/maintenance jobs.  
PR: https://github.com/elizaos/eliza/pull/6324  
Cursor-bot allowance fix: https://github.com/elizaos/eliza/pull/6328

### Experimental: V2 workstreams (not yet merged)
Two major V2 tracks are active and will affect architecture and migration planning:
- **V2.0.0 branch PR** (large-scale repo restructuring): https://github.com/elizaos/eliza/pull/6351
- **Rust WASM agent runtime** (browser/Node execution via WebAssembly): https://github.com/elizaos/eliza/pull/6363

---

## 3) Bug Fixes (with technical context)

### Env precedence + secret filtering: prevent shell env leakage
A critical class of deployment bugs was fixed: `dotenv.config()` does not override existing `process.env` keys, which could cause shell environment variables to unexpectedly influence plugin loading decisions and secret selection. The fix ensures correct precedence and safer secret filtering behavior.  
PR: https://github.com/elizaos/eliza/pull/6360

### `plugin-sql`: Postgres `SET LOCAL` parameterization bug
PostgreSQL `SET` commands do not accept parameter placeholders. The adapter previously used Drizzle’s parameterization, causing `syntax error at or near $1` when `ENABLE_DATA_ISOLATION=true`. This was corrected using `sql.raw()`.  
PR: https://github.com/elizaos/eliza/pull/6316

### `plugin-sql`: stability fixes (pool config, error handling, PGLite shutdown)
Resolved multiple crash/connection edge cases and improved pool behavior, especially in development and embedded test environments.  
PR: https://github.com/elizaos/eliza/pull/6323

### `plugin-sql`: skip `pgcrypto` extension for PGLite
PGLite doesn’t support `pgcrypto`, and PGLite already provides `gen_random_uuid()`. Skipping extension installation removes noisy warnings and avoids misconfiguration.  
PR: https://github.com/elizaos/eliza/pull/6339

### Dev tooling: stop infinite rebuild loops in watch mode
`bun run dev` could get stuck in a rebuild loop when version generation wrote files that the watcher then re-detected. This has been fixed.  
PR: https://github.com/elizaos/eliza/pull/6361

### Reflection “Entity not found” triage outcome
An “Entity not found” behavior in the Reflection Evaluator was closed as **intended design** rather than a bug (entity initialization is expected in the relevant flows).  
Issue (closed): https://github.com/elizaos/eliza/issues/6364

---

## 4) API Changes (developer-facing)

### `serverId` → `messageServerId` migration (rooms/worlds/actions/providers)
`plugin-bootstrap` and `plugin-sql` aligned on `messageServerId` naming to match schema and runtime semantics. While core types may keep legacy aliases for compatibility, plugin consumers that read/emit `serverId` in room/world context should update.  
PR: https://github.com/elizaos/eliza/pull/6333

**What to change**
- Replace `room.serverId` with `room.messageServerId`
- Replace any logs/metadata keys named `serverId` similarly

**Example**
```ts
// Before
logger.info({ serverId: room.serverId }, "joined room");

// After
logger.info({ messageServerId: room.messageServerId }, "joined room");
```

### Hiscores API published
A “hiscores” API was announced and documented (naming still under discussion).  
Docs: https://elizaos.github.io/api

---

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

### Discord plugin: runtime messaging regression (blocked on plugin + CLI version)
A critical integration error was reported: `this.runtime.elizaOS.sendMessage is undefined`, breaking Discord message handling. This is currently blocked pending a pull request in `plugin-discord` combined with `@elizaos/cli` **v1.7.1** (per triage note in the provided daily summary).  
Related discussion: Discord channel report (2026-01-15) + triage banner (2026-01-17).  
(Direct PR/issue link not included in the provided dataset; if you’re affected, pin to `@elizaos/cli@1.7.1` and track `elizaos-plugins/plugin-discord`.)

### Discord plugin voice utilities overhaul (in progress)
A major refactor of voice channel utilities is underway.  
PR: https://github.com/elizaos-plugins/plugin-discord/pull/42

### Telegram plugin: crash on image handling (reported)
A TypeError during image processing was filed against the Telegram plugin.  
Issue: https://github.com/elizaos-plugins/plugin-telegram/issues/23

### Socket.IO integration pointers (developer guidance)
For plugin authors needing real-time event push to frontends, reference:
- Socket.IO server implementation: https://github.com/elizaOS/eliza/blob/develop/packages/server/src/socketio/index.ts
- Example plugin frontend routes: https://github.com/elizaos-plugins/plugin-knowledge/tree/1.x/src/frontend

---

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

### Embedding provider configuration mismatch (open, urgent)
Two new high-priority issues were flagged:
- **`USE_OPENAI_EMBEDDING` not respected** → SQL errors due to embedding dimension mismatch between provider output and DB adapter expectations.  
  Issue: https://github.com/elizaos/eliza/issues/6380
- **Remove 500-character limit in first application prompt** (breaking UX for richer system prompts).  
  Issue: https://github.com/elizaos/eliza/issues/6381

**Developer impact**
- If you switch embedding providers (or expect OpenAI embeddings but get a different dimension), your vector column/schema and runtime adapter must agree on dimensions. Until #6380 is resolved, validate your embedding dimension explicitly (and consider using `EMBEDDING_DIMENSION` where appropriate).

### Streaming APIs emerging in V2/Python track (not merged in mainline per provided data)
Ongoing work (PR open) adds streaming model types and runtime plumbing (e.g., `use_model_stream`, streaming message service handler, SSE token streaming).  
PR (open): https://github.com/elizaos/eliza/pull/6358

---

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

### Warning: V2 branch removes “non-essentials”
The V2.0.0 PR explicitly removes app/server/CLI and focuses on runtime + critical plugins. Expect:
- Different project layout
- Different build entrypoints
- Plugin porting requirements (especially TypeScript-first plugins)

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

### Warning: `messageServerId` naming change can break plugins/apps
If your code consumes room/world context or action/provider payloads and still expects `serverId`, update to `messageServerId`. Even where backward-compatible aliases exist, downstream JSON consumers (frontends, analytics, automation) may break if they hardcode the old field name.  
PR: https://github.com/elizaos/eliza/pull/6333

### Warning: WASM runtime implies different concurrency assumptions
The WASM runtime work introduces platform-aware `Send + Sync` handling and uses single-thread primitives (`Rc<RefCell<...>>`). If you write Rust extensions/handlers, audit for assumptions about thread safety and async trait bounds.  
PR (open): https://github.com/elizaos/eliza/pull/6363

---

## Notable Developer Discord Threads (context for builders)

- **Polymarket plugin architecture**: Polymarket uses **Safe multisig proxy wallets (1/1)**; funds may live in the proxy, not the signer EOA. Plugin implementations should handle proxy flow rather than expecting the exported private key address to hold balances. (Discord coders channel, 2026-01-17)
- **Serverless constraints**: Calling Polymarket’s CLOB API from Supabase Edge Functions hit Cloudflare 403 + proxy/cert limitations; recommendation trended toward dedicated egress + self-hosted infra for reliability. (Discord coders channel, 2026-01-17)
- **High-throughput trading plugins**: For multi-DEX, real-time workloads, TypeScript implementations were reported to crash under load; discussion recommended Rust rewrites and NATS Jetstream over Redis streams for throughput. (Discord coders channel, 2026-01-16/17)

---

### References
- Weekly summary (Jan 11–17): https://github.com/elizaos/knowledge/blob/main/github_summaries_week_latest_2026-01-11.md  
- Daily engineering summary (Jan 17): https://elizaos.github.io/api/summaries/overall/day/2026-01-17.json  
- Discord logs (Jan 15–17):  
  - https://discord.com/channels/1253563208833433701/1253563209462448241  
  - https://discord.com/channels/1253563208833433701/1300025221834739744  
  - https://discord.com/channels/1253563208833433701/1301363808421543988