# ElizaOS Developer Update: 2025-06-23 to 2025-06-29

## Core Framework

ElizaOS's architecture saw major changes this week, with a significant shift from project-scoped plugins to agent-scoped architecture allowing different plugins for different characters ([#5270](https://github.com/elizaos/eliza/pull/5270)). However, due to implementation issues, this change was temporarily rolled back ([#5297](https://github.com/elizaos/eliza/pull/5297)) while the team addresses integration challenges.

The server package was fully split from the CLI ([#5122](https://github.com/elizaos/eliza/pull/5122)), creating `@elizaos/server` as a standalone package while maintaining backward compatibility. This enables independent usage of server components and improves maintainability.

Database schema issues were fixed by converting column types from TEXT to UUID ([#5287](https://github.com/elizaos/eliza/pull/5287)), resolving inconsistent column naming conventions between "createdAt" and "created_at" that caused upgrade problems from v1.0.9 to v1.0.15.

```typescript
// Example of the new directory structure after server/CLI split
// @elizaos/server/src/index.ts
export { createServer } from './server';
export { MessageBusService } from './services/message-bus';
export { DatabaseService } from './services/database';
// ...additional exports

// @elizaos/cli/src/commands/start.ts
import { createServer } from '@elizaos/server';
// ...rest of implementation using the server package
```

## New Features

### OpenRouter Integration

OpenRouter has been added as a model provider option ([#5264](https://github.com/elizaos/eliza/pull/5264)), expanding the available AI models beyond OpenAI, Anthropic, and Ollama:

```typescript
// Example of using OpenRouter in a character configuration
export const character: Character = {
  name: 'MyAgent',
  plugins: ['@elizaos/plugin-openai', '@elizaos/plugin-bootstrap'],
  settings: {
    secrets: {},
    OPENAI_API_KEY: process.env.OPENROUTER_API_KEY,
    OPENAI_API_BASE: 'https://openrouter.ai/api/v1',
    OPENAI_SMALL_MODEL: 'anthropic/claude-3-haiku',
    OPENAI_LARGE_MODEL: 'anthropic/claude-3-opus',
  }
}
```

### Google Generative AI Support

Google's Gemini models have been added to the CLI's AI provider options ([#5217](https://github.com/elizaos/eliza/pull/5217)), allowing developers to use Gemini alongside existing models:

```typescript
// Using Google's Gemini models in a character file
export const character: Character = {
  name: 'GeminiAgent',
  plugins: ['@elizaos/plugin-google-ai', '@elizaos/plugin-bootstrap'],
  settings: {
    secrets: {},
    GOOGLE_AI_API_KEY: process.env.GOOGLE_AI_API_KEY,
    GOOGLE_AI_SMALL_MODEL: 'gemini-pro',
    GOOGLE_AI_LARGE_MODEL: 'gemini-pro',
  }
}
```

### Enhanced API Management

API endpoints for channel and participant management were added ([#5113](https://github.com/elizaos/eliza/pull/5113)), allowing developers to programmatically control agent interactions across different communication channels.

## Bug Fixes

### Message Persistence Issues

A critical bug where agents would respond to their own messages creating infinite loops was fixed ([#4935](https://github.com/elizaos/eliza/pull/4935)), along with agent cross-interference in DM channels ([#4934](https://github.com/elizaos/eliza/pull/4934)). The issue was traced to incorrect metadata preservation causing `agent_response` messages to lose their context.

### File Upload Functionality

The file upload system was completely migrated from express-fileupload to multer ([#5252](https://github.com/elizaos/eliza/pull/5252)), fixing "Unexpected end of form" errors and ensuring proper file handling. Support for plain text (.txt) files was also added to the GUI ([#5262](https://github.com/elizaos/eliza/pull/5262)).

### Callback Handling

A significant issue where callbacks from plugin actions weren't reaching end users was fixed ([#5017](https://github.com/elizaos/eliza/issues/5017), [#4919](https://github.com/elizaos/eliza/pull/4919)). This affected the EVM plugin's transfer functionality and other action-based responses.

## API Changes

The ElizaOS API architecture was significantly reorganized into a logical domain-based structure ([#5010](https://github.com/elizaos/eliza/pull/5010)). Additionally, a comprehensive type-safe API client package `@elizaos/api-client` was introduced ([#5240](https://github.com/elizaos/eliza/pull/5240)) and fully integrated ([#5263](https://github.com/elizaos/eliza/pull/5263)).

```typescript
// Example of using the new type-safe API client
import { createApiClient } from '@elizaos/api-client';

const client = createApiClient({ baseUrl: 'http://localhost:3000' });

// Type-safe API calls with autocompletion and error handling
const agents = await client.agents.list();
const memories = await client.memories.list({ agentId: agents[0].id });
```

The Postman collection was also comprehensively updated ([#5047](https://github.com/elizaos/eliza/pull/5047), [#5120](https://github.com/elizaos/eliza/pull/5120)) to accurately reflect the current API implementation.

## Social Media Integrations

The Twitter plugin was updated to require API keys due to X platform restrictions ([v1.0.13](https://github.com/elizaos/eliza/pull/5055)). The documentation was updated to reflect this change, with clear notices that the Twitter functionality is undergoing maintenance.

Telegram plugin configuration issues in group chats were identified and resolved through adjusting privacy settings with BotFather. Users experiencing problems should check their bot's privacy settings.

## Model Provider Updates

Ollama integration was enhanced with improved embedding model selection ([#5285](https://github.com/elizaos/eliza/pull/5285)), fixing issues with project loading. The PR also prevents plugin-local-ai from loading when Ollama is selected as the AI provider, avoiding conflicts.

OpenAI users can now access GPT-4o models through the standard configuration, though some users reported access errors with their API keys ([#5023](https://github.com/elizaos/eliza/issues/5023)).

## Breaking Changes

The planned migration from v1 to v2 is being prepared through incremental architectural changes. When upgrading from versions prior to v1.0.9, users may need to handle database schema inconsistencies manually. The temporary solution is to delete the `.elizadb` directory and let ElizaOS recreate it, though this will result in losing existing agent memories and conversations.

Users building with the monorepo should note that using `elizaos` command inside the monorepo doesn't use the built CLI from the monorepo. Instead, use:

```bash
# In monorepo root
bun run dev

# Or from a specific package
bun run ../cli/dist/index.js start
```

For developers with active plugins, note that the plugin architecture is in transition. While PR #5270 introduced agent-scoped plugins, this was temporarily rolled back. Prepare for this change to be re-implemented in an upcoming release.