# ElizaOS Developer Update: June. 16-22, 2025

## Core Framework

The ElizaOS team has completed a significant architectural milestone this week with the separation of server functionality into its own package. This change improves modularity while maintaining compatibility with existing CLI integrations.

```typescript
// Now you can import server components directly
import { Server } from '@elizaos/server';
// Instead of the previous approach
// import { Server } from '@elizaos/cli/dist/server';
```

Character validation has been strengthened through a new Zod-based schema implementation that provides robust type safety and error handling:

```typescript
// New character validation with Zod
import { characterSchema } from '@elizaos/core/schemas';

// Safely validate character configurations
const result = characterSchema.safeParse(characterData);
if (!result.success) {
  console.error('Invalid character configuration:', result.error);
} else {
  const validatedCharacter = result.data;
  // Character is now type-safe and validated
}
```

Project loading has been consolidated between CLI and server, eliminating code duplication and improving maintainability.

## New Features

### Ollama Integration

Ollama has been added as a fourth AI provider option in the `elizaos create` command:

```bash
elizaos create myproject
# When prompted for AI provider, you can now select:
# 1. OpenAI
# 2. Anthropic
# 3. Local AI
# 4. Ollama
```

### GUI Chat Title Functionality

The chat interface has been enhanced with new title functionality, allowing for better organization of chat sessions:

```typescript
// Setting a chat title programmatically
runtime.setChannelMetadata(channelId, {
  title: "Custom Chat Title",
  icon: "chat-bubble"
});
```

### CLI Command Consolidation

Agent management has been streamlined by merging `elizaos stop` into `elizaos agent stop --all`:

```bash
# Previously
elizaos stop

# Now
elizaos agent stop --all
```

## Bug Fixes

A critical issue causing the GUI to get stuck in the "agent is thinking" state has been resolved. This occurred when agents sent empty responses or chose the IGNORE action:

```typescript
// Previous behavior would leave the UI stuck in "thinking" state
if (!response.text || response.text.trim() === '') {
  // UI would hang here
}

// New behavior properly resets UI state even with empty responses
if (!response.text || response.text.trim() === '') {
  socket.emit('agent_response_complete', { channelId, agentId });
}
```

Message filtering has been improved to properly scope messages to the current chat/channel, preventing messages from appearing in incorrect contexts:

```typescript
// New behavior ensures messages are properly filtered by channelId
const filteredMessages = messages.filter(
  (msg) => msg.channel_id === currentChannelId
);
```

Windows compatibility has been enhanced with better path handling and file system operations, resolving failures when loading projects on Windows development machines.

## API Changes

The message filtering API now correctly handles scoping to prevent channel crossover. When requesting messages, channel-specific filtering now works consistently:

```typescript
// GET /api/messages?channelId=123
// Properly returns only messages for the specified channel
```

Room creation via REST API has been fixed to properly associate agents with rooms:

```bash
# Create room for agent
POST /api/agents/b850bc30-45f8-0041-a00a-83df46d8555d/rooms

# Request body
{
  "name": "TestRoom",
  "worldId": "00000000-0000-0000-0000-000000000000",
  "roomId": "c06bb360-e84f-49ff-b43a-75a9eb6df8f3"
}

# Now correctly returns and persists the association
```

## Social Media Integrations

The team is actively addressing Twitter API issues, with ongoing work to adapt to X's new API pricing model ($50k/month). The X (Twitter) account was temporarily suspended due to concerns about data scraping, and the team has submitted clarifications to restore access.

Current workarounds for Twitter (X) integration:
- Version 1.0.7 still works with X's free API plan if replies are disabled
- The free tier is sufficient if replies to other bots are turned off
- Twitter API keys are now required, replacing the previous username/password authentication

## Model Provider Updates

Testing has shown that the `kwangsuklee/Qwen2.5-7B-Instruct-1M-Q6_K:latest` model works well with ElizaOS via Ollama, offering a good balance of performance and resource requirements.

## Breaking Changes

If you're migrating from V1 to V2, be aware that:
1. Twitter integration now requires API keys rather than username/password
2. Character loading has changed significantly with new Zod-based validation
3. The `plugin-sql` package has been rebuilt to use dynamic loading of database tables

For projects using custom characters, ensure you update to the latest schema format to prevent errors when loading character configurations.

To verify your project works with the latest changes, run the comprehensive test suite:
```bash
elizaos test
```

For more details on these changes, see PRs [#5122](https://github.com/elizaos/eliza/pull/5122), [#5167](https://github.com/elizaos/eliza/pull/5167), [#5169](https://github.com/elizaos/eliza/pull/5169), and [#5175](https://github.com/elizaos/eliza/pull/5175).