# ElizaOS Developer Update - May 21, 2025

## Core Framework

The ElizaOS team has made significant strides in refining the core architecture as we approach the release of Eliza 1.0.0 (previously referred to as "v2"). Major architectural improvements include:

- **Registry Integration**: Added a 30-second timeout to registry parsing to prevent hanging when registry is unreachable ([PR #4678](https://github.com/elizaOS/eliza/pull/4678), [PR #4641](https://github.com/elizaOS/eliza/pull/4641))

- **Agent Runtime Enhancement**: Refactored model handling in AgentRuntime to support provider and priority settings, allowing for more intelligent model selection ([PR #4507](https://github.com/elizaOS/eliza/pull/4507))

- **CLI Redesign**: Completely restructured the CLI with a modular approach for easier agent development and management:
  ```bash
  # New command structure is simpler and more intuitive
  eliza agent create --name "my-agent" --template "basic"
  ```

- **World Management API**: Implemented comprehensive world and room management APIs for multi-agent environments ([PR #4667](https://github.com/elizaOS/eliza/pull/4667), [PR #4647](https://github.com/elizaOS/eliza/pull/4647))

- **Database Improvements**: Changed PGLite default directory to be per-project for better isolation ([PR #4656](https://github.com/elizaOS/eliza/pull/4656), [PR #4497](https://github.com/elizaOS/eliza/pull/4497))

## New Features

### World Selection in Message API

Added support for associating messages with specific worlds through the message API ([PR #4637](https://github.com/elizaOS/eliza/pull/4637)):

```javascript
// Example: Send a message to an agent in a specific world
const response = await fetch(`/api/agents/${agentId}/message?worldId=${worldId}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ text: "Hello from this world!" })
});
```

### Authentication Middleware and API Key Dialog

Implemented secure authentication with a user-friendly API key dialog for unauthorized access ([PR #4420](https://github.com/elizaOS/eliza/pull/4420)):

```javascript
// Server-side protection for routes
app.use('/api/protected', authMiddleware, (req, res) => {
  // Only accessible with valid authentication
});
```

### Memory Management Controls

Added environment variables for controlling memory decay and relevance thresholds:

```bash
# Add to your .env file
MEMORY_DECAY_DAYS=7           # Older memories start to fade after this period
MEMORY_RELEVANCE_THRESHOLD=0.8 # Higher values return fewer but more precise matches
RAG_SIMILARITY_THRESHOLD=0.7   # Adjust for optimal knowledge retrieval
```

### Performance Optimized Agent Loading

Significantly improved agent data fetching with optimized loading when multiple agents are present ([PR #4519](https://github.com/elizaOS/eliza/pull/4519))

## Bug Fixes

### Critical Reply Action Fixes

Fixed several issues with the message reply system:

- Fixed shortcut reply to only work when no dynamic provider is present ([PR #4670](https://github.com/elizaOS/eliza/pull/4670))
- Corrected reply action that was skipping dynamic providers ([PR #4651](https://github.com/elizaOS/eliza/pull/4651))
- Fixed LLM response parsing to support custom fields and clean up empty message headers ([PR #4580](https://github.com/elizaOS/eliza/pull/4580))
- Fixed hallucinations in reply by moving from `OBJECT_SMALL` to more reliable models ([PR #4603](https://github.com/elizaOS/eliza/pull/4603))

### Database and Agent Operations

- Fixed foreign key constraint violations when deleting agents that have been in rooms ([PR #4510](https://github.com/elizaOS/eliza/pull/4510))
- Resolved PGLite log entry unicode escape sequence errors ([PR #4458](https://github.com/elizaOS/eliza/pull/4458))
- Fixed agent hanging issues after core initialization with specific configurations ([Issue #4486](https://github.com/elizaOS/eliza/issues/4486))
- Added missing database connection functions in SQL plugin ([PR #4529](https://github.com/elizaOS/eliza/pull/4529))

### UI and Client Improvements

- Fixed agent start button not updating status in real-time ([PR #4642](https://github.com/elizaOS/eliza/pull/4642))
- Fixed client scrollbars in task list and sidebars ([PR #4465](https://github.com/elizaOS/eliza/pull/4465))
- Fixed core module imports in client with proper polyfills ([PR #4599](https://github.com/elizaOS/eliza/pull/4599))
- Improved auth handling with clear notifications for unauthorized access ([PR #4624](https://github.com/elizaOS/eliza/pull/4624))

## API Changes

### Message API Enhancement

The message API now supports optional `worldId` parameter to associate messages with specific worlds:

```
GET /api/agents/:agentId/message?worldId=world-123
```

### New Room and World Endpoints

New API endpoints for creating and managing rooms and worlds:

```
POST /api/rooms
POST /api/worlds
GET /api/worlds/:worldId/rooms
PUT /api/worlds/:worldId
```

### Agent Creation API Returns ID

Agent creation API now returns the agent ID in the initial response, eliminating the need for subsequent calls ([PR #4634](https://github.com/elizaOS/eliza/pull/4634)):

```javascript
const response = await fetch('/api/agents', {
  method: 'POST',
  body: JSON.stringify(agentData)
});
const data = await response.json();
const newAgentId = data.id; // Now immediately available
```

## Social Media Integrations

### Discord Plugin Improvements

- Added `CHANNEL_IDS` configuration to Discord plugin to limit responses to specific channels ([PR #4665](https://github.com/elizaOS/eliza/pull/4665)):
  ```bash
  # In .env file
  DISCORD_CHANNEL_IDS=123456789012345678,987654321098765432
  ```
- Fixed Discord service unregistration timeout issues ([PR #4450](https://github.com/elizaOS/eliza/pull/4450))

### Twitter Integration Changes

- Removed Twitter plugin from monorepo, now available as a standalone package ([PR #4669](https://github.com/elizaOS/eliza/pull/4669))
- Added comprehensive Twitter AI agent setup tutorial in documentation ([PR #4425](https://github.com/elizaOS/eliza/pull/4425))

### Telegram Plugin Enhancements

- Enabled strict types and improved error guards in Telegram plugin ([PR #4559](https://github.com/elizaOS/eliza/pull/4559))
- Updated Telegram messageManager tests to expect MarkdownV2 formatting ([PR #4570](https://github.com/elizaOS/eliza/pull/4570))

## Model Provider Updates

### OpenAI Plugin Enhancements

- Extended OpenAI plugin to support custom embedding endpoints ([PR #4421](https://github.com/elizaOS/eliza/pull/4421)):
  ```bash
  # In .env file
  OPENAI_EMBEDDING_API_URL=https://your-custom-embedding-api.com
  ```

- Added model usage events tracking for embeddings and image description ([PR #4438](https://github.com/elizaOS/eliza/pull/4438))

### Plugin Installation Improvements

- Added support for installing plugins directly from GitHub URLs ([PR #4568](https://github.com/elizaOS/eliza/pull/4568)):
  ```bash
  # Install a plugin from Github
  eliza plugin install github:username/plugin-name
  ```

### Local AI Improvements

- Set community manager (Eli5) to use plugin-local-ai by default ([PR #4557](https://github.com/elizaOS/eliza/pull/4557))
- Added local AI tests to ensure compatibility ([PR #4676](https://github.com/elizaOS/eliza/pull/4676))

## Breaking Changes

### Plugin System Changes

The plugin system has undergone major restructuring for the v2 to v1.0.0 migration:

- **Plugins Moved to Standalone Repositories**: Several plugins have been removed from the monorepo and are now available as standalone packages:
  - Twitter ([PR #4669](https://github.com/elizaOS/eliza/pull/4669))
  - OpenAI ([PR #4511](https://github.com/elizaOS/eliza/pull/4511))
  - Anthropic ([PR #4427](https://github.com/elizaOS/eliza/pull/4427))
  - Local AI ([PR #4439](https://github.com/elizaOS/eliza/pull/4439))
  - Groq ([PR #4436](https://github.com/elizaOS/eliza/pull/4436))
  - Ollama ([PR #4437](https://github.com/elizaOS/eliza/pull/4437))

- **Global Environment Support Removed**: Local environment management is now the standard approach ([PR #4666](https://github.com/elizaOS/eliza/pull/4666))

- **Forced Bootstrap Plugin Removed**: Projects can use the bootstrap plugin but it's no longer forced, making simple agents easier to develop ([PR #4417](https://github.com/elizaOS/eliza/pull/4417))

- **Plugin Sharing Between Versions**: Implemented sharing plugins between v0.x and v1.x ([PR #4384](https://github.com/elizaOS/eliza/pull/4384))

To migrate from v1 to v2 (1.0.0), ensure you:
1. Install required plugins separately using `eliza plugin install`
2. Update environment variables to local-only configuration
3. Update character files to match the new format (removed `character` command)
4. Follow the new RAG knowledge directory structure with server IDs

For full migration details, refer to the [v2 migration guide](https://eliza.how/docs/v2-migration).