# ElizaOS Developer Update (2026-04-24 → 2026-04-30)

This week focused on **modularity (plugin lifecycle + agent-server decoupling)**, **mobile runtime enablement (Android local agent + Bun foreground service)**, and **cloud platform modernization (Vite SPA + Hono Workers + R2 storage)**—with several targeted fixes for runtime reliability and social connectors.

---

## 1) Core Framework

### Agent server decoupled from app packages (plugin-lifecycle registration)
A major architectural change landed: the **core agent server has been decoupled from application-specific packages** by migrating to a **plugin-lifecycle registration system**. This removes “hard imports” of app packages from the agent server and cleans up dangling imports from deleted re-export shims, improving modularity and making it easier to ship/upgrade apps independently of the runtime.

* What changed:
  * Runtime now expects plugins/apps to register themselves via lifecycle hooks rather than being imported directly by the agent server.
  * Codebase cleanup: removal of old re-export shims and stale imports across the monorepo.

**References**
- PR: Agent server decoupling / plugin lifecycle: https://github.com/elizaos/eliza/pull/7204

### Runtime reliability: actionable errors when no model provider is configured
Misconfigured agents now fail with a purpose-built error (`NoModelProviderConfiguredError`) that’s designed to be **actionable** (e.g., “you didn’t configure a provider” rather than surfacing downstream null/undefined behaviors).

**References**
- Issue: actionable misconfiguration errors: https://github.com/elizaos/eliza/issues/7203

### New shared concurrency primitives: batch queues + bounded knowledge embeddings
Core now includes shared infrastructure for background/concurrent work (embedding drains, action-filter indexing, prompt batching affinity tasks, knowledge embedding). This consolidates multiple bespoke implementations behind a unified batch-queue toolkit, improving correctness and backpressure handling under load.

**References**
- PR: shared batch queue + bounded knowledge embeddings: https://github.com/elizaos/eliza/pull/6722  
- Docs: background tasks + batch queue:
  - https://github.com/elizaos/eliza/blob/develop/packages/docs/guides/background-tasks.mdx
  - https://github.com/elizaos/eliza/blob/develop/packages/docs/runtime/batch-queue.mdx

---

## 2) New Features

### Full local agent architecture on Android (Bun runtime in a foreground service)
Eliza agents can now run **natively on Android devices** via a local agent architecture that stages an agent bundle into APK assets and executes it via **Bun** in a **foreground service**. This enables offline-ish workflows (depending on provider) and opens the door to mobile-native connectors and device signals.

**What’s included**
- APK asset pipeline + staging scripts for the agent bundle
- `MiladyAgentService` foreground service to run Bun reliably in the background
- Runtime gating and onboarding probes for local inference mode

**References**
- PR: local agent on Android: https://github.com/elizaos/eliza/pull/7172  
- (Related in-flight / follow-up work observed in ecosystem summaries: vault/secrets management, runtime ops refactors, and build/test stabilization.)

**Example: running a local agent build for Android (repo tooling)**
```bash
# Build/stage the Android agent bundle (script names may vary by branch)
bun run packages/app-core/scripts/run-mobile-build.mjs
```

### x402 monetization: paid plugin routes + hardened test harness
The agent server can now expose **x402-protected routes** for plugins, enabling pay-per-call (or facilitator-based) monetization flows. This includes middleware for payment gating, startup validation, replay protection, and a more robust test harness.

**References**
- PR: x402 paid plugin routes + test hardening: https://github.com/elizaos/eliza/pull/7100

**Example: protect a plugin route with x402 middleware (conceptual)**
```ts
import { applyPaymentProtection } from "@elizaos/agent/middleware/x402";

// inside plugin route registration
app.get(
  "/api/plugins/my-plugin/premium",
  applyPaymentProtection({
    priceUsd: 0.01,
    productId: "my-plugin:premium-endpoint",
  }),
  async (c) => c.json({ ok: true })
);
```

### Cloud platform modernization: Next.js → Vite SPA + Hono Workers; image storage → R2
Infrastructure changes shipped in the cloud platform:
- Migrated from **Next.js** to a **Vite SPA** front-end with **Hono Workers** on the edge
- Moved image generation storage to **R2** for better durability/cost characteristics

**References**
- Cloud migration: https://github.com/elizaos/cloud/pull/484  
- OpenRouter integration (cloud infra): https://github.com/elizaos/cloud/pull/482  
- R2 storage for image generation: https://github.com/elizaos/cloud/pull/489

---

## 3) Bug Fixes (critical + developer-impacting)

### Telegram read receipts performance: switch to ID-based fetching
Telegram read receipt logic was optimized by switching from a more expensive approach to **ID-based fetching**, yielding significant performance improvements (lower overhead per update and less churn for active chats).

**References**
- Telegram optimization tracking: https://github.com/elizaos-plugins/plugin-telegram/issues/7009

