# ElizaOS Developer Update - July 11, 2025

## Core Framework

Over the past week, we've made significant stability improvements to the ElizaOS architecture and runtime. Version 1.2.0 is now the latest stable release, with some important clarifications around versioning:

- The "V2" terminology refers to the 1.x series, with 1.2.0 being the latest official version
- Users can run ElizaOS agents by either updating CLI to 1.2 or running inside the monorepo

We've addressed several critical Windows compatibility issues that were preventing proper plugin loading. PR [#5407](https://github.com/elizaOS/eliza/issues/5407) and [#5416](https://github.com/elizaOS/eliza/pull/5416) fix path normalization issues that were causing plugins to fail to load on Windows, particularly with the `elizaos dev` command.

The action chaining system has been merged in PR [#5436](https://github.com/elizaOS/eliza/pull/5436), enabling sequential execution of actions with shared state:

```typescript
// Action state is stored on the State object 
// and passed from one action to another
const result = await runtime.executeAction('generateImage', {
  prompt: "A futuristic cityscape at night"
});

// Access previous action results in your next action
const analysisResult = await runtime.executeAction('analyzeImage', {
  imageUrl: result.imageUrl
});
```

## New Features

### Image Generation Action

PR [#5446](https://github.com/elizaOS/eliza/pull/5446) introduces a new image generation capability:

```typescript
// Use the new image generation action
const result = await runtime.executeAction('generateImageAction', {
  prompt: "A beautiful landscape with mountains and a lake"
});

// The result contains the generated image URL
console.log(result.imageUrl);
```

### Forms Plugin

PR [#5487](https://github.com/elizaOS/eliza/pull/5487) introduces a powerful new forms system that allows agents to create interactive forms for user input:

```typescript
// Create a form with Zod validation
const form = await runtime.forms.createForm({
  name: "project-setup",
  fields: [
    {
      name: "projectName",
      type: "text",
      label: "Project Name",
      validations: [
        { type: "required", message: "Project name is required" },
        { type: "min", value: 3, message: "Name must be at least 3 characters" }
      ]
    },
    {
      name: "description",
      type: "textarea",
      label: "Description",
      placeholder: "Describe your project..."
    }
  ]
});

// Forms can be updated and canceled programmatically
await runtime.forms.updateForm(form.id, {
  fields: [/* updated fields */]
});
```

### Computational Chemistry Plugin

A new [plugin-elizaos-compchembridge](https://github.com/elizaOS/plugin-elizaos-compchembridge) has been released, enabling computational chemistry capabilities within ElizaOS agents. This plugin allows agents to perform molecular modeling and structural analysis.

## Bug Fixes

### Knowledge Plugin Issues

Several users reported problems with document chunking in the Knowledge plugin, particularly when using OpenRouter for embeddings. The issue was identified as rate limiting from OpenRouter. To resolve this:

```typescript
// Add rate limiting parameters to your knowledge plugin config
{
  "model": {
    "provider": "openrouter",
    "apiKey": "your-api-key",
    "MAX_CONCURRENT_REQUESTS": 2,  // Limit concurrent requests
    "REQUESTS_PER_MINUTE": 20      // Limit requests per minute
  }
}
```

For better contextual chunking results, we recommend using larger models like Claude-3-Opus:

```typescript
// Use Claude-3-Opus for more effective document chunking
{
  "model": {
    "provider": "anthropic",
    "modelName": "claude-3-opus-20240229",
    "apiKey": "your-api-key"
  }
}
```

### Windows Compatibility

After receiving reports of persistent issues with plugin loading on Windows (issue [#5407](https://github.com/elizaOS/eliza/issues/5407)), we've fixed path normalization and localhost resolution:

```typescript
// The fix normalizes paths like this
const normalizedPath = path.normalize(pluginPath).replace(/\\/g, '/');
```

### SPA Routing Fixes

We've resolved issues with SPA routing that were causing "NotFoundError" errors when refreshing on routes other than the home page. PR [#5469](https://github.com/elizaOS/eliza/pull/5469) implements a proper fallback:

```typescript
// Server-side SPA fallback for client-side routing
app.get('*', (req, res) => {
  res.sendFile(path.join(clientPath, 'index.html'));
});
```

## API Changes

The action chaining API has been introduced with PR [#5436](https://github.com/elizaOS/eliza/pull/5436), enabling sequential actions. The key changes include:

```typescript
// New API: Run actions sequentially with state sharing
const actionState = {};
const result1 = await runtime.executeAction('firstAction', params, actionState);
const result2 = await runtime.executeAction('secondAction', params, actionState);

// New API: Send a message to the user during action execution
await callback("Processing your request...");
```

We've also added a more consistent approach to environment variables with the new `LOG_TIMESTAMPS` configuration:

```typescript
// Control timestamp display in logs
// Set in your .env file or environment
LOG_TIMESTAMPS=true  // Enable timestamp display (default)
LOG_TIMESTAMPS=false // Disable timestamps for cleaner logs
```

## Social Media Integrations

The Twitter plugin documentation has been updated in PR [#5408](https://github.com/elizaOS/eliza/pull/5408) with improved examples and error handling. 

For Telegram bots, the recommended configuration has been clarified:

```
# Telegram Configuration Tip
# Talk to @BotFather and adjust the privacy settings
# to make your bot only respond to slash commands
```

## Model Provider Updates

### Local Inference Improvements

Ollama is now officially recommended for both model inference and embeddings:

```typescript
// Ollama configuration example for both inference and embeddings
{
  "model": {
    "provider": "ollama",
    "modelName": "llama3", // or your preferred model
    "baseUrl": "http://localhost:11434"  // Default Ollama URL
  },
  "embeddings": {
    "provider": "ollama",
    "modelName": "nomic-embed-text",
    "baseUrl": "http://localhost:11434"
  }
}
```

This works "out of the box" without requiring OpenAI API keys.

## Breaking Changes

While the V1 to V2 migration is mostly seamless, there are several issues to be aware of:

1. The Bootstrap Plugin in V2 has a different API - `runtime.startRun()` method has been removed. Use the updated pattern instead.

2. Plugin initialization errors for Windows users - Update to the latest version which includes the fixes in PR [#5416](https://github.com/elizaOS/eliza/pull/5416) to resolve Windows compatibility issues.

3. Knowledge plugin users - If experiencing chunking issues, add rate limiting parameters as shown earlier in the bug fixes section.

4. For users migrating from older versions - Bio fields can now be either string or array. The UI has been updated to handle both formats for backward compatibility:

```typescript
// Both formats now supported for agent bio
agent.bio = "I am an assistant"; // string format
agent.bio = ["I am an assistant", "I can help with tasks"]; // array format
```

5. When upgrading CLI, be sure to run `elizaos update` from within a project directory to avoid unwanted file creation in non-project folders.

For any additional help, join us on Discord in the #tech-support channel or check our updated documentation.