# ElizaOS Developer Update - November 14, 2025

## Core Framework
The ElizaOS core framework saw significant updates this week, with several important fixes and enhancements to improve stability and flexibility:

- **Database Provider Flexibility**: PR [#6143](https://github.com/elizaOS/eliza/pull/6143) added dynamic selection between MySQL and PostgreSQL databases. The system now automatically loads `@elizaos/plugin-mysql` when `MYSQL_URL` is set, otherwise defaulting to `@elizaos/plugin-sql`. This includes MySQL-specific URL validation and a no-op migration service for MySQL environments.

- **Runtime Initialization**: A new `initPromise` property was added to the `IAgentRuntime` interface, allowing plugins and services to signal initialization completion. This enables better coordination between services during startup and prevents race conditions.

- **Row-Level Security Improvements**: Fixed a critical bug [#6139](https://github.com/elizaOS/eliza/pull/6139) where RLS (Row-Level Security) `server_id` validation was incorrectly blocking all users when RLS isolation was disabled. The fix ensures proper access control validation based on system configuration.

- **Entity Isolation**: Stan is nearing completion on entity isolation functionality for websocket and API, expected within 1-2 days of focused work. This will enhance security boundaries between different agents and servers.

## New Features
The framework continues to expand its capabilities with these new features:

- **Environment Variable Handling**: PR [#6141](https://github.com/elizaOS/eliza/pull/6141) fixed a critical bug in environment variable handling. The system now correctly loads variables from `process.env` instead of relying solely on `.env` files, ensuring that runtime-generated configurations are properly retained:

```typescript
// Old behavior (broken)
// Variables exported on host would not be accessible
export VAR=value  // Would return undefined when queried

// New behavior (fixed)
// Variables can be set in any standard way
export VAR=value  
// Or in .env file
// VAR=value

// And accessed consistently in code
const value = runtime.getSetting("VAR");
```

- **Entity Name Normalization**: PR [#6133](https://github.com/elizaOS/eliza/pull/6133) fixed entity creation failures by normalizing the `names` field to ensure it's always a proper array before database operations. This handles various input types including Sets, Maps, and other iterables:

```typescript
// All these now work correctly
await db.createEntities([
  { type: 'test', names: 'single-string' },
  { type: 'test', names: ['array', 'of', 'strings'] },
  { type: 'test', names: new Set(['from', 'set']) },
  { type: 'test', names: new Map([['key', 'value']]).keys() }
]);
```

## Bug Fixes
Several critical bugs were addressed to improve system stability:

- **TypeScript Declaration Generation**: PR [#6146](https://github.com/elizaOS/eliza/pull/6146) resolved TypeScript declaration generation errors by adding the missing `hasElizaOS()` method to test-utils mock runtime and fixing plugin-sql TypeScript declaration generation.

- **Types Path Correction**: PR [#6134](https://github.com/elizaOS/eliza/pull/6134) fixed an incorrect types path in `plugin-sql` package.json exports, resolving TypeScript import errors when using `@elizaos/plugin-sql`.

- **Migration Skip Option**: PR [#6132](https://github.com/elizaOS/eliza/pull/6132) added an optional `skipMigrations` parameter to `initialize()` method in `IAgentRuntime` interface, allowing services to conditionally skip plugin migrations during initialization.

## API Changes
Developers should be aware of these important API modifications:

1. **Runtime Interface Extension**: The `IAgentRuntime` interface now includes an `initPromise: Promise<void>` property, which services can await to ensure complete initialization.

2. **Migration Control**: `runtime.initialize()` now accepts an optional `skipMigrations` parameter to bypass database migrations when needed:

```typescript
// Skip migrations for faster startup in scenarios where
// database is already initialized
await runtime.initialize({ skipMigrations: true });
```

3. **Entity Normalization**: The `createEntities()` and `updateEntity()` methods now normalize the `names` field to ensure consistent handling across different input types.

## Social Media Integrations
Updates to social media plugin functionality:

- The Anthropic plugin needs updating to support Claude 3.5 models. PR [#11](https://github.com/elizaOS/plugin-anthropic/pull/11) is currently open for review.

- Developers reported issues with Twitter API integration costs. The team is considering alternatives to Twitter API integration due to these concerns.

## Model Provider Updates
Changes to AI model provider integrations:

- **Claude 3.5 Support**: Work is underway to update the Anthropic plugin to support their latest Claude 3.5 models, with PR [#11](https://github.com/elizaOS/plugin-anthropic/pull/11) awaiting review.

- **OpenRouter Integration**: A new pull request was opened to add an OpenRouter embedding option to the command-line interface (CLI), expanding the framework's integration capabilities.

## Breaking Changes
Important changes that may require updates to existing code:

- **EventType.MESSAGE_RECEIVED Removal**: This event type was removed from bootstrap. Plugins previously using this event should be converted to use the service approach instead. As one developer noted in Discord: "We do not use it for message handling anymore, but it can be useful for other plugins to listen to it."

- **TypeScript Type Addition**: The type `topP` needs to be added to core schemas and constraints. This affects plugins that may be using this parameter without proper type definitions.

```typescript
// Update your plugin code to use the new service approach instead of:
runtime.on(EventType.MESSAGE_RECEIVED, (message) => {
  // Handle message
});

// Use the service approach instead:
runtime.getService('messaging').onMessage((message) => {
  // Handle message
});
```

For more information about these changes, please review the linked pull requests or join the discussion in the #core-devs Discord channel.