### Repo portability: remove dangling TypeScript symlink
A dangling symlink inside `packages/typescript` pointed to a contributor-local path, breaking tooling that recursively walks the directory (plugin loaders, packagers, CI steps). Removing it restores portability for fresh clones and non-Linux environments.

**References**
- PR: remove dangling symlink: https://github.com/elizaos/eliza/pull/6713

### Cloud build stability + CI signal improvements (selected)
This week’s activity also included build and CI work to keep alpha releases unblocked, including TypeScript build fixes across agent/app-core/ui surfaces (and follow-ups continuing).

**Reference**
- PR: unblock NPM release (TS build errors): https://github.com/elizaos/eliza/pull/6810

---

## 4) API Changes (developer-facing)

### Plugin lifecycle registration (composition + initialization expectations changed)
Because the agent server no longer hard-imports application packages, plugin authors should ensure:
- Plugins register themselves through the lifecycle hooks expected by the runtime
- App-specific behavior is encapsulated as plugins (or app packages) rather than imported directly by the server

**Reference**
- Agent server decoupling: https://github.com/elizaos/eliza/pull/7204

### Runtime composition updates (agent starter workspace)
A new `agent/` starter workspace landed to simplify bootstrapping and to model multi-language entrypoints (TypeScript/Python/Rust). This came with runtime composition API surface changes (notably around how characters are loaded and how runtime is composed).

**Reference**
- PR: add `agent/` starter workspace: https://github.com/elizaos/eliza/pull/6702

### New error type: `NoModelProviderConfiguredError`
This is a behavioral/API improvement: instead of generic failures downstream, the runtime now throws a dedicated error when no provider is configured.

**Reference**
- https://github.com/elizaos/eliza/issues/7203

---

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

### Telegram
- **Performance:** read receipt optimization via ID-based fetching (see Bug Fixes).
- **Known build issue (in progress):** a **subpath export emission failure** has been flagged for the Telegram plugin and needs resolution (affects TS build/package export shape for some consumers).

**References**
- Telegram read receipt optimization: https://github.com/elizaos-plugins/plugin-telegram/issues/7009

### Discord
No major Discord plugin feature announcements were recorded in the provided week’s summaries, but work in the broader April window continues to standardize event routing and trigger behavior across platforms (see trigger/event bridge work below).

### Cross-platform triggers (Discord/Telegram/Webhooks): event-kind triggers wired to runtime event bus
Event-kind triggers can now be dispatched through a dedicated bridge service listening on the runtime event bus. This is the foundation for “MESSAGE_RECEIVED”-style triggers across Discord, Telegram, and other connectors.

**Reference**
- PR: event-kind triggers via runtime event bus: https://github.com/elizaos/eliza/pull/7116

---

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

### Anthropic integration: build + configuration fixes (and remaining work)
- **In progress:** TypeScript build fixes for the Anthropic plugin were called out as needing attention.
- Recent ecosystem work (within the same April window) includes correcting an Anthropic model ID that caused 404s for the default “small” model.

**Reference**
- Fix malformed Anthropic Haiku model ID: https://github.com/elizaos/eliza/pull/7078  
- (Build fixes noted as in-progress in daily ecosystem summary: https://elizaos.github.io/api/summaries/overall/day/2026-04-29.json)

### OpenRouter as a cloud inference dependency
Cloud infrastructure has been moving away from legacy Vercel constraints and integrating OpenRouter for provider flexibility.

**Reference**
- Cloud PR: https://github.com/elizaos/cloud/pull/482

### Local inference on Android
Android local agent work includes adapters/bootstrap paths for local inference, with Bun as the execution environment.

**Reference**
- Android PR: https://github.com/elizaos/eliza/pull/7172

---

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

### Breaking: agent server decoupling + plugin lifecycle registration
If you previously relied on:
- app packages being hard-imported by the agent server, or
- implicit plugin availability via app-level imports,

you must migrate to:
- explicit plugin installation, and
- lifecycle-based registration consistent with the new runtime expectations.

**Reference**
- https://github.com/elizaos/eliza/pull/7204

### Toolchain / ecosystem upgrades (impacting CI + local dev)
The broader repo has been modernizing TypeScript/Node/Bun, and developers should expect:
- stricter typechecks in some packages,
- updated build matrices,
- potential differences in ESM/CJS resolution as packaging gets cleaned up.

**Helpful references**
- Weekly infra modernization overview (Apr 26 – May 2): https://github.com/elizaos/eliza/blob/develop/2026-04-26.md (project summary snapshot)
- Release/CI overhaul PR (context for v2 automation): https://github.com/elizaos/eliza/pull/6530

### Known migration footguns (flagged this week)
- Telegram plugin export/build emission issue (subpath exports)
- Missing preload file affecting fresh clones of the main Eliza repo (affects some desktop/Electrobun surfaces)
- Anthropic plugin TS build fixes still pending

**Reference (tracking snapshot)**
- Daily ecosystem summary: https://elizaos.github.io/api/summaries/overall/day/2026-04-29.json