# ElizaOS Developer Update - May 10 to May 16, 2025

## Core Framework

ElizaOS has seen significant architectural improvements this week as we approach the upcoming v2 release. The core runtime has received multiple enhancements for stability, performance, and developer experience.

### Architecture Changes
- Implemented a comprehensive event-driven system for agent message handling, allowing for asynchronous flow and better support for scenarios where agents may choose not to reply ([PR #4594](https://github.com/elizaos/eliza/pull/4594))
- Guaranteed callback execution in `messageReceivedHandler` regardless of success, errors, or timeouts, preventing resource leaks ([PR #4589](https://github.com/elizaos/eliza/pull/4589))
- Improved agent data fetching with enhanced performance when loading multiple agents ([PR #4519](https://github.com/elizaos/eliza/pull/4519))
- Removed the REST `/ping` endpoint for WebSocket status checks in favor of native WebSocket state monitoring ([PR #4551](https://github.com/elizaos/eliza/pull/4551))

### Plugin System Improvements
- Added support for third-party plugin installations with Git repository integration ([PR #4568](https://github.com/elizaos/eliza/pull/4568))
- Enhanced GitHub URL support for plugins with both HTTPS and shorthand formats ([PR #4577](https://github.com/elizaos/eliza/pull/4577))
- Introduced the plugin specification submodule for standardization ([PR #4553](https://github.com/elizaos/eliza/pull/4553))
- Fixed plugin routes functionality at `/api/agents/{AGENT_UUID_OR_NAME}/plugins/{PLUGIN_NAME}/{ROUTE_FROM_PLUGIN}` ([PR #4415](https://github.com/elizaos/eliza/pull/4415))

```typescript
// Example of installing a third-party plugin:
npx elizaos plugins install github:username/elizaos-plugin-example
// or
npx elizaos plugins install https://github.com/username/elizaos-plugin-example.git
```

### Agent Runtime Enhancements
- Refactored model handling in AgentRuntime to support provider and priority settings ([PR #4507](https://github.com/elizaos/eliza/pull/4507))
- Improved LLM response parsing to support custom fields from templates and clean up empty message headers ([PR #4580](https://github.com/elizaos/eliza/pull/4580))

## New Features

### Knowledge Integration
- Added comprehensive integration tests for knowledge database operations ([PR #4518](https://github.com/elizaos/eliza/pull/4518))
- Improved entity scoping for knowledge items to ensure correct association with agents ([PR #4581](https://github.com/elizaos/eliza/pull/4581))

### Database Management
- Implemented per-project database directories for better isolation ([PR #4423](https://github.com/elizaos/eliza/pull/4423))
- Simplified and fixed PGLite directory configuration and migration paths ([PR #4532](https://github.com/elizaos/eliza/pull/4532))
- Added proper Drizzle ORM support for database operations ([PR #4500](https://github.com/elizaos/eliza/pull/4500))

```typescript
// Example of configuring database location (now supports environment variables):
process.env.PGLITE_DIR = './data/my-custom-db-location';
```

### CLI Enhancements
- Improved the `elizaos agent` command with better JSON output and file saving options ([PR #4560](https://github.com/elizaos/eliza/pull/4560))
- Enhanced the CLI start command with better character option parsing ([PR #4583](https://github.com/elizaos/eliza/pull/4583))
- Improved the CLI update command to handle version specifications more robustly ([PR #4591](https://github.com/elizaos/eliza/pull/4591))

```bash
# New improved character path handling in start command
elizaos run --character "path/to/my character.json, path/to/another character.json"
```

## Bug Fixes

### Critical Fixes
- Fixed core importability in client and added vite polyfills to resolve module resolution errors ([PR #4599](https://github.com/elizaos/eliza/pull/4599), [PR #4590](https://github.com/elizaos/eliza/pull/4590))
- Fixed JSON serialization in PGLite to properly handle invalid Unicode escape sequences ([PR #4458](https://github.com/elizaos/eliza/pull/4458))
- Resolved foreign key constraint violations on agent deletion ([PR #4510](https://github.com/elizaos/eliza/pull/4510))
- Fixed Discord service unregistration timeout issues ([PR #4450](https://github.com/elizaos/eliza/pull/4450))

### User Experience Improvements
- Fixed client chat ignore functionality ([PR #4600](https://github.com/elizaos/eliza/pull/4600))
- Fixed client scrollbars that were doubled up in the task list ([PR #4465](https://github.com/elizaos/eliza/pull/4465))
- Added missing topics for X post templates ([PR #4595](https://github.com/elizaos/eliza/pull/4595))
- Fixed topics project starter and default character definitions ([PR #4602](https://github.com/elizaos/eliza/pull/4602))

## API Changes

### Breaking Changes
- Removed forced bootstrap plugin-add in CLI, making simple agents easier to create ([PR #4417](https://github.com/elizaos/eliza/pull/4417))
- Refactored model handling in AgentRuntime, changing the ModelHandler type to include provider and optional priority ([PR #4507](https://github.com/elizaos/eliza/pull/4507))

```typescript
// New ModelHandler interface with provider and priority
export interface ModelHandler {
  provider: string;
  priority?: number;
  handle: (params: ModelRequest) => Promise<ModelResponse>;
}
```

### Deprecations and Migrations
- The CLI now prefers direct command usage (e.g., `elizaos run`) instead of npx prefix ([PR #4493](https://github.com/elizaos/eliza/pull/4493))
- Removed StudioLM support to focus on llama.cpp for local models ([PR #4459](https://github.com/elizaos/eliza/pull/4459))

## Social Media Integrations

### Twitter/X Updates
- Implemented Twitter timeline functionality with better configuration options ([PR #4429](https://github.com/elizaos/eliza/pull/4429))
- Fixed and refactored Twitter plugin code for improved error handling and configurable retry mechanisms ([PR #4506](https://github.com/elizaos/eliza/pull/4506))
- Updated the community manager agent to work with Twitter integration out of the box ([PR #4557](https://github.com/elizaos/eliza/pull/4557))

```typescript
// Configure Twitter timeline with environment variables:
ENABLE_TWITTER_TIMELINE_SEARCH=true
TWITTER_TIMELINE_SEARCH_INTERVAL=900000 // 15 minutes
```

### Discord Improvements
- Fixed build issues for the Discord plugin and service messaging ([PR #4552](https://github.com/elizaos/eliza/pull/4552))
- Resolved issues with Discord message formatting ([PR #4548](https://github.com/elizaos/eliza/pull/4548))
- Added proper error handling to Discord message sending with fallback methods ([PR #4552](https://github.com/elizaos/eliza/pull/4552))

### Telegram Enhancements
- Enabled strict TypeScript types and improved error guards for the Telegram plugin ([PR #4559](https://github.com/elizaos/eliza/pull/4559))
- Updated tests to expect MarkdownV2 format for message parsing ([PR #4570](https://github.com/elizaos/eliza/pull/4570))

## Model Provider Updates

### OpenAI Integration
- Extended OpenAI plugin to support custom embedding endpoints ([PR #4421](https://github.com/elizaos/eliza/pull/4421))
- Added model usage events for embeddings and image description ([PR #4438](https://github.com/elizaos/eliza/pull/4438))
- Fixed TEXT_EMBEDDING delegation issues ([PR #4537](https://github.com/elizaos/eliza/pull/4537))

### Performance Optimizations
- Reply functionality now uses small models for faster responses ([PR #4416](https://github.com/elizaos/eliza/pull/4416))
- Implemented better message processing for agent replies with customizable fields ([PR #4580](https://github.com/elizaos/eliza/pull/4580))

## Breaking Changes

### V1 to V2 Migration Issues
- Characters now require "version": "2.0" and "id" fields at the root level of the JSON ([Discord Help Thread](https://discord.gg/elizaOS))
- Package.json in v2 projects should avoid hardcoding paths to "the-org" directory ([PR discussed in Discord](https://discord.gg/elizaOS))
- Several plugins have been moved from the monorepo to a separate repository: [github.com/elizaos-plugins](https://github.com/elizaos-plugins)
- Knowledge paths in character.json files are now relative to characters/knowledge directory and cannot use "./" or "../" prefixes

```json
// Example of a v2-compatible character file
{
  "version": "2.0",
  "id": "your_character_id",
  "name": "Character Name",
  "clients": ["twitter"],
  "plugins": [
    "@elizaos/plugin-twitter",
    "@elizaos/plugin-anthropic"
  ],
  "modelProvider": "anthropic",
  "model": "claude-3-haiku-20240307"
}
```

### Development Workflow Changes
- ElizaOS CLI now generates proper TypeScript declarations with `dts: true` in both CLI and plugin-sql packages ([PR #4529](https://github.com/elizaos/eliza/pull/4529))
- The ElizaOS v2 terminal is now referred to as "eliza 1.0.0" in discussions ([Discord](https://discord.gg/elizaOS))
- Several plugins now enforce strict TypeScript type checking ([PR #4559](https://github.com/elizaos/eliza/pull/4559))