# ElizaOS Developer Update (2026-04-19 → 2026-04-25)

This week centered on (1) hardening the agent runtime’s messaging + concurrency pipeline, (2) finishing the LifeOps multi-calendar stack, and (3) pushing agent commerce forward via new marketplace/payment integrations.

---

## 1) Core Framework

### Concurrency + background task unification (`batch-queue`)
A new shared concurrency layer was introduced to reduce duplicated “drain” implementations across embeddings, knowledge indexing, prompt batching, and other background tasks:

- **PR:** `feat(core): shared batch-queue drains and bounded knowledge embeddings` ([elizaos/eliza#6722](https://github.com/elizaos/eliza/pull/6722))
- **What changed:** Adds a reusable `utils/batch-queue` toolkit (priority queue, batch processor, semaphore, task drains) and reuses it in multiple pipelines.
- **Why it matters:** Agent workloads that previously spawned ad-hoc background loops can now share one bounded, retry-aware concurrency mechanism—improving stability under load and making throughput tuning consistent across features.

Relevant docs added/updated:
- Background tasks: `packages/docs/guides/background-tasks.mdx`
- Batch queue reference: `packages/docs/runtime/batch-queue.mdx`

### Runtime message/action pipeline hardening
Several fixes reduced failure modes in the message service + reflection/action planner pipeline and improved action-correction reliability:

- **Preserve `SPAWN_AGENT` during metadata-based action correction**
  - **PR:** `fix(message): preserve SPAWN_AGENT against metadata action correction` ([elizaos/eliza#7075](https://github.com/elizaos/eliza/pull/7075))
  - **Context:** The owned-action correction safety net could “upgrade” planned actions based on keyword scoring; this fix prevents it from overriding `SPAWN_AGENT` in ways that break orchestration flows.

- **Reduce prompt bloat that could exceed context limits**
  - **PR:** `fix(reflection,providers): reduce prompt bloat blowing long-context cap` ([elizaos/eliza#7013](https://github.com/elizaos/eliza/pull/7013))
  - **Impact:** Removes duplicated/oversized context segments being shipped per turn in reflection + action planning, reducing token pressure and avoiding truncation failure modes.

### Steward auth migration + cloud login reliability
Cloud auth work continued with the Steward migration:
- **PR:** Steward auth migration ([elizaos/cloud#466](https://github.com/elizaos/cloud/pull/466))
- **Bug fixed (daily summary):** OAuth failures in the Steward flow were resolved by correcting `tenant_id` formatting (reported in 2026-04-24 project summary).  
  If you embed Steward OAuth in your app, confirm you are passing the tenant identifier in the expected canonical format.

---

## 2) New Features

### LifeOps: Multi-calendar Google feeds (listing + persistence + merged view + latency fallback)
LifeOps now supports multiple calendars end-to-end:
- **PR:** `feat(lifeops): support multi-calendar Google feeds` ([elizaos/eliza#7072](https://github.com/elizaos/eliza/pull/7072))
- **Highlights:**
  - Lists available calendars in settings
  - Persists included calendars
  - Merges selected feeds into one operational schedule
  - Adds a hosted-cloud lag fallback to reduce “calendar drift” when upstream latency spikes

**Developer note:** if you have custom scheduling actions/providers, verify you are operating on the merged feed rather than assuming a single primary calendar.

### Runtime output compatibility: `PROMPT_OUTPUT_FORMAT`
Added a knob to make `dynamicPromptExecFromState` more reliable for non-Claude providers that don’t consistently emit TOON encapsulation:
- **PR:** `feat(core): PROMPT_OUTPUT_FORMAT env var for dynamicPromptExecFromState` ([elizaos/eliza#6978](https://github.com/elizaos/eliza/pull/6978))

Example:
```bash
# Prefer JSON output parsing for providers that struggle with TOON
export PROMPT_OUTPUT_FORMAT=JSON
```

### Ecosystem commerce: Elisym “paid agent provider” plugin (Nostr discovery + Solana settlement)
A new plugin was merged into the registry enabling paid agent-to-agent services:
- **PR:** Registry add for Elisym plugin ([elizaos-plugins/registry#346](https://github.com/elizaos-plugins/registry/pull/346))
- **Discord demo (2026-04-24):** capability announcement via **Nostr**, payment settlement on **Solana devnet**, and delivery of results—no intermediary marketplace required.  
  Demo flow: agent posts capabilities → other agent (Claude Desktop) discovers + pays → request fulfilled → settlement confirmed.

If you’re designing monetized actions, start by treating capabilities as discoverable “service contracts” (schema + price + settlement requirements) and ensure your action handlers can run idempotently (paid calls will be retried in real networks).

---

## 3) Bug Fixes (Critical / High Impact)

### UI: excessive polling reduced (resource + battery + server load)
- **PR:** `fix: reduce excessive frontend polling` ([elizaos/eliza#7077](https://github.com/elizaos/eliza/pull/7077))
- **What was happening:** multiple components polled independently at very high frequency, creating redundant request storms.
- **Fix:** slower polling intervals and better coordination.

### Anthropic: malformed Haiku model IDs causing 404s
- **PR:** `fix: correct malformed Anthropic Haiku model ID` ([elizaos/eliza#7078](https://github.com/elizaos/eliza/pull/7078))
- **Symptom:** Anthropic requests 404’ing due to typos/duplicate suffixes in default small model IDs.
- **Action:** if you pinned the old IDs in env/config, update to the corrected identifier.

### In-memory DB adapter parity with SQL + correctness fixes
Two fixes bring in-memory behavior closer to `plugin-sql` semantics and fix a correctness edge case:
- **Sort order parity (desc)**
  - **PR:** `fix(inmemory-adapter): sort getMemories desc to match plugin-sql` ([elizaos/eliza#7000](https://github.com/elizaos/eliza/pull/7000))
- **Room migration correctness**
  - **PR:** `fix: handle roomId changes in InMemoryDatabaseAdapter.updateMemories` ([elizaos/eliza#6965](https://github.com/elizaos/eliza/pull/6965))

If you test locally with `InMemoryDatabaseAdapter` and deploy with SQL, re-run any “history compaction” or memory-window tests; ordering and room reassignment behavior are now aligned more closely.

### Action planner + orchestration stability
- **SPAWN_AGENT preservation:** ([elizaos/eliza#7075](https://github.com/elizaos/eliza/pull/7075)) ensures orchestration isn’t silently “corrected away” by metadata heuristics.

---

## 4) API Changes (Developer-facing)

### Streaming: canonical `StreamChunkCallback`
To reduce inconsistent streaming behavior (including TTS garbling), stream chunk callback types were consolidated:
- **PR:** `fix(core): consolidate StreamChunkCallback, remove dual-extractor CAUSING TTS garbling` ([elizaos/eliza#6690](https://github.com/elizaos/eliza/pull/6690))

**Implications for plugin authors:**
- Use the canonical type from `types/components.ts` (and Python equivalent) rather than defining local `onStreamChunk` shapes.
- If your plugin hooks streaming, ensure your callback signature matches the updated shared alias.

Docs updated:
- `packages/docs/guides/streaming-responses.mdx`
- `packages/docs/runtime/messaging.mdx`
- `packages/docs/runtime/types-reference.mdx`

### Runtime composition / starter surface (`agent/` workspace)
A new starter-style `agent/` workspace landed:
- **PR:** `feat: add agent/ like starter in develop` ([elizaos/eliza#6702](https://github.com/elizaos/eliza/pull/6702))

This includes runtime composition updates (notably around `loadCharacters` accepting file paths/options). If you have tooling that assumed character loading only from in-memory objects, audit that path.

### Pipeline hooks
A hook surface was added to support prompt optimization and other processing stages:
- **PR:** `feat: pipeline hooks` ([elizaos/eliza#6733](https://github.com/elizaos/eliza/pull/6733))

If you maintain internal forks that patch the message pipeline directly, prefer migrating those patches to hook points where possible to reduce merge conflicts.

---

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

### Twitter/X operational note (platform risk)
Community shared a real-world case of an ElizaOS-built agent reaching scale (multi-million impressions) and then facing X bans (Discord 2026-04-22). There’s no code change this week, but it reinforces a best practice:

- Treat X/Twitter credentials as revocable, scope what agents can do, and build fallback channels (Discord/Telegram) for continuity.
- When implementing autonomous posting/replying, consider adding rate limiting and “human-in-the-loop” approval for high-risk actions.

### Telegram dependency update
Telegram SDK dependency bumps landed in app surfaces (renovate-driven), including:
- **PR:** `fix(deps): update dependency telegram to v2.26.22` ([elizaos/eliza#7069](https://github.com/elizaos/eliza/pull/7069))

### Discord routing fix (LifeOps)
Discord routing adjustments were included in a larger LifeOps fix set:
- **PR:** `fix: lifeops discord routing + submodule bumps (supersedes #6968)` ([elizaos/eliza#6971](https://github.com/elizaos/eliza/pull/6971))

---

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

### Anthropic
- **Haiku model ID fix:** ([elizaos/eliza#7078](https://github.com/elizaos/eliza/pull/7078))
- **CI/CD stabilization:** The 2026-04-24 project summary notes stabilizing the `plugin-anthropic` pipeline for standalone publishing and fixing 404s caused by malformed model IDs.

### Provider-agnostic output formatting
- **`PROMPT_OUTPUT_FORMAT`** improves reliability across Gemini/Llama/Ollama-like providers that don’t reliably output TOON ([elizaos/eliza#6978](https://github.com/elizaos/eliza/pull/6978)).

---

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

### V2 remains alpha; expect churn in build tooling + runtime surfaces
Community notes indicate v2 is still **alpha** (Discord 2026-04-22). Several changes this week can break older assumptions:

- **Type/SDK consolidation in streaming:** if you relied on locally defined stream chunk callback types, migrate to the canonical `StreamChunkCallback` ([elizaos/eliza#6690](https://github.com/elizaos/eliza/pull/6690)).
- **Runtime composition changes:** new `agent/` workspace and `loadCharacters` interface changes may require updating custom bootstrappers ([elizaos/eliza#6702](https://github.com/elizaos/eliza/pull/6702)).
- **Performance-related behavior shifts:** polling reductions and prompt bloat cuts can change timing/ordering of UI refresh and reflection behavior ([elizaos/eliza#7077](https://github.com/elizaos/eliza/pull/7077), [elizaos/eliza#7013](https://github.com/elizaos/eliza/pull/7013)).

### Token migration window is closed (operational breaking change)
Not code, but relevant for developers building token-gated experiences: Discord reports the AI16Z → ELIZAOS migration window has closed (2026-04-22). If your app depends on automatic migration UX, you’ll need a fallback/waitlist flow.

### Commerce roadmap: protocol fee token utility (proposal)
A v3-level proposal discussed on Discord (2026-04-24) suggests:
- protocol fees payable in **USDC or ELIZAOS**
- discount for ELIZAOS payments
- buyback/burn mechanism for USDC payments

This is not merged code yet, but plugin authors should anticipate multi-asset settlement surfaces and make payment modules/configs extensible (asset type, chain, settlement receipt schema).

---

### Links / References
- Weekly summary: (Apr 19–25, 2026) `Overall Project Weekly Summary` (provided data)
- Key PRs:
  - LifeOps multi-calendar: https://github.com/elizaos/eliza/pull/7072
  - Batch queue: https://github.com/elizaos/eliza/pull/6722
  - PROMPT_OUTPUT_FORMAT: https://github.com/elizaos/eliza/pull/6978
  - SPAWN_AGENT preservation: https://github.com/elizaos/eliza/pull/7075
  - Reduce polling: https://github.com/elizaos/eliza/pull/7077
  - Anthropic Haiku model ID fix: https://github.com/elizaos/eliza/pull/7078
  - StreamChunkCallback consolidation: https://github.com/elizaos/eliza/pull/6690
  - InMemoryAdapter fixes: https://github.com/elizaos/eliza/pull/7000, https://github.com/elizaos/eliza/pull/6965
  - Elisym plugin in registry: https://github.com/elizaos-plugins/registry/pull/346
  - Steward auth migration: https://github.com/elizaos/cloud/pull/466