# ElizaOS Developer Update (2026-04-05 → 2026-04-11)

This week focused on hardening the TypeScript runtime (observability, timeouts, memory persistence gating), improving local development workflows, and expanding the plugin ecosystem—while the team signaled that near-term roadmap effort is shifting toward v3.

---

## 1) Core Framework

### Runtime hardening & observability (merged)
PR **#6562** introduced a broad set of runtime/message-pipeline upgrades: provider timeouts, state recomposition optimizations, safer serialization, and optional file logging.  
Link: https://github.com/elizaos/eliza/pull/6562

Key changes:
- **Per-provider timeouts in `composeState`**: providers are bounded (30s) and failures degrade to empty results instead of blocking the whole response.
- **Action-chain state recomposition**: optimized recomposition via `onlyInclude` to refresh only `RECENT_MESSAGES` and `ACTION_STATE` while preserving other cached provider data.
- **Logging**: opt-in log file output (prompt/response correlation) gated by `LOG_FILE`.
- **Memory pipeline controls**: `DISABLE_MEMORY_CREATION` and `ALLOW_MEMORY_SOURCE_IDS` added to message service; also a guard was added to `runtime.evaluate()` so evaluators do not run if memory creation is disabled.
- **JSON output robustness**: JSON5-tolerant extraction for LLM outputs via `json-llm` helper.
- **Bootstrap improvements**: banner/init hook work and default provider registration updates.

Docs updated in the same PR:
- `packages/typescript/CHANGELOG.md`, `README.md`, `ROADMAP.md`, `docs/DESIGN.md`
- Additional docs in `packages/docs/...` for streaming and messaging types (see “API Changes”).

### New local dev harness + runtime composition helpers (merged)
PR **#6702** adds an `agent/` workspace (stdin/stdout REPL harness) plus new runtime composition helpers designed for host applications and local contributors.  
Link: https://github.com/elizaos/eliza/pull/6702

Highlights:
- **`agent/` REPL harness** that loads a character and routes user input through `runtime.messageService`.
- **Runtime composition API** in `packages/typescript/src/runtime-composition.ts`:
  - `loadCharacters(...)` now supports **JSON file paths** with optional `cwd`.
  - `createRuntimes(...)` threads a `checkShouldRespond` option into `AgentRuntime` composition.
- **Plugin submodule dev workflow**: `.gitmodules` plus scripts to link/unlink local plugin submodules (e.g., `plugin-sql`, `plugin-ollama`, `plugin-local-ai`) for faster iteration.

> Note: This workflow changes how contributors may run the monorepo locally (see “Breaking Changes / Migration Notes”).

### Streaming callback consolidation (merged)
PR **#6690** consolidated multiple inline `onStreamChunk` definitions into a single canonical `StreamChunkCallback` type to address **TTS garbling** and remove type drift across packages/docs.  
(Referenced in completed items list; see docs changes under API section.)

---

## 2) New Features

### Agent financial operations via Agent Wallet plugin
A new wallet plugin shipped in `elizaos/eliza` enabling cross-chain operations (EVM + Solana) for agents: balance checks, swaps, and asset movement.  
PR: **#6552** (referenced in weekly summary)  
Repo: https://github.com/elizaos/eliza

This is foundational for the project’s shift toward a trust/economic layer (see AgentID/AIGEN discussions below).

### Local file logging for prompts/responses (runtime)
With **#6562**, you can enable file-based logs for debugging prompt construction, provider timings, and response correlation:

```bash
export LOG_FILE=./logs/eliza.log
```

This writes (in the same directory as `LOG_FILE`):
- `output.log`
- `prompts.log`
- `chat.log`

Useful for:
- diagnosing provider latency regressions
- auditing prompt templates used in production
- correlating action executions with model responses

### Memory persistence gating (runtime)
New environment flags allow you to run in “stateless” mode or tightly control what gets persisted:

```bash
# Disable memory persistence entirely
export DISABLE_MEMORY_CREATION=true

# Or allow only specific memory sources to persist
export DISABLE_MEMORY_CREATION=false
export ALLOW_MEMORY_SOURCE_IDS=conversation,user_message,tool_result
```

