# ElizaOS Developer Update - Week of Dec 1-5, 2025

## 1. Core Framework

The ElizaOS core framework has undergone significant optimization and reorganization this week with the successful merge of PR #6199, addressing server performance issues that were causing timeouts with multiple user connections.

Key architectural improvements:
- **Socket.IO Configuration**: Optimized with `pingInterval` (25s), `pingTimeout` (20s), and `connectTimeout` (10s) to prevent hanging connections
- **HTTP Server Timeouts**: Added `timeout`, `keepAliveTimeout`, `headersTimeout`, and `requestTimeout` to enhance reliability
- **Code Restructuring**: Reorganized root-level files into proper directories following clean architecture principles:
  ```
  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
  ```

Additionally, Stan is implementing a "plugin-waitlist" concept proposed by Odilitime, with two active PRs (#6200 and #6201) currently under review.

## 2. New Features

### JWT Authentication System (PR #6200)

A comprehensive JWT authentication system has been proposed, implementing multi-tenant data isolation:

```typescript
// JWT Verification Flow
// Request with Bearer token
//   ↓
// JWTVerifierFactory.create()
//   ↓
// Priority: Ed25519 > JWKS > Secret > Disabled
//   ↓
// verifier.verify(token)
//   ↓
// Extract payload.sub
//   ↓
// entityId = stringToUuid(sub)  ← Derived, NOT stored in JWT
//   ↓
// req.entityId = entityId
```

Key capabilities:
- **Priority-based verifier selection**: Ed25519, JWKS, and Secret providers
- **External provider support**: Auth0, Clerk, Privy, Supabase, Google
- **Dual authentication modes**: JWT or legacy X-Entity-Id header
- **Internal service bypass**: Process-local UUID secret for service-to-service calls

Configuration via environment variables:
```bash
ENABLE_DATA_ISOLATION=true       # Enable JWT auth mode
JWT_SECRET=your-secret-key       # HS256 symmetric secret
JWT_PUBLIC_KEY_ED25519=MCowBQYDK2Vw... # Ed25519 public key
JWT_JWKS_URI=https://auth0.com/.well-known/jwks.json
JWT_ISSUER_WHITELIST=https://auth0.com/,https://clerk.dev
```

### Unified API - Serverless - NodeJS (PR #6201)

A new unified API approach for serverless NodeJS environments is under development, with 324 additions and 88 deletions across the codebase. This standardizes the API interface for better compatibility with cloud deployment scenarios.

## 3. Bug Fixes

Two critical bugs related to the user interface have been fixed this week:

### Markdown Rendering Improvements

PRs #6159 and #6197 addressed excessive vertical spacing in AI-generated markdown responses:

- Fixed spacing issues in nested lists, headers, and blockquotes
- Implemented proper styling for code blocks and inline code
- Reduced vertical spacing between elements by up to 91%

Before the fix, response content had excessive gaps:
- Bullet gaps: 24.5px → 2px (-91%)
- List item gaps: 30.5px → 8px (-73%)
- Header-to-bullets: 28.5px → 4px (-83%)

Technical approach:
```css
.markdown-content > div {
  display: contents !important;
}
```

This makes Streamdown's wrapper divs "transparent" to layout while preserving DOM structure and semantics, eliminating spacing contribution from Tailwind's `space-y-4` class.

## 4. API Changes

The server API underwent significant reorganization in PR #6199, with all import paths updated for improved code structure. These changes maintain backward compatibility through re-exports in `src/index.ts`.

Notable API-related developments:
- Added `ServerMiddleware` and `ServerConfig` types to `types/server.ts`
- Created barrel exports in `services/index.ts` and updated `utils/index.ts`
- Message API issues with "missing required values" errors were reported and are being investigated

## 5. Social Media Integrations

The team is actively working to restore X (Twitter) integration, though negotiations have been slowed by what team member Kenk described as "Musk's legal legacy." Despite these challenges, some progress is being made.

Issues with the Discord plugin have been identified, with YogaFlame reporting a TypeError ("this.runtime.hasElizaOS is not a function"). Odilitime acknowledged responsibility for the change causing the issue and is working on a fix.

Users have expressed concerns about the high cost of X API integration ($175/month), which remains a barrier to adoption.

## 6. Model Provider Updates

The team has confirmed that DeepSeek models are now usable through the openrouter plugin. Users seeking to integrate DeepSeek should:

```javascript
// Configuration for DeepSeek via openrouter plugin
{
  "provider": "openrouter",
  "model": "deepseek/deepseek-coder-33b-instruct" // or other DeepSeek models
}
```

There have also been discussions regarding Anthropic's potential IPO, though no specific integration updates related to Claude models were mentioned.

## 7. Breaking Changes

The migration from ai16z to ElizaOS tokens has been a significant focus this week, with multiple breaking changes affecting users:

- **Exchange Compatibility**: Exchanges like Bithumb and Kraken have paused AI16Z trading while evaluating migration support
- **Manual Migration Process**: Users need to send tokens to wallet address `77qVj3adpxbKjLuD9FoeFvDxHuAsro1cjvLVjuPQcEZ5`
- **Conversion Ratio**: 6:1 conversion (six ElizaOS tokens for one AI16Z token held before the snapshot)
- **Migration Eligibility**: Only tokens held in accessible wallets before the snapshot are eligible

The team is actively directing users with migration issues to the #migration-support and #ticket-support channels. Be aware that scammers are targeting users through fake support tickets and DMs—always verify official channels.

For exchanges that haven't yet supported automatic migration, manual processes will be required. The team is working on clearer documentation for this process.