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

This update summarizes core framework and ecosystem changes shipped (and discussed) during the week ending **2026-04-25**, with additional technical context from Discord engineering threads.

---

## 1) Core Framework

### Agent runtime reliability + planner/swarms hardening
Several fixes landed to make multi-step execution and swarm handoff more deterministic and less “leaky” to end users:

- **Reliable swarm synthesis delivery back to the triggering room**  
  The swarm synthesis completion path was failing to post results back to the originating conversation. Fixes ensure the final synthesis is routed correctly.  
  PR: https://github.com/elizaos/eliza/pull/7090

- **Planner action parsing hardening (malformed XML tolerance)**  
  The planner sometimes emits malformed `<action>` XML (e.g., missing closing tags). Message parsing now tolerates common malformed shapes instead of failing the turn.  
  PR: https://github.com/elizaos/eliza/pull/7099

- **Prevent internal scheduler/task table leakage in chat replies**  
  A prompt that triggered `MANAGE_TASKS operation=list` could dump internal runtime task tables into user-facing chat. The action + workbench helpers now suppress that exposure.  
  PR: https://github.com/elizaos/eliza/pull/7095

- **Reduce prompt bloat in reflection + provider pipeline**  
  Duplicate/oversized context was being injected into each turn, blowing long-context budgets and increasing cost/latency. The reflection and prompts pipeline now strips redundant payloads.  
  PR: https://github.com/elizaos/eliza/pull/7013

### Desktop/app-core: managed windows + Electrobun improvements
- **Open app surfaces in managed desktop windows (Electrobun)**  
  Adds managed window surfaces that stay connected to page-scoped chat/control context, with test coverage around window/surface behavior.  
  PR: https://github.com/elizaos/eliza/pull/7092

- **Character rename propagation**  
  Name occurrences are tokenized on save so renames consistently propagate through UI/state.  
  PR: https://github.com/elizaos/eliza/pull/7101

### Identity / auth flow separation (CLI vs in-app)
- **Distinguish Claude Code CLI credentials from in-app OAuth**  
  Resolves confusing “Connected” states in Settings when CLI auth is present locally; clarifies disconnect behavior and credential source.  
  PR: https://github.com/elizaos/eliza/pull/7094

Related cloud auth migration work this week:
- **Steward auth migration** (cloud)  
  PR: https://github.com/elizaos/cloud/pull/466  
- **Multi-wallet support (EVM + Solana)** (cloud)  
  PR: https://github.com/elizaos/cloud/pull/462  

---

## 2) New Features

### Shared concurrency primitive: `utils/batch-queue` for drains, embeddings, indexing
Core now provides a unified concurrency/retry/task-storage abstraction used by:
- embedding drains
- action-filter index builds
- prompt batcher affinity tasks
- knowledge embedding paths (now bounded)

PR: https://github.com/elizaos/eliza/pull/6722  
Docs: https://github.com/elizaos/eliza/blob/develop/packages/docs/runtime/batch-queue.mdx  
Background tasks guide: https://github.com/elizaos/eliza/blob/develop/packages/docs/guides/background-tasks.mdx

**Example: using the BatchQueue to bound concurrency + add retries**
```ts
import { BatchQueue } from "@elizaos/core"; // path may vary by package entrypoint
import { elizaLogger } from "@elizaos/core";

const queue = new BatchQueue({
  concurrency: 4,
  maxRetries: 3,
  backoffMs: (attempt) => 250 * 2 ** attempt,
});

async function embedDoc(docId: string) {
  return queue.push(async () => {
    elizaLogger.info({ docId }, "embedding doc");
    // call your provider embedder here
    return { docId, ok: true };
  }, { priority: 5 });
}

await Promise.all(["a", "b", "c"].map(embedDoc));
await queue.drain(); // ensures all tasks flushed before shutdown
```

### Dynamic structured output control: `PROMPT_OUTPUT_FORMAT`
`dynamicPromptExecFromState` previously defaulted to TOON encapsulation, which is strong for Claude-like models but inconsistent on Gemini/Llama/Ollama. You can now force output formatting via environment variable.

PR: https://github.com/elizaos/eliza/pull/6978

**Example: forcing JSON output format in deployments**
```bash
# Prefer JSON where TOON compliance is unreliable
export PROMPT_OUTPUT_FORMAT=json
bun run start
```

### Ecosystem: agent monetization via decentralized discovery + payments (community)
A notable Discord demo showcased **@elisym/plugin-elizaos-elisym**:
- capabilities announced over **Nostr** (discovery layer)
- payment settlement on **Solana (devnet)**

This effectively turns agents into paid service providers capable of agent-to-agent commerce without a centralized marketplace intermediary.

Registry inclusion (same week):
- PR: https://github.com/elizaos-plugins/registry/pull/346

Discord context (demo + token utility thread):  
- 2026-04-24 summary: https://discord.com/channels/1253563208833433701/1253563209462448241

---

## 3) Bug Fixes (critical/behavioral)

### “Internal mechanism” leakage in failure replies
Transient-failure responses could surface internal diagnostics/mechanism wording because the recovery model was prompted with raw structured diagnostics and asked to explain them. The failure reply builder now prevents this class of leakage.

