# ElizaOS Developer Update: November 17-23, 2025

## 1. Core Framework

The ElizaOS core framework received significant security and architectural improvements this week, highlighted by a new Entity-level Row Level Security (RLS) implementation. This major enhancement provides fine-grained data isolation at the database level:

```sql
-- Entity-Level RLS policies automatically applied to tables
CREATE POLICY entity_direct_isolation ON memories
    USING (entityId = current_entity_id());
    
-- Room-Based Shared Access for messages and logs
CREATE POLICY entity_room_isolation ON logs
    USING (roomId IN (SELECT roomId FROM participants 
                      WHERE entityId = current_entity_id()));
```

These security improvements are automatically applied to all tables based on their schema structure, with different isolation strategies for direct entity ownership versus shared room-based access.

The team also refined the plugin system by improving accepted formats for plugin names in dependencies. This allows both scoped package names and short names to be recognized, enabling more flexible plugin dependency declaration:

```typescript
// Now accepts multiple formats for the same plugin
registerPlugin({
  name: "chat",
  dependencies: ["@elizaos/plugin-sql", "sql", "core/sql"]
});
```

## 2. New Features

### ElizaOS Cloud Beta Launch
The ElizaOS Cloud platform was officially launched in beta at Devconnect this week. Users have begun testing the platform with custom agents, such as one user reporting their successful deployment of an agent named "Shilltoshi Nekomoto."

### LM Studio Integration
A significant usability enhancement was confirmed this week as the `plugin-local-ai` integration was verified to work with LM Studio as an alternative to Ollama:

```typescript
// Configuration found in node_modules
// Uses OpenAI-like interface with LM Studio
const runtime = new ElizaOS();
await runtime.usePlugin('local-ai', {
  apiKey: 'not-needed-for-local',
  baseUrl: 'http://localhost:1234/v1',  // LM Studio endpoint
  models: {
    embedding: 'text-embedding-ada-002',
    // Other models configured here
  }
});
```

This integration offers users more flexibility for local AI model hosting, though support for Vulkan/ROCM remains a work in progress.

## 3. Bug Fixes

### Timeline Action Spans Fix

A significant bug in the run timelines visualization was resolved this week. Previously, the Timeline tab showed run summaries with action counts (e.g., "11 spans") but didn't display individual action details like REPLY or GET_TOKEN_CRYPTOSCORE:

```typescript
// The original filter in runs.ts only matched logs where:
body.runId === runId || body.parentRunId === runId

// Problem: action_event logs didn't match this filter
// action_event has: runId (action's run), parentRunId: NULL

// Solution implemented:
// Step 1: Find directly related logs (run_event, action, etc.)
const directlyRelated = logs.filter((l) => {
  const body = l.body as { runId?: UUID; parentRunId?: UUID };
  return body.runId === runId || body.parentRunId === runId;
});

// Step 2: Extract action runIds from matched action completion logs
const actionRunIds = new Set(
  directlyRelated
    .filter((l) => l.type === 'action')
    .map((l) => (l.body as { runId?: UUID }).runId)
    .filter((id): id is UUID => !!id)
);

// Step 3: Include action_event logs that share runId with matched actions
const related = logs.filter((l) => {
  const body = l.body as { runId?: UUID; parentRunId?: UUID };
  
  // Include if directly related to main run
  if (body.runId === runId || body.parentRunId === runId) {
    return true;
  }
  
  // Also include action_event logs matching action runIds
  if (l.type === 'action_event' && body.runId && actionRunIds.has(body.runId)) {
    return true;
  }
  
  return false;
});
```

This fix ensures complete visibility of all action spans in the timeline, significantly improving debugging and observability.

### AI16Z to ElizaOS Token Migration Issues
Several bugs related to the token migration process were addressed. The team confirmed that migration deadlines can be extended if needed, particularly for users with tokens on exchanges like Kraken. Support staff are actively assisting with manual migrations for affected users.

## 4. API Changes

A significant API change was introduced to improve semantic clarity by renaming `serverId` to `messageServerId` in all messaging-related contexts:

```typescript
// OLD (ambiguous)
const room = await adapter.getRoom({ serverId, roomId });
await adapter.getRoomsByServerId(serverId);

// NEW (clear semantics)
const room = await adapter.getRoom({ messageServerId, roomId });
await adapter.getRoomsByMessageServerId(messageServerId);
```

This change clarifies that these IDs refer to external messaging platforms (Discord, Telegram, etc.) rather than ElizaOS server instances. For backwards compatibility, the system still recognizes `serverId` but marks it as deprecated with TypeScript warnings.

Two new performance-optimized methods were also added:

```typescript
// NEW: O(1) direct database existence checks
async isRoomParticipant(entityId: UUID, roomId: UUID): Promise<boolean>;
async isChannelParticipant(entityId: UUID, channelId: UUID): Promise<boolean>;

// OLD: O(n) operation that loaded all participants
async isParticipant(entityId: UUID, roomId: UUID): Promise<boolean>;
```

These methods provide constant-time complexity instead of linear, significantly improving performance for rooms with large numbers of participants.

## 5. Social Media Integrations

### Discord Plugin
Work continues on the Discord plugin with a focus on improving documentation around ElizaOS Cloud's Discord integration. Several users have reported successful testing, including configuring custom agents to interact on Discord. A request for documentation similar to ChainOpera's MCP servers was made by community members.

The team is also warning users about potential scams, including a fake "ElizaOS Cloud" account on Twitter/X. Users are advised to verify all information through official channels only.

## 6. Model Provider Updates

### Anthropic Integration Issues
A minor issue was identified with Anthropic's Sonnet 4.0 model not properly closing XML tags. Initial investigation suggests this may be related to max token settings. The team is working on a proper fix.

### LM Studio Support
As mentioned earlier, ElizaOS now works with LM Studio for local AI hosting. This provides an alternative to Ollama with an OpenAI-compatible interface, though some configuration must currently be done manually via the `node_modules` directory.

## 7. Breaking Changes

While the system continues to maintain backward compatibility during the V1 to V2 migration, developers should be aware of these deprecations:

- The `serverId` field in messaging contexts is deprecated in favor of `messageServerId`. Current code will continue to work, but TypeScript will generate deprecation warnings.

- For users integrating with the token ecosystem, only tokens listed in the official channel (#1285103549944168450) are legitimate ElizaOS tokens. A warning was issued about a fake "ElizaOS Cloud" token on Solana that is not affiliated with the project.

If you're still using the deprecated LangChain v0.3 in your integrations, note that ElizaOS has migrated to `@langchain/textsplitters` v1.0. The core package has been updated, and outdated LangChain resolutions have been removed from plugin starter packages.

For more information on any of these changes, please review the relevant PRs, particularly the Entity-level RLS implementation ([PR #6167](https://github.com/elizaOS/eliza/pull/6167)) and the plugin name normalization feature ([PR #6164](https://github.com/elizaOS/eliza/pull/6164)).