# ElizaOS Developer Update - Week of December 2nd, 2025

## 1. Core Framework

This week saw significant improvements to ElizaOS's core architecture focused on performance and stability:

- **Server Optimization**: A major refactoring effort by @standujar was merged in [#6199](https://github.com/elizaOS/eliza/pull/6199), restructuring the server codebase following clean architecture principles and addressing critical performance issues:
  
  ```javascript
  // New Socket.IO configuration in src/index.ts
  const io = new Server(server, {
    pingInterval: 25000,   // 25s between pings
    pingTimeout: 20000,    // 20s to receive pong response
    connectTimeout: 10000, // 10s connection timeout
    transports: ['websocket', 'polling'],
  });
  
  // New HTTP server timeouts
  server.timeout = 30000;          // 30s request timeout
  server.keepAliveTimeout = 5000;  // 5s keepalive
  server.headersTimeout = 10000;   // 10s headers timeout
  ```

- **Runtime Enhancement**: The core team is implementing proper JSON Web Key Sets (JWKs) providers as part of a sprint focused on multi-user authentication, with a PR nearly ready that implements "mostly every JWKs provider."

- **Architecture Clarification**: Development discussions confirmed ElizaOS is primarily designed for single-user operation. Multi-user SaaS implementations require additional development around the core system, with repositories like Otaku and Spartan recommended for implementation examples.

## 2. New Features

Two key features are under active development:

### Multi-User Authentication

The core team is finalizing implementation of JSON Web Key Sets (JWKs) providers to support multi-user authentication scenarios. This will enable developers to build more robust SaaS applications on top of ElizaOS.

For developers building multi-user implementations:

```javascript
// Recommended pattern for multi-user implementations
// (Based on Otaku and Spartan repositories)
import { ElizaOS } from 'elizaos';

class MultiUserService {
  private userInstances = new Map();
  
  async getUserInstance(userId) {
    if (this.userInstances.has(userId)) {
      return this.userInstances.get(userId);
    }
    
    // Create new ElizaOS instance with user-specific config
    const config = await this.getUserConfig(userId);
    const instance = new ElizaOS(config);
    this.userInstances.set(userId, instance);
    
    return instance;
  }
  
  // Handle auth and wallet independently
  async getUserConfig(userId) {
    // Retrieve user-specific wallet credentials
    // from secure storage (HSM vault recommended)
    // ...
  }
}
```

### Server Reliability Patterns

Issue [#6198](https://github.com/elizaOS/eliza/issues/6198) outlines new reliability patterns being added to the server component:

- Socket.IO configuration for proper connection handling
- Explicit HTTP server timeouts
- Socket disconnection guards
- Parallelized database operations
- Circuit breaker pattern for graceful degradation

## 3. Bug Fixes

Several critical bugs were addressed this week:

- **Discord Plugin Error**: Fixed a TypeError where `this.runtime.hasElizaOS is not a function` was occurring in the ElizaOS Discord plugin, which prevented proper agent integration with Discord. The issue was acknowledged by @Odilitime as being caused by a recent change and has been prioritized for resolution.

- **Markdown Spacing Issues**: Two separate PRs ([#6159](https://github.com/elizaOS/eliza/pull/6159) and [#6197](https://github.com/elizaOS/eliza/pull/6197)) were merged to fix excessive vertical spacing in AI-generated markdown responses:

  ```css
  /* Key fix from packages/client/src/index.css */
  .markdown-content > div {
    display: contents !important;
  }
  
  /* Improved heading styling */
  .markdown-content h1 {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.2;
    margin: 2rem 0 1rem;
  }
  
  /* More compact blockquotes */
  .markdown-content blockquote {
    margin: 1rem 0;
    padding: 0.5rem 0 0.5rem 1rem;
    border-left: 3px solid #e5e7eb;
    color: #4b5563;
    font-style: italic;
  }
  ```

  These changes reduced spacing between list items by 73-91%, greatly improving readability in complex markdown content.

- **Documentation Location Issue**: Closed issue [#6122](https://github.com/elizaOS/eliza/issues/6122) regarding the location of documentation files, clarifying where package docs can now be found.

## 4. API Changes

No explicit API changes were documented this week, but developers should be aware of the code reorganization in PR [#6199](https://github.com/elizaOS/eliza/pull/6199) which moved several core files to more logical locations:

| Before | After |
|--------|-------|
| `src/bus.ts` | `src/services/message-bus.ts` |
| `src/loader.ts` | `src/services/loader.ts` |
| `src/upload.ts` | `src/utils/upload.ts` |
| `src/types.ts` | `src/types/server.ts` |

Backward compatibility is maintained via re-exports in `src/index.ts`, but developers should begin updating import paths in their code.

## 5. Social Media Integrations

The Discord plugin for ElizaOS is receiving significant attention:

- **Bug Fix**: The team is addressing the `this.runtime.hasElizaOS is not a function` TypeError reported by users when sending messages to agents through Discord.

- **Slash Commands**: A PR for slash command permissions has been opened ([elizaos-plugins/plugin-discord#29](https://github.com/elizaos-plugins/plugin-discord/pull/29)).

- **Room History Service**: A new feature PR titled "feat: get room history service function" was opened ([elizaos-plugins/plugin-discord#30](https://github.com/elizaos-plugins/plugin-discord/pull/30)).

- **Package Version Updates**: Another PR ([elizaos-plugins/plugin-discord#31](https://github.com/elizaos-plugins/plugin-discord/pull/31)) is updating package versions to ensure compatibility with the latest ElizaOS core.

## 6. Model Provider Updates

Development discussions highlight potential improvements to model provider interactions:

- **OpenRouter Free Tier**: Discussions referenced OpenRouter's free tier options for AI services, relevant for developers building on limited budgets or for mobile implementations.

- **OpenAI-Compatible API**: Issue [#6168](https://github.com/elizaOS/eliza/issues/6168) was opened requesting an OpenAI-compatible API option, which would allow for more flexible model hosting beyond the current OpenRouter implementation.

## 7. Breaking Changes

While no explicit breaking changes were announced, developers should be aware of these potential compatibility issues:

- **Socket.IO Configuration Changes**: PR [#6199](https://github.com/elizaOS/eliza/pull/6199) includes Socket.IO configuration changes that may affect existing client connections, particularly with the new timeout values and transport preferences. Testing with multiple browsers confirmed this should be a low-risk change, but developers integrating with ElizaOS should validate their connection handling.

- **Import Path Changes**: The same PR reorganized several core server files, moving them to more appropriate directories. While backward compatibility is maintained through re-exports, developers are encouraged to update their import paths accordingly to avoid future issues.

- **Web3 Integration Concerns**: Discussions highlighted potential limitations with ElizaOS requiring private keys as environment variables, which may impact SaaS applications where multiple users need to connect their own wallets. For multi-user implementations, developers are advised to handle authentication and wallet management independently of the core ElizaOS system.