# ElizaOS Developer Update - November 19, 2025

## 1. Core Framework

The ElizaOS framework has reached technical completion with robust documentation, tutorials, and tooling in place. The team is now focusing on developing consumer-facing applications to demonstrate the framework's value. Recent core improvements include:

- **Runtime Initialization**: Fixed agent settings persistence across restarts, ensuring runtime-generated configurations are properly retained. ([#6106](https://github.com/elizaos/eliza/pull/6106))
- **Configuration Management**: Corrected environment variable loading from `process.env` instead of relying solely on `.env` files, resolving agent access issues. ([#6141](https://github.com/elizaos/eliza/pull/6141))
- **Unified Messaging API**: Added ElizaOS reference to runtime as a step toward creating a unified messaging API, with updates across several core packages. ([#6111](https://github.com/elizaos/eliza/pull/6111))
- **Database Flexibility**: Added conditional support for both MySQL and PostgreSQL database providers, enhancing deployment options. ([#6143](https://github.com/elizaos/eliza/pull/6143))
- **Migration Efficiency**: Added `skipMigrations` option to `runtime.initialize()` for improved server startup performance. ([#6132](https://github.com/elizaos/eliza/pull/6132))

## 2. New Features

### AI Agent Memory System

The team is implementing a sophisticated long-term memory system for AI agents, similar to Character.AI's approach:

```typescript
// Memory categorization system with nine specific categories
interface AgentMemory {
  identity: MemoryItem[];      // Who the agent is
  expertise: MemoryItem[];     // What the agent knows
  projects: MemoryItem[];      // What the agent is working on
  preferences: MemoryItem[];   // What the agent likes/dislikes
  dataSources: MemoryItem[];   // Where the agent gets information
  goals: MemoryItem[];         // What the agent aims to accomplish
  constraints: MemoryItem[];   // Limitations on agent behavior
  definitions: MemoryItem[];   // Key terms the agent understands
  behaviors: MemoryItem[];     // Behavioral patterns
}

// Memory population through onboarding
const setupAgentMemory = async (agent: Agent, config: AgentConfig) => {
  // Initial memory population from config
  await agent.memory.batch([
    { category: 'identity', content: config.identity },
    { category: 'expertise', content: config.expertise },
    // Other categories...
  ]);
  
  // Pre-built templates using Jungian typology
  if (config.personality.type) {
    const template = getJungianTemplate(config.personality.type);
    await agent.memory.batch(template);
  }
}
```

### Browser Compatibility

The ElizaOS core and runtime now fully work in browser environments:

```javascript
// Initialize ElizaOS in browser
import { ElizaOS, Runtime } from '@elizaos/core';
import { SQLitePlugin } from '@elizaos/plugin-sql/browser';

const initElizaInBrowser = async () => {
  const runtime = new Runtime();
  await runtime.use(new SQLitePlugin({ wasmMode: true }));
  await runtime.initialize({ skipMigrations: false });
  
  const eliza = runtime.getElizaOS();
  return eliza;
};
```

## 3. Bug Fixes

Several critical bugs have been resolved this week:

- **Row-Level Security (RLS)**: Fixed `server_id` validation that was incorrectly blocking all users when RLS isolation was disabled. This issue was preventing proper multi-user access in certain configurations. ([#6139](https://github.com/elizaos/eliza/pull/6139))

```typescript
// Previous implementation - incorrectly checking server_id
const validateServerAccess = (user, serverId) => {
  // This would block all access when RLS was disabled
  return user.servers.includes(serverId);
};

// Fixed implementation with proper RLS-aware check
const validateServerAccess = (user, serverId, rlsEnabled) => {
  return !rlsEnabled || user.servers.includes(serverId);
};
```

- **Entity Names Serialization**: Normalized entity names to ensure proper array serialization for PostgreSQL, handling Set objects by converting them with Array.from(). ([#6133](https://github.com/elizaos/eliza/pull/6133))

- **LangChain Migration**: Updated dependencies from deprecated LangChain v0.3 to @langchain/textsplitters v1.0, maintaining compatibility while reducing technical debt. ([#6152](https://github.com/elizaos/eliza/pull/6152))

- **TypeScript Declaration Generation**: Fixed TypeScript declaration generation errors in plugin-sql package, ensuring proper type definitions for developers. ([#6146](https://github.com/elizaos/eliza/pull/6146))

## 4. API Changes

- **Runtime Interface Enhancement**:
  - Added `hasElizaOS()` method to check for ElizaOS availability
  - Added `initPromise: Promise<void>` to `IAgentRuntime` for better async initialization control
  
```typescript
interface IAgentRuntime {
  // New methods
  hasElizaOS(): this is RuntimeWithElizaOS;
  getElizaOS(): ElizaOS;
  
  // Improved initialization
  initialize(options?: { skipMigrations?: boolean }): Promise<void>;
  
  // New property for tracking initialization status
  readonly initPromise: Promise<void>;
  
  // Existing methods...
}
```

- **Entity-Level Security**: Work has begun on implementing entity-level row-level security for more granular data access controls. This will allow permissions to be set at the individual entity level rather than just at the server level. ([#6107](https://github.com/elizaos/eliza/pull/6107))

## 5. Social Media Integrations

The team is working on several key integrations with social media platforms:

- **Twitter/X Integration**: Users reported Cloudflare network issues affecting Twitter connectivity. The team is implementing more resilient error handling in the Twitter plugin.

- **Phantom Wallet**: Exploratory integration with Phantom wallet is underway after they mentioned ElizaOS in a tweet.

- **Farcaster**: A new Farcaster miniapp has been added to the Spartan repository with extensive additions (+13,210 lines).

- **Discord Plugin**: Development of a unified messaging API for the Discord plugin is in progress, which will standardize how messages are handled across all social platforms.

## 6. Model Provider Updates

- **OpenRouter Embedding**: A new pull request has been opened to add OpenRouter embedding options to the command-line interface (CLI), expanding integration capabilities beyond existing providers. ([#6142](https://github.com/elizaos/eliza/pull/6142))

- **TEXT_EMBEDDING Models**: Added support for TEXT_EMBEDDING models in the OpenRouter plugin, enhancing the range of embedding options available.

## 7. Breaking Changes

The migration from AI16Z to ElizaOS tokens requires careful attention from developers:

- **Token Migration**: The project has migrated from AI16Z to ElizaOS due to trademark conflicts with a16z corporation.

- **Migration Deadline**: February deadline for automatic migration; manual migrations possible afterward with valid reasons.

- **Snapshot Mechanism**: Only tokens held in non-exchange wallets before the November 11th snapshot at 11:40 UTC are eligible for automatic 1:6 conversion.

- **Database Provider Changes**: With the new MySQL support, applications previously hardcoded for PostgreSQL may need updates:

```javascript
// Check database type before using PostgreSQL-specific features
if (runtime.getSetting('DATABASE_TYPE') === 'postgres') {
  // Use PostgreSQL-specific operations
} else {
  // Use MySQL-compatible alternatives
}
```

- **React Hooks Package**: A new `@elizaos/react` package is in development with headless React hooks, which will become the recommended approach for building React applications with ElizaOS.

Remember that all V1 code should migrate to the V2 API by Q1 2026, as V1 API support will be discontinued at that time.