This is particularly relevant for:
- regulated deployments (PII retention constraints)
- deterministic test runs
- high-throughput agents where memory write amplification is costly

### Developer harness: boot the repo quickly (`agent/`)
From a fresh clone (after installing deps), you can run the REPL harness added in **#6702**:

```bash
bun run dev
# or
bun run --cwd agent dev --character ./path/to/character.json
```

This is intended as the “fast path” for core runtime testing without needing a full connector stack.

---

## 3) Bug Fixes (critical + technical context)

### Fixed: TTS garbling / streaming type drift
PR **#6690** removed multiple competing `onStreamChunk` signatures across runtime/model/message-service types and replaced them with a single canonical `StreamChunkCallback`. This prevents subtle mismatches where downstream consumers interpret chunks inconsistently (observed as garbled TTS / partial concatenation issues).  
Docs updated alongside code:
- `packages/docs/guides/streaming-responses.mdx`
- `packages/docs/runtime/messaging.mdx`
- `packages/docs/runtime/types-reference.mdx`

### Fixed: “toon” encapsulation missing action params (pending merge, high impact for Discord/Milady-style connectors)
PR **#6709** fixes a production-grade failure mode for connectors using TOON encapsulation: the response schema did not request `params`, so actions with required parameters (e.g. `RUN_IN_TERMINAL.command`) were frequently invoked with missing arguments.  
Link: https://github.com/elizaos/eliza/pull/6709

Also fixes continuation-loop spam for async terminal/PTY task actions by treating orchestration actions as terminal (prevents filler messages while background work runs).

If you operate a non-streaming connector (Discord/Milady) with TOON formatting, track this PR closely.

### Security posture: MCP server “A” grade (reported)
Issue **#6710** reports an “A” security grade for the Eliza MCP server via Loaditout.  
Link: https://github.com/elizaos/eliza/issues/6710

---

## 4) API Changes

### Streaming APIs: canonical `StreamChunkCallback`
As of **#6690**, downstream TypeScript integrations should rely on the single exported type (instead of local/inlined definitions). If you previously imported/declared your own callback types, align them to the new canonical definition to avoid chunk-shape drift.

Docs:
- https://docs.elizaos.ai (see streaming responses + types reference)

### Handler callback now includes optional `actionName`
PR **#6562** extended `HandlerCallback` to accept an optional `actionName` parameter, enabling better attribution without content parsing.

**Implication:** If you implement a custom handler callback, ensure your function signature can accept an additional optional argument (backward compatible in TS, but may matter for strict function typing).

### Runtime composition changes (new helper surface area)
PR **#6702** introduces/expands host-facing composition helpers:
- `loadCharacters` supports JSON file paths
- `createRuntimes` accepts `checkShouldRespond`

If you maintain a custom host, consider migrating to these helpers to reduce divergence from upstream composition logic.

### `shouldRespond` routing changes (open PR; watch for adoption)
PR **#6712** proposes a new `ShouldRespondOptions` shape and group-room addressee routing improvements, including `parentMessageAuthorEntityId` for reply threads and deterministic addressee resolution.  
Link: https://github.com/elizaos/eliza/pull/6712

Not merged as of this weekly window, but it’s likely to affect:
- Discord/Telegram group-thread behavior
- multi-agent rooms (anti-loop / “reply-to-other” disambiguation)

---

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

### Discord: group routing + TOON issues
- **TOON parameter extraction** fix is in PR **#6709** (pending). If your Discord connector uses TOON encapsulation, this addresses missing required params for actions.
- PR **#6712** (open) targets **group addressee routing** and anti-loop prompt guidance, improving behavior in busy multi-party channels.

### Telegram example updates
PR **#6562** includes updates to the Telegram TypeScript example (notably model selection/config ergonomics).  
Relevant file: `examples/telegram/typescript/telegram-agent.ts`

### Socket.IO integration notes (Discord discussion)
From Discord (2026-04-10), developers integrating ElizaOS **v2** via Socket.IO reported the working message pattern:

```js
// Authenticate with entityId (UUID) in socket options
const socket = io("http://localhost:8080", {
  transports: ["polling"], // fallback supported
  auth: { entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
});

// Join a room
socket.emit("message", {
  type: 1, // ROOM_JOINING
  payload: { roomId: "my-room" }
});

// Send a message
socket.emit("message", {
  type: 2, // SEND_MESSAGE
  payload: { roomId: "my-room", content: "hello" }
});
```

