# ElizaOS Developer Update: Nov 10 - Nov 16, 2025

## 1. Core Framework

This week, we've made significant improvements to the ElizaOS core framework to enhance stability, configuration management, and database compatibility:

### Row-Level Security Fix

We've resolved a critical issue in the Row-Level Security (RLS) system where `server_id` validation checks were incorrectly blocking all users when RLS isolation was disabled. This fix ensures proper access control while maintaining security isolation when needed ([PR #6139](https://github.com/elizaos/eliza/pull/6139)).

```typescript
// Before: Validation always applied regardless of isolation setting
if (!validateServerId(serverId, user)) {
  return false;
}

// After: Only validate when isolation is enabled
if (RLS_ISOLATION_ENABLED && !validateServerId(serverId, user)) {
  return false;
}
```

### Environment Variable Loading

Fixed a significant bug where agent settings couldn't be accessed via `runtime.getSetting()` when environment variables were exported on the host rather than defined in a `.env` file. This was causing agents to use incorrect configurations ([PR #6141](https://github.com/elizaos/eliza/pull/6141)).

### Database Provider Flexibility

We've added support for conditional MySQL vs SQL plugin selection, enabling ElizaOS to work with multiple database backends. The system now dynamically loads `@elizaos/plugin-mysql` when `MYSQL_URL` is set and falls back to `@elizaos/plugin-sql` otherwise ([PR #6143](https://github.com/elizaos/eliza/pull/6143)).

### Entity Isolation Progress

Stan is near completion on entity isolation functionality for websocket and API layers, which will significantly enhance multi-tenant security and data separation. This feature is expected to be completed in the next week.

## 2. New Features

### Unified Messaging API

We've merged a feature to include an ElizaOS reference within the runtime, creating the foundation for a unified messaging API. This change enables more consistent agent communication across different messaging channels ([PR #6111](https://github.com/elizaos/eliza/pull/6111)).

```typescript
// Example of the new runtime API access
import { ElizaOS } from '@elizaos/core';

export class MyAgent {
  async onMessage(message: any) {
    if (this.runtime.hasElizaOS()) {
      const elizaOS = this.runtime.getElizaOS();
      // Use the unified messaging API
      await elizaOS.sendMessage({
        channelId: 'channel-123',
        content: 'Hello from the unified API!'
      });
    }
  }
}
```

### OpenRouter Embedding CLI Option

A new feature has been added to support OpenRouter embeddings directly from the command-line interface, expanding the framework's integration capabilities ([PR #6142](https://github.com/elizaos/eliza/pull/6142)).

```bash
# Use OpenRouter embeddings from the CLI
elizaos embed --provider openrouter --model openrouter/jina-embeddings-v2-base-en "This is a text to embed"
```

### Gaming/Gambling Agents Proposal

A community member proposed creating an interactive agent that could:
- Allow betting ElizaOS tokens on games like "bamboo-machete-rock" (similar to rock-paper-scissors)
- Use zero-knowledge proofs to verify game outcomes on-chain
- Reward winners with additional tokens
- Create trophy tokens and NFTs for participants

## 3. Bug Fixes

### Entity Array Serialization

Fixed a critical issue with entity creation where `names` fields weren't being properly serialized for PostgreSQL. The fix ensures proper array normalization for database operations, handling various input types including Sets ([PR #6133](https://github.com/elizaos/eliza/pull/6133)).

```typescript
// New normalization method added
private normalizeEntityNames(names: any): string[] {
  if (names === null || names === undefined) {
    return [];
  }
  
  // Handle strings without splitting them into characters
  if (typeof names === 'string') {
    return [names];
  }
  
  // Handle arrays, Sets, Maps, and other iterables
  if (Symbol.iterator in Object(names)) {
    return Array.from(names).map(String);
  }
  
  // Handle non-iterables (numbers, booleans, objects)
  return [String(names)];
}
```

### Twitter Plugin Rate Limiting

Several users reported "429 error" issues with the Twitter plugin, indicating rate limiting problems. This is being investigated as a high-priority fix for the next release.

## 4. API Changes

### Runtime Initialization API

Added a new `skipMigrations` option to the runtime initialization API that allows developers to conditionally skip plugin migrations. This is particularly useful for testing environments or when migrations are managed separately ([PR #6132](https://github.com/elizaos/eliza/pull/6132)).

```typescript
// New runtime initialization option
await runtime.initialize({
  skipMigrations: true // Skip running migrations during initialization
});
```

### Runtime Init Promise

A new `initPromise: Promise<void>` property has been added to `IAgentRuntime`, allowing developers to track and await the completion of runtime initialization asynchronously ([PR #6143](https://github.com/elizaos/eliza/pull/6143)).

```typescript
// Example usage of the new initPromise
const runtime = new AgentRuntime();
runtime.initPromise
  .then(() => console.log('Runtime initialization complete'))
  .catch(error => console.error('Runtime initialization failed:', error));
```

### TypeScript Declaration Fix

Fixed TypeScript declaration generation for the `plugin-sql` package, which was previously causing import errors. Also added a missing `hasElizaOS()` method to test-utils mock runtime ([PR #6146](https://github.com/elizaos/eliza/pull/6146)).

## 5. Social Media Integrations

### Twitter Plugin Issues

Users have reported "429 error" issues with the Twitter plugin due to rate limiting. The team is investigating solutions, including potential fallback mechanisms and improved error handling.

### Discord Integration

Progress continues on the unified messaging API for the Discord plugin. This work will enable more consistent agent behavior across Discord and other messaging platforms (elizaos-plugins/plugin-discord#24).

## 6. Model Provider Updates

### Claude 3.5 Support

The team is working on updating the Anthropic plugin to support Claude 3.5 models. A pull request (#11) in the plugin-anthropic repository is awaiting review. This update will bring significant performance improvements and new capabilities to agents using Claude models.

### OpenRouter Support

Added support for OpenRouter embeddings, providing more flexibility in choosing embedding models. This is particularly valuable for developers needing specialized embeddings for specific languages or domains ([PR #6142](https://github.com/elizaos/eliza/pull/6142)).

## 7. Breaking Changes

### Token Migration (AI16Z to ElizaOS)

The migration from AI16Z to ElizaOS tokens is ongoing with several key points to note:

1. The snapshot was taken on November 11 at 11:40 UTC
2. Tokens purchased after the snapshot are not eligible for migration
3. Migration ratio is 1:6 instead of the expected 1:10
4. Support for exchanges varies and may require manual intervention

If you're experiencing migration issues:
- For wallet transfers after snapshot: Transfer back to the original wallet and swap from there
- For exchange-held tokens: Submit a ticket with proof of holdings for manual migration review
- For other issues: Use the official support ticket system with response times up to 7 days

### Database Plugin Selection

With the new database provider flexibility, applications that were hardcoded to use PostgreSQL might need updates. The system now selects between MySQL and PostgreSQL based on environment variables, with each having slightly different behavior for operations like upserts ([PR #6143](https://github.com/elizaos/eliza/pull/6143)).