# ElizaOS Developer Update - August 22, 2025

## Core Framework

This week, we've made significant progress on the ElizaOS Cloud MVP with a fully functional credit system and API key management. The core signup → grab key → use services → track credits loop is now working properly. We've also enhanced our session management capabilities:

- **Sessions API Improvements**: PR #5805 adds metadata propagation throughout the message processing pipeline, enabling plugins to access custom session metadata like `ethAddress` or user-specific configuration.
- **Cross-Environment Logger**: Our logger module has been refactored to function seamlessly across both browser and Node.js environments (PR #5797).
- **Async Embedding Generation**: PR #5793 implements a queue-based approach for embedding generation, reducing response times by approximately 500ms.
- **Service Load Promises**: Added `getServiceLoadPromise` interface to runtime for better service initialization tracking (PR #5801).

A significant debate occurred around model API design between team members, with Shaw advocating for a unified approach with enumerated types:

```typescript
// Shaw's proposed design
const response = await useModel(ModelType.TEXT_STREAM, prompt);
// Returns TextStreamObject with proper typing

// vs. cjft's separate function approach
const response = await useModelStream(prompt);
```

This discussion is important as it affects our multimodal support strategy moving forward.

## New Features

### MCP Integration with x402 Payment Rails

We're developing a robust monetization system for Modular Containerized Programs (MCPs):

```typescript
// Example MCP monetization configuration
const mcpConfig = {
  payment: {
    provider: 'x402',
    pricing: {
      perRequest: 0.05,  // $0.05 per request
      subscription: {
        monthly: 9.99     // $9.99/month unlimited access
      }
    },
    limits: {
      free: 10,  // 10 free requests
      trial: 30   // 30 trial requests
    }
  }
};
```

Additionally, we're building a workflow assembly system similar to n8n for chaining MCPs together, along with a Docker MCP catalog for secure deployments.

### Agent Directory Enhancement

We're developing a public map and website directory of vetted agents rather than implementing automatic agent registration. This will provide a more curated experience and ensure quality control.

```typescript
// Simplified agent directory entry schema
interface AgentDirectoryEntry {
  id: string;
  name: string;
  description: string;
  capabilities: string[];
  tags: string[];
  creator: string;
  verified: boolean;
  rating: number;
  usageCount: number;
  lastUpdated: Date;
}
```

## Bug Fixes

### Critical Issues Resolved

- **Entity Creation SQL Parameter Mismatch**: Fixed a critical database error during entity creation that was causing failures with the error "params: [only 2 parameters provided, 3 required]" (PR #5791).
- **XML Parsing Reliability**: Replaced unsafe XML fallback regex with a linear scan to resolve GitHub Actions test failures across multiple packages (PR #5792).
- **Plugin SQL Component Queries**: Fixed component queries in plugin-sql to make date handling more flexible, allowing intentional creation of non-Date timestamps (PR #5801).

### Publisher Module Improvements

PR #5796 fixed comma placement in `index.json` and improved TypeScript safety:

```typescript
// Before - comma placement issue
JSON.stringify(
  {
    plugins: [
      ...existingPlugins,
      newPlugin  // Missing comma when appending
    ]
  }
)

// After - fixed comma handling with proper TypeScript types
interface RegistryIndex {
  plugins: PluginEntry[];
}
```

## API Changes

### Sessions API Enhancement

PR #5799 introduced significant enhancements to the Sessions API:

```typescript
// Create a session with advanced timeout configuration
const session = await api.sessions.create({
  agentId: "agent-uuid",
  userId: "user-uuid",
  metadata: { ethAddress: "0x123..." },
  timeoutConfig: {
    duration: 30 * 60 * 1000,  // 30 minutes
    autoRenew: true,           // Auto-renew on activity
    warningAt: 5 * 60 * 1000   // Warn 5 minutes before expiry
  }
});

// Send a message with session context
const response = await api.sessions.sendMessage(session.id, {
  content: "Hello, agent!",
  type: "text"
});
```

This update includes comprehensive timeout management, auto-renewal capabilities, and robust error handling.

## Social Media Integrations

The Twitter plugin is experiencing rate limiting issues with users receiving 429 errors despite having paid subscriptions. We've discovered that in some cases user Twitter apps were banned for policy violations. The team is investigating proper handling of Twitter API rate limits in the plugin.

We're also considering switching from Collab.land to Vulcan.xyz for verification due to ongoing issues with Collab.land, described as "janky" by some team members.

## Model Provider Updates

OpenRouter reported a temporary issue with their Generations API endpoint due to Cloudflare problems, which was subsequently resolved. The OpenRouter integration will be updated after PR #5777 is completed.

Two new developer APIs were announced by OpenRouter:
- **Activity Analytics API**: Provides daily activity rollups
- **Allowed Models API**: Enables fetching models filtered by user provider preferences

## Breaking Changes

### V1 to V2 Migration

We're planning breaking changes for V1.5 to improve code quality without disrupting existing plugins. Key areas include:

1. **Model API Restructuring**: The ongoing debate between unified vs. separate function approaches for model interactions will result in API changes.
2. **Plugin Bootstrap Update**: Important modifications to the embedding system which now uses async generation.
3. **Runtime Parameter Cleanup**: Removing unnecessary 'runtime' parameters that are already accessible via 'this'.

If you're building on ElizaOS, we recommend:

```typescript
// Preferred pattern for future compatibility
// Instead of passing runtime as a parameter
function myAction(runtime, param1, param2) { /* ... */ }

// Use 'this' context
function myAction(param1, param2) {
  const runtime = this;
  // Implementation
}
```

For more information on these changes, please join our Discord or check the documentation at [docs.elizaos.com](https://docs.elizaos.com).