# ElizaOS Developer Update (2026-01-18 → 2026-01-24)

This week focused on (1) hardening our public API/data pipeline so downstream consumers stop seeing intermittent 404/null responses, (2) aligning social plugins (Discord/Telegram) with `@elizaos/core` 1.7.x, and (3) advancing V2 groundwork (Python parity work + dynamic execution engine prototypes).

---

## 1) Core Framework

### Runtime & execution architecture (V2 groundwork)
- **Dynamic execution engine prototype (V2.0.0 track)**: ongoing work to introduce schema-driven prompt execution with validation codes, retries/backoff, and structured output parsing across TS/Python/Rust.  
  - PR: https://github.com/elizaos/eliza/pull/6384 (open)
  - This is part of the broader V2 initiative to make execution more robust under context-window pressure and to normalize structured outputs (XML/JSON).

### Entity/runtime ergonomics (Python parity)
- **Python runtime & examples stabilized + small runtime surface additions**:
  - Added `AgentRuntime.get_available_actions()`
  - Added `AgentRuntime.get_entity()` alias
  - Improved `get_memories()` signature to accept keyword args
  - Fixed `plugin-inmemorydb` to implement the correct `Plugin` interface (was previously a dict-like export)
  - PR: https://github.com/elizaos/eliza/pull/6358 (merged 2026-01-22)

### Field migration alignment: `serverId` → `messageServerId`
- Continued migration away from the deprecated `serverId` field in room/world/message contexts in favor of `messageServerId`.
  - PR: https://github.com/elizaos/eliza/pull/6333 (merged)
  - This change ripples into plugins and any custom code reading room/world metadata.

---

## 2) New Features

### Streaming text support (Python + core/provider work)
Merged as part of the Python stabilization work:
- New streaming model types (`ModelType.TEXT_*_STREAM`)
- Runtime streaming registration + consumption APIs (e.g., `AgentRuntime.use_model_stream()` / `register_streaming_model()`)
- Message service streaming handler (`DefaultMessageService.handle_message_stream()` returning `StreamingMessageResult`)
- OpenAI plugin gained streaming handlers
- PR: https://github.com/elizaos/eliza/pull/6358

**Example (Python): token-by-token chat streaming (conceptual)**
```python
from elizaos.runtime import AgentRuntime
from elizaos_plugin_openai import OpenAIPlugin

runtime = AgentRuntime(
    character=character,
    plugins=[OpenAIPlugin(), inmemorydb_plugin],
)

# Pseudocode API shape; see the updated examples/docs in PR #6358
async for event in runtime.handle_message_stream(room_id=room_id, user_id=user_id, text="Hello"):
    if event.type == "token":
        print(event.text, end="", flush=True)
```

### Website profile rendering now supports Markdown
- Agent profile summary cards on `elizaos.github.io` now render Markdown via `react-markdown` + `remark-gfm`.
- This enables richer formatting in public agent profiles (lists, code blocks, links).
- Mentioned in daily update; see site repo activity summary (Jan 21).

---

## 3) Bug Fixes (critical)

### A) Public API stability: eliminate 404s + null exports in the data pipeline
Multiple fixes landed to ensure API endpoints exist consistently, even when there is *no GitHub activity* on a given day.

**What was happening**
- `/api/index.json` and contributor profile endpoints could 404 due to missing/incorrect `SITE_URL` in the pipeline workflow.
- “No activity” days could produce missing “overall summary” payloads, also resulting in 404s.
- Contributor summaries were sometimes exported as `null` due to pipeline ordering (export happening before generation).

**Fixes**
- Detect `SITE_URL` dynamically inside `run-pipelines.yml` so index and contributor profile generation is correct everywhere.
- Generate an explicit “No activity recorded” summary payload rather than returning 404 for empty days.
- Reordered pipeline steps so contributor summaries are generated before exporting stats.

**Links**
- Issues:
  - https://github.com/elizaos/eliza/issues/225
  - https://github.com/elizaos/eliza/issues/226
  - https://github.com/elizaos/elizaos.github.io/issues/225
  - https://github.com/elizaos/elizaos.github.io/issues/226
  - https://github.com/elizaos/elizaos.github.io/issues/228
- PR:
  - https://github.com/elizaos/elizaos.github.io/pull/229 (merged)
- WIP follow-up:
  - https://github.com/elizaos/elizaos.github.io/pull/227 (open)

