# ElizaOS Developer Update
**Week of 2025-10-24**

## Core Framework

The core ElizaOS framework received significant updates this week with the merging of the `develop` branch into `main` via PR #6078. This introduces a new pluggable message service architecture and unifies the server configuration process, enabling more modular and maintainable message handling. 

Key architectural changes include:
- A new `IMessageService` interface with a `DefaultMessageService` implementation that centralizes message deletion and channel clearing functionality.
- The introduction of a new `generateText()` API for direct text generation without the overhead of the full agent runtime.
- Migration to UUID-only agent identification, allowing duplicate agent names while maintaining unique identity through UUIDs.
- Making the embedding service optional when no TEXT_EMBEDDING model is registered, optimizing resource usage.
- Enhanced agent runtime to expose action results to plugins, enabling more sophisticated plugin behaviors.

```typescript
// Using the new generateText API
import { ElizaOS } from '@elizaos/core';

const eliza = new ElizaOS();
await eliza.initialize();

const text = await eliza.generateText({
  prompt: "Explain quantum computing in simple terms",
  model: "gpt-4-turbo", // Optional - uses default if not specified
  temperature: 0.7 // Optional parameters
});
```

## New Features

### Headless React Hooks
A major new feature introduced in PR #6093 is the creation of a dedicated `@elizaos/react` package with 30 headless React hooks. This enables developers to build custom UIs for ElizaOS agents while maintaining full type safety and React Query integration:

```tsx
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ElizaReactProvider, useAgents, useStartAgent } from '@elizaos/react';

function AgentList() {
  const { data: agents, isLoading } = useAgents();
  const startAgent = useStartAgent({
    onSuccess: () => console.log('Agent started!'),
  });

  if (isLoading) return <div>Loading...</div>;

  return (
    <div>
      {agents?.map((agent) => (
        <div key={agent.id}>
          <h3>{agent.name}</h3>
          <button onClick={() => startAgent.mutate(agent.id)}>
            Start
          </button>
        </div>
      ))}
    </div>
  );
}
```

### Streamdown Integration
PR #6082 integrates Streamdown, a modern markdown rendering library, enabling streaming AI responses on the client with improved formatting. This enhances the chat experience with smoother rendering of code blocks, tables, and other markdown elements.

### Server Port Autodiscovery
The server now supports automatic port discovery, falling back to alternative ports if the default is occupied. This simplifies deployment and development workflows.

## Bug Fixes

A critical CLI issue was fixed this week. PR #6087 removed dependencies on Anthropic Claude code generation which had been causing installation failures with the error:

```
Cannot find module '@anthropic-ai/claude-code' from '/Users/.../node_modules/@elizaos/cli/dist/index.js'
```

This issue was identified in #6088 and quickly addressed, ensuring users can successfully install and run the CLI.

Other notable fixes:
- Resolving dotfile inclusion in project scaffolding (#6080), ensuring `.gitignore` and other dotfiles are properly included in new projects.
- Fixing the session API to correctly include `channelId` in responses (#6079), enabling reliable WebSocket connections.
- Ensuring agent plugins properly reload on PATCH updates and fixing a service stop race condition (#6040).
- Adding `thought` to action completion events for better observability (#6083, #6084).

## API Changes

Several important API modifications were implemented:

1. The `IAgentRuntime` interface now exposes action results to plugins:

```typescript
const actionResults = await runtime.getActionResults(action.id);
```

2. Agent identity is now fully UUID-based, allowing duplicate agent names:

```typescript
// Before: agents with same name would conflict
const agent1 = { name: "Support" };
const agent2 = { name: "Support" }; // Would fail

// After: UUID is the unique identifier
const agent1 = { name: "Support", id: "550e8400-e29b-41d4-a716-446655440000" };
const agent2 = { name: "Support", id: "c3d85a7d-0e2d-4c3e-8c7f-896542819e11" }; // Works fine
```

3. The `Agent.description` field is now renamed to `bio` in API types for clarity and consistency.

4. The `Route` type now supports the PATCH method for partial resource updates.

## Social Media Integrations

The discord discussions revealed that official ElizaOS X (Twitter) accounts remain suspended, with legal action being pursued. Community-run alternatives like "elizaOSc" and "elizaOS_news" are filling the gap in the interim.

Multiple users reported experiencing a "Message service is not available" error on Telegram after working for weeks, suggesting potential issues with the Telegram plugin that may need investigation.

A significant community project, PEPEDAWN Telegram bot, was built on ElizaOS v1.6.2 for the Rare Pepes NFT community. The bot features:
- Card database with fuzzy matching
- AI-powered lore generation
- Knowledge base with embedded Telegram messages
- Implemented with Custom Actions, Providers, and ElizaOS plugins

## Model Provider Updates

OpenAI's beta v6 release was discussed extensively, with the following new features highlighted:
- Human approval before tool execution
- Image-to-image transformation capabilities

The team confirmed there are no breaking changes in the beta v6 release, making it safe to adopt.

Additionally, OpenRouter announced a new stealth model called "Andromeda-alpha" for image and visual understanding capabilities.

## Breaking Changes

The main breaking change this week is the removal of AI-powered plugin generation and upgrade functionality from the CLI package. This includes:

1. Removed commands:
   - `elizaos plugins generate`
   - `elizaos plugins upgrade`

2. Removed dependencies:
   - `@anthropic-ai/claude-code` and related packages

For developers who were using these features, manual plugin creation and updates are now required instead of the AI-assisted approach.

The CLI deployment system has also been modernized from traditional Docker image builds to a bootstrapper architecture, which significantly improves deployment speed but removes several CLI options:
- `--use-docker` (no longer supported)
- `--tag` (not applicable to bootstrapper)
- `--no-build` (build happens in container)
- `--dockerfile` (bootstrapper uses standard image)