# ElizaOS Developer Update - Week of October 6-12, 2025

## 1. Core Framework

The core architecture of ElizaOS received significant updates this week with several key improvements to the fundamental framework:

- **UUID-Based Agent Identification**: The system now uses UUID-only agent identification, allowing duplicate agent names while maintaining unique identifiers. This simplifies management and provides more flexibility in agent naming ([PR #6036](https://github.com/elizaOS/eliza/pull/6036)).

```typescript
// Generate agentId via uuidv4() (no name-derived IDs)
const agent = {
  id: uuidv4(), // Random UUID generation
  name: "Assistant", // Name can be duplicated across agents
  // ...other properties
};
```

- **Config and Plugin Module Refactoring**: The ElizaOS/Server architecture was substantially refactored with improved plugin management, configuration utilities, and expanded public APIs ([PR #6037](https://github.com/elizaOS/eliza/pull/6037)).

- **MessageService Interface**: A new `MessageService` interface and default implementation were added to enhance inter-agent communication capabilities ([PR #6048](https://github.com/elizaOS/eliza/pull/6048)).

- **Database Architecture**: The core team engaged in a productive debate about scaling strategies, with two approaches emerging:
  - A plan for separate hot/warm/cold data buckets for scaling to billions of records
  - A single optimized database table approach (up to 32TB) to maintain join efficiency

## 2. New Features

### Memory Pagination for Scalability

The `getMemories` function now supports pagination via an optional `offset` parameter, enabling more efficient retrieval of large memory stores ([PR #6032](https://github.com/elizaOS/eliza/pull/6032)):

```typescript
// Example usage of paginated memory retrieval
const firstPage = await runtime.getMemories({ limit: 10, offset: 0 });
const secondPage = await runtime.getMemories({ limit: 10, offset: 10 });

// Implementation in SQL plugin
export async function getMemories(
  options: GetMemoriesOptions = {}
): Promise<Memory[]> {
  const { limit = 100, offset = 0 } = options;
  
  // Validate non-negative values
  if (limit < 0) throw new Error('limit must be non-negative');
  if (offset < 0) throw new Error('offset must be non-negative');
  
  const query = this.db
    .selectFrom('memories')
    .selectAll()
    .where('agent_id', '=', this.agentId)
    .orderBy('created_at', 'desc')
    .limit(limit)
    .offset(offset);
    
  const rows = await query.execute();
  return rows.map(memoryRowToMemory);
}
```

### Improved Mention Detection

A platform-agnostic `mentionContext` interface and refined `shouldRespond` logic were added to the bootstrap plugin, making mention detection more consistent across platforms ([PR #6030](https://github.com/elizaOS/eliza/pull/6030)):

```typescript
export interface Message {
  // Existing message properties
  mentionContext?: {
    isMentioned: boolean;
    mentionedByName: boolean;
    mentionedByTag: boolean;
    mentionedByReply: boolean;
    mentionText?: string;
  };
}

// Usage in shouldRespond provider
const shouldRespondProvider: ShouldRespondProvider = {
  name: 'bootstrap',
  provide: async (message, agent, context) => {
    // Check for direct mention first
    if (message.mentionContext?.isMentioned) {
      return {
        shouldRespond: true,
        reason: 'Agent was mentioned directly',
      };
    }
    
    // Other response logic...
  }
};
```

### Deployment System Overhaul

A major new feature is the bootstrapper architecture for deployment ([PR #6058](https://github.com/elizaOS/eliza/pull/6058)), which:

- Replaces traditional Docker image builds with a lightweight bootstrapper
- Creates compressed tar.gz artifacts (typically <50MB vs 500MB+ Docker images)
- Uploads artifacts to Cloudflare R2 via secure API
- Significantly improves deployment speed and reduces resource usage

```typescript
// New bootstrapper deployment process
const artifact = await createArtifact({
  projectPath: cwd,
  outputPath: artifactPath,
  excludePatterns: ['.git', 'node_modules', '.env'],
  deterministic: true
});

const uploadResponse = await apiClient.uploadArtifact({
  projectId: projectName,
  version: projectVersion,
  checksum: artifactChecksum,
  size: artifactSize,
  artifactPath
});
```

## 3. Bug Fixes

Several critical bugs were addressed to improve stability:

- **PostgreSQL Migration Issue**: Fixed an issue where version 1.6.1 migrations on PostgreSQL databases would report "migration not needed" but then fail when attempting to load data from an empty database ([Discord Report](https://github.com/elizaOS/eliza/issues)).

- **Agent Plugin Reloading**: Fixed a bug where agent plugins were not properly reloading after updates via the PATCH endpoint. Additionally resolved a race condition causing service initialization errors during agent restart ([PR #6040](https://github.com/elizaOS/eliza/pull/6040)).

```typescript
// Fix for plugin reloading
// Before: Agent plugins/services weren't properly updated on PATCH
// After: Explicit reload of affected plugins
if (shouldRestartAgent) {
  const agentServer = this.activeRuntimes.get(agentId);
  if (agentServer) {
    // Stop the running agent first to clear existing services
    await agentServer.stopAgent(agentId);
    
    // Reload the agent configuration
    const updatedConfig = await this.loadAgentConfig(agentId);
    
    // Start with fresh plugins and services
    await agentServer.startAgent(agentId, updatedConfig);
  }
}
```

- **Race Condition in Runtime Database**: Fixed an issue ensuring the runtime database is initialized before tasks attempt to access it ([PR #6039](https://github.com/elizaOS/eliza/pull/6039)).

- **Port Validation**: Improved server port configuration validation to properly handle `SERVER_PORT` environment variables and CLI `--port` options ([PR #6046](https://github.com/elizaOS/eliza/pull/6046)).

## 4. API Changes

Several important API changes were introduced this week:

- **Character Schema Validation**: Improved with comprehensive Zod schema definitions and detailed descriptions ([PR #6044](https://github.com/elizaOS/eliza/pull/6044)):

```typescript
export const characterSchema = z.object({
  id: z.string().uuid().optional()
    .describe('Unique identifier for the character. If not provided, a UUID will be auto-generated.'),
  name: z.string()
    .describe('The name of the character. This is used for display and can be duplicated.'),
  // ...other fields with descriptions
});
```

- **State Cache Exposure**: Runtime `stateCache` is now exposed and bootstrap multistep/type usage was refactored to consume it ([PR #6045](https://github.com/elizaOS/eliza/pull/6045)).

- **Boolean Parsing Enhancement**: The `parseBooleanFromText` utility now returns boolean inputs directly instead of treating them as strings ([PR #6042](https://github.com/elizaOS/eliza/pull/6042)).

- **Message Service API**: A new message service interface was added to standardize message handling across the platform ([PR #6048](https://github.com/elizaOS/eliza/pull/6048)).

## 5. Social Media Integrations

Progress continues on integrating ElizaOS with various messaging platforms:

- **Cross-Platform Integration**: Development is underway for tools that work across multiple AI platforms (OpenAI, Google, Anthropic) and messaging platforms (Telegram, Farcaster, Discord) as mentioned by Odilitime in Discord discussions.

- **Ethereum Foundation Collaboration**: The team is collaborating with the Ethereum Foundation on implementing EIP-8004, which will enhance ElizaOS's capabilities in blockchain environments.

- **AI RuneScape Development**: As part of the social agent development, partnerships are being formed with Hyperfy to build an "AI RuneScape" and work with Ethereum Foundation on an agent game using the ERC-8004 spec.

## 6. Model Provider Updates

The week saw important progress on model provider integrations:

- **Feature Request: CometAPI Support**: A new feature request was opened to add [CometAPI support to ElizaOS](https://github.com/elizaOS/eliza/issues/6055), which would expand the range of available model providers.

- **Cloud API Integration**: Development is ongoing for a unified Cloud API plugin to centralize API key management across different model providers.

- **LiteLLM Consideration**: Discussions emerged about leveraging LiteLLM for billing and API credential management instead of building custom solutions, potentially streamlining provider management.

## 7. Breaking Changes

Several important changes that developers should be aware of when migrating from V1 to V2:

- **Deployment System Changes**: The new bootstrapper architecture for deployment removes several CLI options:
  - `--use-docker` - No longer supported
  - `--tag` - Not applicable to bootstrapper
  - `--no-build` - Build now happens in container
  - `--dockerfile` - Bootstrapper uses standard image

  Migration guidance:
  ```bash
  # Old (no longer works)
  elizaos deploy --use-docker --tag my-image:v1
  
  # New (default behavior)
  elizaos deploy
  
  # With existing artifact
  elizaos deploy --skip-artifact --artifact-path ./dist/artifact.tar.gz
  ```

- **Database Architecture**: If you've built custom code assuming separate database tables or a specific database schema, be aware of the ongoing discussion about moving to a simpler approach with a single database table and proper row-level security for multi-tenancy.

- **Token Migration**: The upcoming token migration from AI16Z to ElizaOS on October 21st will involve a 1:6 conversion ratio, with 4 additional tokens going to the Generative Treasury. Developers with applications relying on the token should prepare for this change.