### B) “Postgres still trying to use PGLite” migration failures (field report)
From Discord, a common failure mode occurred when migrating from PGLite → Postgres: even with correct `DATABASE_URL`, runtime continued attempting `.eliza/.elizadb` and migration failed at schema creation (e.g., `CREATE SCHEMA IF NOT EXISTS migrations`) and later during `worlds` table creation (UUID/JSONB).

**Resolution that worked in practice**
1) Upgrade core + Discord plugin to known-good versions:
```bash
elizaos update
# verify
elizaos --version        # should be 1.7.2
# and plugin-discord 1.3.7
```
2) Drop the existing database and re-initialize (to eliminate adapter/config conflicts):
```sql
DROP DATABASE your_db_name;
CREATE DATABASE your_db_name;
```
3) Fresh install/run with only the intended adapter enabled.

(Discord thread context: `#coders`, 2026-01-21)

---

## 4) API Changes (developer-facing)

### `serverId` deprecation → `messageServerId` adoption
- If your code reads `message.content.serverId` or expects `room.serverId`, update to `messageServerId`.
- Telegram plugin work also removed deprecated `serverId` from `ensureConnection` calls as part of 1.7.x compatibility.
- Core PR: https://github.com/elizaos/eliza/pull/6333

**Migration tip (TypeScript)**
```ts
// before
const sid = room.serverId;

// after
const sid = room.messageServerId;
```

### Python runtime signature tightening (examples/plugins)
- `plugin-inmemorydb` now must export a proper `Plugin` object (not a dict).
- `get_memories()` now supports kwargs/params dictionaries more consistently.
- PR: https://github.com/elizaos/eliza/pull/6358

### Docs note: CLI reference exists; upgrade steps are still being improved
- CLI reference overview: https://docs.elizaos.ai/cli-reference/overview  
(Upgrade instructions were flagged as a doc gap in Discord; link above is the current entry point.)

---

## 5) Social Media Integrations

### Discord
- **plugin-discord v1.3.7** released/prepared to restore compatibility with core 1.7.2.
- Community-confirmed working pair:
  - `elizaos` **1.7.2**
  - `plugin-discord` **1.3.7**
- Release prep mentioned in the weekly summary:
  - plugin PR: https://github.com/elizaos-plugins/plugin-discord/pull/44

### Telegram
- Major maintainability improvements:
  - Structured logging + standardized log formats
  - ESLint rules enforcing structured logging
  - `lint:check` script for CI
  - TypeScript fixes for `@elizaos/core` 1.7.x compatibility
  - Removal of deprecated `serverId` from `ensureConnection`
  - Refactor toward a unified messaging API approach
- PRs referenced in the weekly summary:
  - https://github.com/elizaos-plugins/plugin-telegram/pull/21
  - https://github.com/elizaos-plugins/plugin-telegram/pull/22
  - https://github.com/elizaos-plugins/plugin-telegram/pull/24

### X (Twitter) integration status
- Core-devs raised the question of whether an X API key is available yet; no resolution this week.
- Action item remains open (Discord `#core-devs`, 2026-01-21).

---

## 6) Model Provider Updates

### OpenAI
- Streaming support added in the Python stabilization/streaming PR (core exports updated accordingly).
- PR: https://github.com/elizaos/eliza/pull/6358

### Claude (CI / code review workflows)
- Claude-powered CI workflows upgraded (model + workflow improvements):
  - Upgrade PR: https://github.com/elizaos/eliza/pull/6324
  - Follow-up fix allowing Cursor bot to trigger Claude workflows: https://github.com/elizaos/eliza/pull/6328

---

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

### A) `messageServerId` rename impact
Even if core types keep some backward-compatibility, **plugins and new code paths now expect `messageServerId`**. If you have:
- custom actions/providers referencing `serverId`
- DB schemas expecting `server_id` in older shapes
- serialized message payloads containing `serverId`

…you should update to the new field and retest onboarding, role/settings flows, and any messaging integrations.

Primary reference: https://github.com/elizaos/eliza/pull/6333

### B) V2.0.0 branch direction: “runtime-first” repo shape
The V2.0.0 effort explicitly aims to remove non-essentials (app/server/CLI) and focus on runtime implementations (Rust/TS) with critical plugins ported.
- Tracking PR (large working branch): https://github.com/elizaos/eliza/pull/6351 (open)

**Practical guidance**
- Treat V2 PRs as *prototype surfaces* unless explicitly tagged for stable release.
- If you are building production agents today, stay on the 1.7.x line and only cherry-pick V2 features once release notes declare them stable.

---