PR: https://github.com/elizaos/eliza/pull/7098

**Impact:** safer UX + reduces the risk of exposing system prompts / internal action traces in end-user channels.

### Credential conflicts (CLI vs OAuth)
When Claude Code CLI was authenticated locally, the in-app Anthropic subscription panel could incorrectly report connected status. The fix separates the two credential sources and updates UI copy/logic.

PR: https://github.com/elizaos/eliza/pull/7094

### Telegram plugin: duplicate pollers + resource leaks
The Telegram integration added **poller tracking** to prevent duplicate poller instances and ensure clean deregistration on shutdown/reload.

(Reported in daily engineering summary; PR link not included in the aggregated dataset.)  
Daily summary reference: https://elizaos.github.io/api/summaries/overall/day/2026-04-25.json

### Character rename propagation in app state
Renaming characters previously failed to propagate consistently through the editor/state graph. Tokenization on save fixes this.

PR: https://github.com/elizaos/eliza/pull/7101

---

## 4) API Changes (developer-facing)

### Streaming callback type unification (TTS garbling fix)
Multiple inline `onStreamChunk` definitions across runtime/model/message-service were replaced with a single canonical `StreamChunkCallback` type alias, removing a “dual extractor” path that was causing TTS garbling.

PR: https://github.com/elizaos/eliza/pull/6690  
Docs updated:
- https://github.com/elizaos/eliza/blob/develop/packages/docs/guides/streaming-responses.mdx
- https://github.com/elizaos/eliza/blob/develop/packages/docs/runtime/messaging.mdx
- https://github.com/elizaos/eliza/blob/develop/packages/docs/runtime/types-reference.mdx

**Migration note:** If your plugin defines its own stream chunk callback shape, align it to the exported canonical type to avoid subtle stream parsing regressions.

### Runtime composition / starter surface changes (watch for signature shifts)
Work landed to introduce an `agent/` starter workspace and adjust runtime composition APIs (e.g., `loadCharacters` accepting file paths/options). Treat this as an **active surface** while v2 continues to stabilize.

PR: https://github.com/elizaos/eliza/pull/6702

---

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

### Telegram
- Poller lifecycle tracking added to prevent duplicate instances and to deregister cleanly on shutdown/restart (see Bug Fixes).

### Discord
- No major plugin-discord PRs were included in the provided weekly dataset; however, multiple swarm/planner delivery fixes materially improve Discord-based agent workflows because synthesis now posts back reliably (PR #7090) and internal scheduling artifacts are suppressed (PR #7095).

### Farcaster
- No Farcaster plugin deltas were included in the week’s aggregated data.

---

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

### Anthropic
- **Incorrect default Haiku model ID fixed** (was causing 404s).  
  PR: https://github.com/elizaos/eliza/pull/7078

- **Credential source separation (CLI vs OAuth)** improves provider status accuracy and prevents erroneous “connected” states.  
  PR: https://github.com/elizaos/eliza/pull/7094

### Output-format compatibility across providers
- `PROMPT_OUTPUT_FORMAT` lets you tune structured output expectations to the provider/model you run (Claude vs Gemini vs local Llama/Ollama).  
  PR: https://github.com/elizaos/eliza/pull/6978

---

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

### HTN planning discussion (roadmap, not yet a committed API)
Discord engineering discussion flagged a possible **HTN (Hierarchical Task Network)** direction in v2:
- current suggestion: keep existing triggers/steps (“HTN-lite”) and later upgrade decomposition to **LLM-based planning** at v2 beta
- uncertainty remains on what is already implemented vs planned; action item is to **verify and document** HTN status

Discord thread summary (2026-04-25 coders):  
https://discord.com/channels/1253563208833433701/1300025221834739744

**Developer guidance:** don’t build hard dependencies on undocumented “HTN” internals yet; prefer stable action/evaluator interfaces until v2 beta documentation lands.

### Auth expectations changed (CLI != OAuth)
If your tooling assumes “Anthropic connected” implies in-app OAuth, update your checks. CLI auth can exist independently and should not be treated as user-consented app OAuth.

PR: https://github.com/elizaos/eliza/pull/7094

### Runtime streaming type consolidation
If you relied on bespoke `onStreamChunk` typing (or multiple callback shapes), update to the canonical callback type and validate downstream TTS/voice pipelines.

PR: https://github.com/elizaos/eliza/pull/6690

### Work in progress: x402 paid plugin routes
Discord/community work continues on enabling plugins to accept **$elizaOS / $DegenAI** as x402 payment methods; expect additional API surface here as this feature matures (no merged PR in this dataset).

Discord context (token utility + x402 mention):  
- 2026-04-24 summary: https://discord.com/channels/1253563208833433701/1253563209462448241

---

### References (weekly highlights)
- Weekly project summary (Apr 19–25): https://github.com/elizaos/elizaos.github.io (pipeline summary referenced in dataset)  
- Cloud repo auth + wallet changes: https://github.com/elizaos/cloud/pull/466, https://github.com/elizaos/cloud/pull/462  
- Plugin registry addition (@elisym/plugin-elizaos): https://github.com/elizaos-plugins/registry/pull/346