# ElizaOS Developer Update - Nov 12, 2025

## Core Framework
The ElizaOS runtime has received significant updates to improve stability and security:

- **Entity-level Row-Level Security (RLS)**: Significant progress on implementing fine-grained data access controls (#6107). This enables restricting data access at the entity level rather than just server level.

- **Performance Optimization**: The framework now supports skipping migrations during runtime initialization via a new `skipMigrations` parameter to `runtime.initialize()` (#6132). This is particularly useful for serverless and ephemeral environments where migration checks add unnecessary overhead.

- **Bug Fix**: Fixed critical issue with RLS server_id validation that was blocking all users when RLS isolation was disabled (#6139). This resolves a critical authentication problem reported in issue #6138.

- **Agent Settings Persistence**: Fixed an important bug (#6106) where agent settings would not persist across restarts, causing runtime-generated configurations to be lost.

```typescript
// Now supports optional migration skipping
await runtime.initialize({
  skipMigrations: process.env.SKIP_MIGRATIONS === 'true'
});
```

## New Features

### Dynamic Prompt Execution System
A new schema-based dynamic prompt executor (#6113) has been implemented to optimize prompt handling for different model context sizes:

```typescript
const result = await runtime.dynamicPromptExecFromState({
  state,
  schema: {
    thought: "string",
    actions: "array"
  },
  prompt: promptTemplate, // Handlebars template
  validationLevel: process.env.VALIDATION_LEVEL || "strict"
});
```

Key capabilities:
- Automatic XML/JSON parsing with validation codes
- Handlebars state injection
- Token estimation and retry handling
- Execution metrics tracking via `modelSchemaMetrics`
- Configurable validation levels and cache size via `DYNAMIC_PROMPT_MAX_ENTRIES`

### Payment Middleware for Plugins
A new x402 payment middleware (#6114) has been implemented to protect plugin routes with EVM and Solana payment verification:

```typescript
app.use('/api/plugins/:pluginId/*', applyPaymentProtection({
  config: 'base_usdc', // Or 'solana_usdc', 'polygon_usdc'
  amount: '0.01',      // In USD
  facilityPaymentId: 'plugin:example:feature'
}));
```

## Bug Fixes

### Entity Names Array Serialization
Fixed critical entity creation failures (#6133) by normalizing the `names` field for PostgreSQL:

```typescript
// Before: These could fail depending on input type
const entity1 = await storage.createEntity({ names: new Set(['name1', 'name2']) });
const entity2 = await storage.createEntity({ names: 'single-name' });

// Now: All formats are normalized properly before database operations
```

The fix includes extensive test coverage for various input formats including Sets, Maps, strings, and mixed-type arrays.

### Technical details:
- Added `normalizeEntityNames()` in `plugin-sql/src/base.ts`
- Applied normalization in `createEntities()` and `updateEntity()`
- Enhanced error logging with stack traces
- Added 9 comprehensive test cases covering edge cases

## API Changes

### @elizaOS/react Package
A new headless React hooks package is in development (#6093) to enable external developers to build custom UIs with full type safety:

```tsx
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ElizaReactProvider, useAgents, useStartAgent } from '@elizaOS/react';

function AgentList() {
  const { data: agents, isLoading } = useAgents();
  const startAgent = useStartAgent({
    onSuccess: () => console.log('Agent started!'),
  });

  return (
    <div>
      {agents?.map((agent) => (
        <div key={agent.id}>
          <button onClick={() => startAgent.mutate(agent.id)}>
            Start {agent.name}
          </button>
        </div>
      ))}
    </div>
  );
}
```

### Runtime API Extensions
The `IAgentRuntime` interface has been extended with:
- `dynamicPromptExecFromState`: For schema-driven prompt execution
- `skipMigrations`: Optional parameter for `initialize()`

## Social Media Integrations

### Farcaster Plugin
Users are reporting issues with the Farcaster plugin when reading FID from environment files. This is being investigated with priority as part of our social media integrations overhaul. A fix is expected in the next release.

### Discord Plugin
Work is ongoing to implement a unified messaging API for the Discord plugin (#24 in elizaos-plugins/plugin-discord). This refactoring will align the Discord plugin with the standardized messaging interface used by other social connectors.

## Model Provider Updates

### OpenRouter Integration
A new PR (#6142) adds OpenRouter embedding options to the CLI, extending our model provider support:

```bash
# New CLI option
eliza embed --provider openrouter --model=openrouter/whatever/embedding "Your text to embed"
```

### Eleven Labs Integration
The Scribe v2 API with Voice Activity Detection is now supported, providing automatic speech segmentation based on silence detection. This significantly improves the voice experience in ElizaOS agents.

## Breaking Changes

### Event Handling Changes
`EventType.MESSAGE_RECEIVED` has been removed from bootstrap. Plugins using this event type need to be updated to use the service approach instead:

```typescript
// Before (no longer works)
this.events.on(EventType.MESSAGE_RECEIVED, this.handleMessage);

// After (recommended approach)
this.registerHandler({
  service: 'messaging',
  method: 'onMessage',
  handler: this.handleMessage
});
```

### Migration Guide for x402 Implementation
For plugins implementing the new payment middleware, you'll need to:

1. Define payment configurations in your plugin's `payment-config.ts`
2. Use `createPaymentAwareHandler` for routes requiring payment
3. Set up verification for either EVM (EIP-712/ERC-3009) or Solana depending on your target chain

See the comprehensive README in the x402 folder for detailed implementation guidelines.

---

The team is actively working on the upcoming ElizaCloud release (confirmed for year-end) and the Babylon release which is expected "much sooner." Development of an agent game for the Devconnect event is also underway.

Please direct any questions to the #core-devs channel on Discord.