# ElizaOS Developer Update (2026-02-15 → 2026-02-21)

This week focused on hardening ElizaOS for the upcoming beta, while pushing the **V2 runtime direction** (multi-language cores, leaner distribution, and improved runtime ergonomics). Community discussion also converged on **v2.0.0 as the recommended forward path**, with notes on DB configuration and plugin ecosystem expansion.

---

## 1) Core Framework

### V2 direction: leaner “runtime-first” architecture + multi-language cores
Work continued on the V2 line with major refactors that prioritize the agent runtime and critical plugins over bundled app/server UX.

- **V2.0.0 working branch**: removes non-essentials and focuses on Rust/TypeScript runtime foundations  
  PR: https://github.com/elizaos/eliza/pull/6351
- **Next-gen multi-language Eliza (Rust + Python + TypeScript)** with new core packages and examples  
  PR: https://github.com/elizaos/eliza/pull/6485  
  (Related “next” branch PR: https://github.com/elizaos/eliza/pull/6474)

Key runtime ergonomics called out in the V2 PR description (important for agent authors):
- Agents can respond **without** requiring a `roomId` or `worldId`
- Initial message memory creation moved into the message handler service (less confusing lifecycle)
- `planningMode: false` path to skip planning and execute a single action (useful for games/simple loops)
- Actions can be invoked with **arguments** (tool-like calling without an extra step)

### Per-request entity scoping (multi-tenant / data isolation groundwork)
To support multi-entity settings without threading context everywhere, core added a request context built on AsyncLocalStorage:

- **RequestContext in core**  
  PR: https://github.com/elizaos/eliza/pull/6457

Example usage pattern (Node/TS):
```ts
import { RequestContext } from "@elizaos/core";

// Wrap any entrypoint (HTTP handler, queue consumer, socket event)
await RequestContext.withEntity(entityId, async () => {
  // runtime calls can now implicitly read entity-scoped settings
  await runtime.handleMessage(message);
});
```

### Prompt bloat reduction: ActionFilterService (vector + BM25 rerank)
Large action registries were causing prompt inflation. A new filter service ranks actions/providers and presents only the relevant subset to the model.

- **ActionFilterService — vector search + BM25 reranking**  
  PR: https://github.com/elizaos/eliza/pull/6475

Why it matters:
- Reduces “200+ actions” down to ~10–20 contextually relevant actions
- Improves latency and cost while increasing tool-call precision

### Bootstrap plugin hardening + performance work
Two notable stability improvements landed around bootstrap/provider plumbing:

- **Optimization + robustness improvements (bootstrap plugin)**  
  PR: https://github.com/elizaos/eliza/pull/6476
- **Null guard for `runtime.providers` to avoid runtime TypeError**  
  PR: https://github.com/elizaos/eliza/pull/6473

---

## 2) New Features

### On-chain agent identity: SAID Protocol integration (Solana)
Agents created via CLI now auto-register a free SAID identity (Ed25519 keypair generated via Node `crypto`, no new deps).

- PR: https://github.com/elizaos/eliza/pull/6510  
- SAID site/docs: https://saidprotocol.com • https://saidprotocol.com/docs.html

Expected `elizaos create` output (from PR):
```text
✨ Project created successfully!

⚡ SAID Protocol identity created
  Wallet: <pubkey>
  Profile: https://saidprotocol.com/agents/<pubkey>

  Key saved to .said-wallet.json (add to .gitignore!)
```

Operational guidance:
- Ensure `.said-wallet.json` is **gitignored**
- Treat SAID registration as “best effort”: the PR notes failures are caught and shouldn’t crash project creation

### Scenario/cost awareness groundwork (recently closed)
While not new this week, the “cost evaluator” work closed recently and is relevant for teams preparing beta load tests:

- Issue (closed): `feat(scenarios): Add Cost Evaluator` https://github.com/elizaos/eliza/issues/5759

### Plugin ecosystem expansion (community + registry activity)
From Discord/plugin ecosystem notes (2026-02-21), two new plugin proposals surfaced:
- `@elizaos/plugin-xproof` (proposal)
- `micronoise-eliza-plugin` enabling token swaps via **x402 payments** (proposal)

Additionally, ongoing discussion continued around **MoltBridge** as a Trust & Discovery layer (now reported live), with community feedback requested on how agents should leverage it:
- MoltBridge integration proposal context: https://github.com/elizaos/eliza/issues/6501

---

## 3) Bug Fixes (with technical context)

### Defensive runtime stability fixes (null/undefined hazards)
Two merged fixes address common production failures caused by unexpected nullish configuration:

- **Settings utilities: guard `Object.entries()` calls**  
  PR: https://github.com/elizaos/eliza/pull/6471  
  Context: prevents runtime crashes when settings blobs or env-derived config objects are undefined.
- **Bootstrap providers: guard `runtime.providers`**  
  PR: https://github.com/elizaos/eliza/pull/6473  
  Context: fixes `TypeError: Cannot read properties of null (reading 'filter')` in provider listing.

### Server event correctness
- **Emit `MESSAGE_SENT` after sending to central server**  
  PR: https://github.com/elizaos/eliza/pull/6378  
  Fixes: https://github.com/elizaos/eliza/issues/5216  
  Context: restores expected event sequencing for clients that depend on MESSAGE_SENT for UI state or downstream automation.

### CLI reliability for created projects + remote auth usage
- **Always use `latest` for `@elizaos/*` deps in created projects**  
  PR: https://github.com/elizaos/eliza/pull/6362  
  Context: fixes failures when CLI is linked from monorepo and template versions aren’t published (e.g. `1.7.2-alpha.0`).
- **Load `.env` in `elizaos agent` commands (remote auth)**  
  PR: https://github.com/elizaos/eliza/pull/6376  
  Context: fixes remote connections when `ELIZA_SERVER_AUTH_TOKEN` is required.

### Open issue: duplicate LLM calls when messages include URLs (webapp)
Still open, but high impact (double cost + duplicated streaming output):
- Issue: https://github.com/elizaos/eliza/issues/6486

### Reported in Discord: “agent started responding in Korean”
A community report suggests an unexpected locale/config drift (possibly model/system prompt or provider routing issue):
- Action item noted (Discord, 2026-02-21): investigate OpenClaw agent unexpectedly writing in Korean.

---

## 4) API Changes (developer-facing)

### New request context surface area
If you’re building middleware or transport adapters, the addition of `RequestContext` (AsyncLocalStorage) changes the “best practice” for per-user/per-entity configuration:

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

Recommended adapter structure:
```ts
await RequestContext.withEntity(entityId, async () => {
  // Everything below inherits entity-scoped settings without extra params
  return agentRuntime.handleMessage(msg);
});
```

### Environment variable documentation added
To reduce configuration ambiguity across server/cloud deployments:
- Docs PR: https://github.com/elizaos/eliza/pull/6377  
- New doc: `docs/environment-variables.md`

---

## 5) Social Media Integrations

### WhatsApp + Gmail + n8n workflow reach
The weekly engineering summary highlights finalized work targeting “agents where users already are”:
- WhatsApp tracking issue: https://github.com/elizaos/eliza/issues/6401  
- Gmail tracking issue: https://github.com/elizaos/eliza/issues/6404  
- n8n tracking issue: https://github.com/elizaos/eliza/issues/6429  

n8n workflow plugin improvements (control panel REST API + robustness):
- REST API control panel: https://github.com/elizaos-plugins/plugin-n8n-workflow/pull/16  
- Workflow property handling bugfix: https://github.com/elizaos-plugins/plugin-n8n-workflow/pull/18

### Twitter plugin stabilization + media support
Monthly contributor notes indicate significant Twitter plugin work:
- Fix auth retry loop + add media upload capability (PR referenced in contributor summary):  
  Repo: https://github.com/elizaos-plugins/plugin-twitter

(If you maintain a Twitter agent, verify your deployment against the latest plugin-twitter release, especially around auth/session retry behavior and media upload payload limits.)

---

## 6) Model Provider Updates

### Anthropic / “Opus 4.5” support and reasoning modes
Recent core work (from the weekly summary) included:
- Opus 4.5 support tracking: https://github.com/elizaos/eliza/issues/6368
- Chain-of-thought reasoning tracking: https://github.com/elizaos/eliza/issues/6294

### OpenAI-compatible endpoints (requested)
A feature request is open to support custom base URLs for OpenAI-compatible providers (e.g., SiliconFlow):
- Issue: https://github.com/elizaos/eliza/issues/6490

If you’re implementing a provider shim today, you may need to patch locally or use a different provider integration until `baseURL`/endpoint override is added.

---

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

### V2 packaging: “runtime-first” distribution breaks assumptions
The V2.0.0/next-gen PRs explicitly remove default app/client/server infrastructure in favor of runtime packages and examples:
- https://github.com/elizaos/eliza/pull/6351
- https://github.com/elizaos/eliza/pull/6485

**Migration impact:**
- If your project depended on bundled server/client scaffolding from V1, you will need to:
  - adopt the new examples as starting points, or
  - provide your own transport (HTTP/WebSocket/Discord/Twitter/etc.) around the runtime.

### Behavior changes to plan for
- Agents may respond without `roomId/worldId` (ensure your storage/memory logic doesn’t hard-require them)
- `planningMode` can be disabled; tools/actions may be executed in a single step
- Actions can accept arguments directly (tool-call style), which can change how you validate and log tool usage

### Community guidance: recommended branch is v2.0.0
Discord consensus (2026-02-21): **v2.0.0 branch is the recommended version**, even though documentation may lag. Plan new builds accordingly, and expect fast iteration.

---

## Appendix: DB configuration note (plugin-sql)
From Discord (2026-02-21), `plugin-sql` supports **pglite** and **Neon Postgres**, selected via environment variables (Postgres credentials). **Automatic migration between them is not supported**.

Practical implication:
- Treat pglite vs Neon as separate backends; if you switch, you must run your own data export/import strategy.

---

## References
- Core docs added (architecture/core concepts/plugin dev/API ref/deployment):  
  PR: https://github.com/elizaos/eliza/pull/6356
- Daily ecosystem summary (2026-02-21):  
  https://elizaos.github.io/api/summaries/overall/day/2026-02-21.json