Open documentation gaps raised by the community:
- canonical enum listing of message `type` values
- required vs optional payload fields
- programmatic DM channel creation
Docs reference: https://docs.elizaos.ai (developers also recommended querying the codebase directly with Cursor for the enums and payload specs)

---

## 6) Model Provider Updates (OpenAI / Anthropic / DeepSeek / OpenRouter / Local)

### OpenRouter: Windows checkout friction being addressed
In `elizaos-plugins/plugin-openrouter`, PR **#25** removes PGlite artifacts blocking Windows git checkouts (large cleanup, improves onboarding for Windows contributors).  
Link: https://github.com/elizaos-plugins/plugin-openrouter/pull/25

### Provider timeouts + latency behavior
PR **#6562** introduces provider-level timeouts and changes total provider timeout defaults (noted during review). If you run many providers in `composeState`, monitor P99 latency after upgrading, especially in environments that previously relied on very low timeout ceilings.

### Local model deployments (community usage signal)
Discord discussion indicates active deployments using:
- `@elizaos/plugin-openai`
- local Qwen deployments on GPU (Nosana) behind a custom dashboard
- Socket.IO + HTTP polling fallback for transport resilience

---

## 7) Breaking Changes / V1 → V2 (and V2 → upcoming V3) Migration Warnings

### V2 runtime behavior changes that may surprise existing deployments
- **Timeout defaults / latency:** provider total timeout defaults were adjusted in the runtime/message pipeline work (**#6562**). If you tuned for low-latency “fail fast” behavior, re-benchmark and consider explicit timeout configuration in your host.
- **Memory persistence gating:** `DISABLE_MEMORY_CREATION` now affects not just persistence but also evaluator execution paths. If you relied on evaluators in “stateless mode”, verify behavior after upgrading.
- **Local dev workflow:** the new `agent/` harness and plugin submodule workflow (**#6702**) can change contributor setup expectations. If you maintain internal forks/CI, ensure your install steps don’t assume submodules are present unless you initialize them.

### TOON vs XML encapsulation considerations
- The platform is increasingly leaning on TOON encapsulation for structured outputs. If you have custom connectors, ensure you can parse action params from TOON responses. Track **#6709** for correctness in non-streaming connectors.

### Group-room reply routing (incoming)
- If/when **#6712** lands, group reply behavior and “anti-loop” prompting will change, especially in multi-agent rooms. Plan to regression-test:
  - reply threads
  - “addressed to other agent” cases
  - mention-based triggers vs metadata-based routing

### Project direction: v3 focus
Core team messaging in Discord indicates priority is on **ElizaOS v3**. Expect v2 docs (Socket.IO message types, DM creation flows) to lag and rely more on source-of-truth code + docs site: https://docs.elizaos.ai

---

## Ecosystem / Plugin Registry Highlights

New plugins added to the registry this week:
- `@madeonsol/plugin-madeonsol` (**registry PR #334**)  
  https://github.com/elizaos-plugins/registry/pull/334
- `plugin-signalfuse` (**registry PR #333**)  
  https://github.com/elizaos-plugins/registry/pull/333
- `@razzgames/elizaos-plugin` (**registry PR #335**)  
  https://github.com/elizaos-plugins/registry/pull/335

Messaging deprioritization in favor of identity/trust:
- XMTP messaging issue closed to pivot toward identity standards:  
  https://github.com/elizaos-plugins/registry/issues/6418

Ongoing identity/economy discussions:
- AgentID framework issue: https://github.com/elizaos/eliza/issues/6688  
- AIGEN protocol issue: https://github.com/elizaos/eliza/issues/6708  
- Capability token enforcement proposal: https://github.com/elizaos/eliza/issues/6707  
- MAXIA marketplace plugin proposal: https://github.com/elizaos/eliza/issues/6700  
- SafeAgent token safety plugin proposal: https://github.com/elizaos/eliza/issues/6706

Developer-experience blocker (open):
- `elizaos create` failure on macOS due to Bun postinstall semantics:  
  https://github.com/elizaos/eliza/issues/6704