# ElizaOS Developer Update - June 8, 2025

## Core Framework

ElizaOS v2 is now released, although still awaiting an official announcement next week. This major update represents a significant architectural shift with improved modularity and developer experience.

The most notable framework changes include:

- **Message Server Refactoring**: The message server has been completely separated from agents ([PR #4864](https://github.com/elizaos/eliza/pull/4864)), creating a standalone system with its own database and improved cross-agent communication. This eliminates critical issues with agent cross-interference and self-response infinite loops ([PR #4935](https://github.com/elizaos/eliza/pull/4935), [PR #4934](https://github.com/elizaos/eliza/pull/4934)).

- **Plugin Specification System**: A comprehensive plugin specification system has been added to the core ([PR #4851](https://github.com/elizaos/eliza/pull/4851)), standardizing plugin development and enabling future versioning (v2, v3, etc.) with backward compatibility. This provides a clear path for migrating existing plugins to newer specifications.

- **Runtime Improvements**: The `ensureAgentExists` method has been moved from plugin-sql to the runtime layer where it belongs ([PR #4970](https://github.com/elizaos/eliza/pull/4970)), and agent configuration now updates on restart for better state management.

```typescript
// Example of the new plugin specification system
import { createPlugin } from '@elizaos/core/v2';

export default createPlugin({
  name: 'my-plugin',
  version: '1.0.0',
  providers: {
    MY_PROVIDER: {
      getName: () => 'MY_PROVIDER',
      handleAction: async (context, action) => {
        // Implementation
      }
    }
  }
});
```

## New Features

### Enhanced CLI Experience

The CLI has received significant usability improvements:

- **Environment Variable Prompting**: When installing plugins, the CLI now detects required environment variables and prompts users to set them ([PR #4945](https://github.com/elizaos/eliza/pull/4945)).

```bash
# Example of installing a plugin with environment variable prompting
elizaos plugins add @elizaos/plugin-openai

# CLI will now prompt:
# OpenAI API Key [OPENAI_API_KEY]: 
```

- **Bun Auto-Installation**: The CLI now automatically detects and installs Bun when needed, improving the onboarding experience ([PR #4943](https://github.com/elizaos/eliza/pull/4943)).

- **Create Command Enhancement**: The `create` command has been enhanced with TEE (TypeScript, ESNext, ESM) support ([PR #4964](https://github.com/elizaos/eliza/pull/4964)), providing a more modern JavaScript development environment.

### UI/UX Improvements

The client interface has received comprehensive enhancements:

- **Mobile Responsiveness**: Enhanced sidebar handling for mobile devices with Tailwind v4 upgrade ([PR #4866](https://github.com/elizaos/eliza/pull/4866)).

- **Message Retry**: Added a retry button for user messages, allowing easy resending of previous content ([PR #4973](https://github.com/elizaos/eliza/pull/4973)).

- **Responsive Character Form**: Improved horizontal scrolling for character configuration on smaller screens ([PR #4988](https://github.com/elizaos/eliza/pull/4988)).

- **Split Button Component**: Added a reusable split button with dropdown functionality for grouping related actions ([PR #5000](https://github.com/elizaos/eliza/pull/5000)).

### Testing Enhancements

- **Scenario Testing**: Added scenario tests to bootstrap to check for expected agent behavior, providing a foundation for validating agent responses and action handling ([PR #4998](https://github.com/elizaos/eliza/pull/4998)).

```typescript
// Example of a new scenario test
it('should say hello world', async () => {
  const result = await runScenario({
    agentPrompt: 'Say hello world',
    expectedResponse: (response) => response.includes('hello world')
  });
  
  expect(result.success).toBe(true);
});
```

## Bug Fixes

Several critical bugs have been addressed this week:

- **Agent Communication Issues**: Fixed issues where agents were responding to each other's messages, creating infinite loops ([PR #4934](https://github.com/elizaos/eliza/pull/4934)). Also fixed foreign key constraint violations in message handling ([PR #4936](https://github.com/elizaos/eliza/pull/4936)).

- **CLI Validation**: Enhanced port validation to happen during argument parsing instead of at runtime ([PR #4985](https://github.com/elizaos/eliza/pull/4985)), and fixed string validation in the plugins command ([PR #4984](https://github.com/elizaos/eliza/pull/4984)).

- **API URL Correction**: Fixed incorrect API URL used for message server when `SERVER_PORT` is not 3000 ([PR #4980](https://github.com/elizaos/eliza/pull/4980)).

- **Update Command Fix**: Fixed CLI update path from npm 1.0.5 to bun 1.0.6 by auto-migrating installations ([PR #4979](https://github.com/elizaos/eliza/pull/4979)).

- **Action Callbacks**: Ensured action callbacks properly reach users and improved `shouldRespond` logic ([PR #4954](https://github.com/elizaos/eliza/pull/4954)).

## API Changes

Several API endpoints have been modified or added:

- **New Room Endpoint**: Added a missing GET `/agents/:agentId/rooms/:roomId` API endpoint ([PR #4860](https://github.com/elizaos/eliza/pull/4860)) to fix issue [#4763](https://github.com/elizaos/eliza/issues/4763).

- **Plugin Route Handler**: Fixed plugin route handler incorrectly intercepting agent API routes ([PR #4916](https://github.com/elizaos/eliza/pull/4916)).

- **Foreign Key Constraints**: Resolved foreign key issues in chat messages that were breaking message sending ([PR #4898](https://github.com/elizaos/eliza/pull/4898)).

Be aware that when working with the message API, there's a known issue with channel participants: messages may be ignored with "Agent not a participant in channel" errors despite the relationship existing in the database ([Issue #4972](https://github.com/elizaos/eliza/issues/4972)). This appears to be related to stale data in the MessageBusService.

## Social Media Integrations

The Twitter plugin has been updated to v1.0.3 with the following improvements:

- Support for targeting specific users
- Fixes for duplicate tweets issue
- Standardized environment variable naming across the codebase ([PR #4883](https://github.com/elizaos/eliza/pull/4883))

```javascript
// Example Twitter configuration with standardized env vars
{
  "settings": {
    "secrets": {
      "TWITTER_API_KEY": "your-api-key",  // Standardized naming
      "TWITTER_API_SECRET": "your-api-secret",
      "TWITTER_ACCESS_TOKEN": "your-access-token",
      "TWITTER_ACCESS_SECRET": "your-access-secret"
    }
  }
}
```

## Model Provider Updates

When configuring model providers, note that OpenRouter currently lacks embedding support. To work around this limitation, configure your plugins in the following order:

```javascript
// Configure OpenRouter to precede Ollama for proper fallback behavior
{
  "plugins": [
    "@elizaos/plugin-openrouter",  // First for main LLM calls
    "@elizaos/plugin-openai",      // Used for embeddings
    "@elizaos/plugin-ollama"       // Local fallback
  ]
}
```

Additionally, the council/clank tank system has been configured to use the new ElevenLabs v3 API for improved voice synthesis.

## Breaking Changes

As ElizaOS transitions from v1 to v2, be aware of these breaking changes:

1. **Plugin Dependency Infrastructure**: The bootstrap plugin is now mandatory for agent functionality. Make sure it's included in your agent configuration:

```javascript
{
  "plugins": [
    // Other plugins...
    "@elizaos/plugin-bootstrap"  // Required for core functionality
  ]
}
```

2. **CLI Package Manager**: ElizaOS has switched from npm to Bun as the primary package manager. CLI v1.0.6+ requires Bun, though the system will auto-migrate npm installations ([PR #4979](https://github.com/elizaos/eliza/pull/4979)).

3. **Knowledge Plugin Requirements**: When enabling contextual knowledge, you must set a text provider:

```
TEXT_PROVIDER is required when CTX_KNOWLEDGE_ENABLED is true
```

4. **TypeScript Definitions**: If you're developing custom plugins, note that TypeScript declarations have been fixed in the plugin starter template ([PR #4966](https://github.com/elizaos/eliza/pull/4966)). Update your existing plugins accordingly.

The full documentation for ElizaOS v2 is available at https://eliza.how/docs/intro. Be sure to review it as you migrate your existing projects to the new version.