# ElizaOS Developer Update
**Week of September 7 - 13, 2025**

## 1. Core Framework

We've made significant architectural improvements to the ElizaOS core framework this week:

### Separating Sentry from Core
- Removed Sentry browser SDK from the core package and added it to the server package ([PR #5961](https://github.com/elizaOS/eliza/pull/5961))
- This reduces bundle size and prevents browser-incompatible code from being included in the core package
- Improves performance and compatibility for browser-based deployments

### Runtime Enhancements
- Fixed `SECRET_SALT` reads to be cache-aware to properly reflect environment changes during tests ([PR #5968](https://github.com/elizaOS/eliza/pull/5968))
- Improved error handling for message events by filtering action notifications to only client_chat messages ([PR #5957](https://github.com/elizaOS/eliza/pull/5957))
- Implemented backend runs tracking across server/core/bootstrap components for better monitoring ([PR #5953](https://github.com/elizaOS/eliza/pull/5953))

### Package Management
- Resolved issues with the "elizaos" NPM package, moved it to CLI alias
- Team implemented NPM token regeneration for improved security
- Discussions about transferring the package to the organization to simplify management

## 2. New Features

### Browser Integration with PGlite WASM Support
A major new feature has been added with browser-based database support:

```typescript
// PR #5970 - Adds browser build with PGlite WASM support
// This enables offline-capable database functionality directly in the browser
import { createElizaClient } from '@elizaos/client';
import { PGliteAdapter } from '@elizaos/db-pglite';

const client = createElizaClient({
  dbAdapter: new PGliteAdapter({
    // Browser-persistent storage
    storageLocation: 'indexeddb://eliza-data'
  })
});

// Data persists between sessions without server roundtrips
await client.connect();
```

### URL Synchronization for Direct Messaging
Added support for bookmarkable and shareable direct channel links ([PR #5941](https://github.com/elizaOS/eliza/pull/5941)):

```typescript
// Chat component now synchronizes URL with channel state
useEffect(() => {
  if (activeChannel?.id && !isSpecialChannel(activeChannel.id)) {
    addChannelIdToUrl(activeChannel.id);
  }
}, [activeChannel]);

// Enables direct navigation to specific conversations
function addChannelIdToUrl(channelId: string) {
  const url = new URL(window.location.href);
  url.searchParams.set('channel', channelId);
  window.history.replaceState({}, '', url.toString());
}
```

### Benchmark Demonstration
Borko shared a recording of benchmark work demonstrating performance improvements. This will help developers better understand system performance under various loads.

## 3. Bug Fixes

### Critical Issues Addressed

- **Image Generation in Discord**: Fixed a long-standing issue preventing images from appearing in Discord channels ([PR #5861](https://github.com/elizaOS/eliza/pull/5861))
  ```typescript
  // Root cause: Image content wasn't being properly attached to Discord messages
  // Fixed by updating the content handling in the plugin-bootstrap package
  export async function generateImage(prompt: string, options: ImageOptions = {}) {
    // Implementation now correctly attaches images to platform-specific messages
    if (platform === 'discord') {
      await sendDiscordAttachment(imageBuffer, fileName, messageContext);
    }
  }
  ```

- **CLI Port Detection**: Fixed port detection mechanism to prevent crashes when default port is occupied ([PR #5876](https://github.com/elizaOS/eliza/pull/5876))
  ```typescript
  // Now properly handles port conflicts with fallback behavior
  export async function findAvailablePort(startPort: number): Promise<number> {
    try {
      await isPortAvailable(startPort);
      return startPort;
    } catch (error) {
      return findAvailablePort(startPort + 1);
    }
  }
  ```

- **Logging Improvements**: Fixed `LOG_JSON_FORMAT` environment variable not working correctly ([PR #5885](https://github.com/elizaOS/eliza/pull/5885))

- **Agent Panel Loading**: Fixed issues with agent panels not loading properly ([PR #5901](https://github.com/elizaOS/eliza/pull/5901))

## 4. API Changes

### Agent Runs API
The new agent runs API provides structured tracking of agent execution:

```typescript
// New API endpoints for tracking agent runs
// GET /api/agents/:agentId/runs - List runs for an agent
// GET /api/agents/:agentId/runs/:runId - Get details for a specific run
// POST /api/agents/:agentId/runs - Create a new run

// Example usage
const runId = await apiClient.runs.createRun(agentId, {
  metadata: {
    source: 'web',
    sessionId: 'user-session-123'
  }
});

// Track events in the run
await apiClient.runs.addEvent(agentId, runId, {
  type: 'message',
  payload: { content: 'Hello' }
});

// Complete the run with status
await apiClient.runs.updateRun(agentId, runId, {
  status: 'completed',
  summary: 'User query answered successfully'
});
```

### Agent Panel API Changes
Public agent plugin panels are now exposed under agent-scoped paths:
```
/api/agents/{agentId}/plugins/...
```

## 5. Social Media Integrations

### Image Processing in Telegram
Vladimir explained that images sent from Telegram to N8N can be delivered in multiple dimensions, allowing recipients to choose their preferred size. This provides more flexibility for integration workflows.

### EthTokyo Hackathon Announcement
The EthTokyo hackathon was announced as a potential opportunity for blockchain developers to build ElizaOS integrations. This presents a great opportunity for Web3-focused developers to create innovative solutions using ElizaOS.

## 6. Model Provider Updates

### Local Ollama Embeddings Support
- Confirmation that local Ollama embeddings work with the knowledge plugin without additional configuration
- This provides a cost-effective alternative to OpenAI/Google API for vector embeddings
- Implementation works out-of-the-box without additional environment variable setup

```typescript
// Example configuration for using local Ollama embeddings
const config = {
  embedding: {
    provider: 'ollama',
    modelName: 'nomic-embed-text',
    dimensions: 768
  },
  // No additional API keys needed for local deployment
  baseUrl: 'http://localhost:11434' // Default Ollama port
};
```

## 7. Breaking Changes

### NPM Package Structure
The "elizaos" NPM package is now a CLI alias rather than part of the core components. This change may require updates to your import statements if you were directly importing from this package.

### V1 to V2 Migration
The upcoming V2 will include significant changes to the core architecture. The team is planning:
- Removal of Sentry from core and adding it to the server package
- Cleanup of server/channel/world/room abstractions to reduce redundancy
- Implementation of pglite WASM browser DB for offline capabilities
- New ElizaOS/react hooks for more streamlined frontend integration

If you're currently building on V1, make sure to update your dependencies regularly to ease the eventual migration to V2. We'll provide more detailed migration guides as we get closer to the V2 release.

Please join our Discord at [discord.gg/elizaOS](https://discord.gg/elizaOS) for more details and support with these changes.