# ElizaOS Developer Update - Week of September 16, 2025

## Core Framework

The ElizaOS team has made significant progress on browser compatibility this week. CJFT shared major advances in making plugins work directly in browser environments through clever use of the "browser" field in package.json. This enables the same code to run in both Node.js and browser contexts without logical changes:

```typescript
// Import options now available:
import { ... } from "@elizaos/core/browser"; // Browser-specific
import { ... } from "@elizaos/core/node";    // Node.js-specific 
import { ... } from "@elizaos/core";         // Auto-resolves based on bundler
```

The same PGLite instance that runs in Node.js now works in browsers, and ElizaOS plugins can be written directly in React components. This represents a major step toward full browser support as outlined in issue [#5958](https://github.com/elizaOS/eliza/issues/5958).

Additionally, work continues on the Eliza Cloud MVP v1, which now has a working core flow: signup → API key + free credit → CLI login → request handling → usage logging.

## New Features

### Browser-Compatible SQL Plugin

A significant new feature was merged in PR [#5970](https://github.com/elizaOS/eliza/pull/5970), adding browser-safe build for `@elizaos/plugin-sql` using PGLite WASM. This enables the same database capabilities across both environments:

```typescript
// Browser usage example 
import { SQLPlugin } from "@elizaos/plugin-sql";

const agent = {
  name: "DatabaseAgent",
  plugins: [SQLPlugin],
  settings: {
    // Browser-specific configuration automatically applied
  }
};
```

### Backend Runs Tracking

PR [#5953](https://github.com/elizaOS/eliza/pull/5953) implemented backend runs tracking for monitoring and analyzing agent performance:

```typescript
// Example of accessing run data
import { RunsService } from "@elizaos/api-client";

const runsService = new RunsService({ apiKey: "your_api_key" });
const runs = await runsService.listRuns({ 
  agentId: "agent-123",
  limit: 10, 
  status: "completed" 
});
```

### Chat UI Improvements

The web client now displays real-time feedback on tool actions and their results (PR [#5865](https://github.com/elizaOS/eliza/pull/5865)), giving users more insight into agent operations.

## Bug Fixes

### `SECRET_SALT` Cache Awareness

A fix was implemented in PR [#5968](https://github.com/elizaOS/eliza/pull/5968) to make `SECRET_SALT` reads cache-aware, preventing excessive logging and properly reflecting environment changes during tests:

```typescript
// Before: Would log error on every call
const salt = getSalt();

// After: Cached and only warns once if using default
const salt = getSalt();
```

### Image Generation in Discord

PR [#5861](https://github.com/elizaOS/eliza/pull/5861) resolved a long-standing issue where generated images weren't appearing in Discord, despite showing correctly in the web UI. This fix ensures images generated by the agent properly appear in Discord channels.

### JSON Format Logging

PR [#5885](https://github.com/elizaOS/eliza/pull/5885) fixed an issue where setting `LOG_JSON_FORMAT=true` would cause an error. The logger now correctly outputs JSON-formatted logs when this option is enabled.

## API Changes

The API now exposes public agent plugin panels under agent-scoped paths:

```
/api/agents/{agentId}/plugins/{pluginId}/panels/{panelId}
```

This change in PR [#5901](https://github.com/elizaOS/eliza/pull/5901) improves panel discoverability and provides a consistent URL structure for plugin UIs.

## Social Media Integrations

### Farcaster Plugin Performance Fix

A critical issue was identified with the Farcaster plugin generating approximately 2 million PostgreSQL database requests. Stan acknowledged this as a known issue in GitHub issue [#8](https://github.com/elizaOS-plugins/plugin-farcaster/issues/8) and has committed to investigating potential connections to `/notifications` requests via Neynar.

### Discord Bot Controls

The team discussed improving Discord bot controls with two key approaches:

1. Preventing unwanted DMs through Discord bot dashboard permission settings
2. Using `CHANNEL_IDS` environment variable to whitelist specific channels where the bot can operate

## Model Provider Updates

### Anthropic Plugin Configuration

Users can now configure the Anthropic plugin to use more advanced models, including Claude Opus 4, through proper environment variable configuration:

```
ANTHROPIC_SMALL_MODEL=claude-opus-4-20250514
ANTHROPIC_LARGE_MODEL=claude-opus-4-20250514
```

This resolves the limitation where some users thought the plugin was restricted to Claude 3.5 Sonnet.

## Breaking Changes

As part of the browser compatibility work, developers should be aware of the following potential breaking changes:

1. Package imports may need to be updated to explicitly specify browser or Node.js environments for plugins that have been updated with dual-environment support

2. Projects using the CLI to build ElizaOS applications should update to the latest version (currently 1.5.8) to ensure compatibility with the new browser-support features

3. For plugin developers: When making plugins browser-compatible, remote URL endpoints should be used instead of direct API key access for enhanced security

If you're experiencing hot-reloading issues in the dev command when plugin directory changes aren't triggering updates, this is a known issue that the team is working to fix in an upcoming release.

Links to relevant PRs:
- [#5970: Adds browser build with PGLite WASM support](https://github.com/elizaOS/eliza/pull/5970)
- [#5890: Transform local file paths to API URLs for web client image display](https://github.com/elizaOS/eliza/pull/5890)
- [#5975: Enable JSON imports in project templates](https://github.com/elizaOS/eliza/pull/5975)