{
  "interval": {
    "intervalStart": "2025-09-08T00:00:00.000Z",
    "intervalEnd": "2025-09-09T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-09-08 to 2025-09-09, elizaos/eliza had 12 new PRs (10 merged), 0 new issues, and 6 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7EFUYp",
      "title": "FIX CLI CI TESTS",
      "author": "linear",
      "number": 5714,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-08-04T14:39:12Z",
      "closedAt": "2025-09-08T15:31:51Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7INYr2",
      "title": "Show action called and result in chat UI",
      "author": "borisudovicic",
      "number": 5831,
      "repository": "elizaos/eliza",
      "body": "Examples: \n\n[https://www.prompt-kit.com/docs/tool](https://www.prompt-kit.com/docs/tool) \n\n[https://ai-sdk.dev/elements/components/tool](https://ai-sdk.dev/elements/components/tool)",
      "createdAt": "2025-08-27T11:05:50Z",
      "closedAt": "2025-09-08T15:26:07Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7IdKUG",
      "title": "dockerize project-starter (to mimic project-tee-starter)",
      "author": "linear",
      "number": 5842,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-08-28T12:11:26Z",
      "closedAt": "2025-09-08T15:25:48Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7CgbPk",
      "title": "Docs changes",
      "author": "borisudovicic",
      "number": 5677,
      "repository": "elizaos/eliza",
      "body": "[https://github.com/elizaOS/docs/issues](https://github.com/elizaOS/docs/issues)",
      "createdAt": "2025-07-25T13:42:16Z",
      "closedAt": "2025-09-08T17:09:52Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7I6pcU",
      "title": "Web UI dashboard exists but is completely undocumented (users don't know how to interact with their agent)",
      "author": "thedotmack",
      "number": 5857,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\nThe ElizaOS documentation (including the Quickstart guide) completely fails to mention that there's a web interface/dashboard available after starting an agent. The startup logs show \"Go to the dashboard at http://localhost:3001\" but this crucial information is NEVER mentioned in the documentation, leaving users confused about how to interact with their agent.\n\n**To Reproduce**\n\n1. Go to the ElizaOS documentation/quickstart\n2. Follow all installation steps:\n   - Install dependencies (`bun install`)\n   - Configure environment variables\n   - Set up character configuration\n   - Run `bun start` or `npm start`\n3. See output: `[INFO] Client http listening on port 3001`\n4. Try to figure out how to talk to your agent\n5. Search entire documentation for \"web UI\", \"browser\", \"localhost:3000\", \"how to chat\"\n6. Find nothing about the web interface\n7. Assume you need to configure Telegram/Discord just to test the agent\n\n**Expected behavior**\n\nAfter starting the agent, the documentation should clearly state:\n- \"Open your browser to `http://localhost:3000` to access the web chat interface\"\n- This should be prominently displayed in the quickstart guide\n- Should appear immediately after the \"start your agent\" step\n\n**Screenshots**\n\nCurrent quickstart ends with starting the agent - no mention of the dashboard:\n```\n# Start your agent\nbun start\n```\n*[Documentation just... stops here - no mention of the dashboard URL]*\n\nMeanwhile, the ACTUAL console output shows this ONE critical line buried in 100+ lines of logs:\n```\n[2025-09-01 00:11:19] INFO: Loaded character: Eliza\nBYPASS: Using postgres URL from environment variable\n[2025-09-01 00:11:19] INFO: Using local @elizaos/server installation\n[... 50+ MORE LINES OF LOGS ...]\n[2025-09-01 00:11:20] INFO: [STATIC] Serving static files from: ./node_modules/@elizaos/server/dist/client\n[2025-09-01 00:11:20] INFO: [SocketIO] Router initialized with 0 agents\n[2025-09-01 00:11:20] INFO: [SocketIO] Setting up Socket.IO event listeners\nStartup successful!\nGo to the dashboard at http://localhost:3001  <--- THIS ONE LINE IS THE ONLY WAY TO KNOW\nAgentServer is listening on port 3001\n[2025-09-01 00:11:21] INFO: Final plugins being loaded:\n[2025-09-01 00:11:21] INFO: Running plugin migrations...\n[... 20+ MORE LINES OF LOGS CONTINUE AFTER ...]\n```\n\nThe critical \"Go to the dashboard\" message is:\n- Buried in the middle of 108 lines of startup logs\n- Surrounded by technical INFO messages about plugins, migrations, and socket handlers\n- Easy to miss as it scrolls by with all the other output\n- The ONLY indication that a web UI even exists\n\nThe logs literally tell you \"Go to the dashboard\" but:\n- That there IS a dashboard\n- That there IS a web UI\n- That you should look for this URL in the logs\n- That this is how you interact with your agent\n\n**Additional context**\n\n- The dashboard URL appears on line 65 of 108 lines of startup output - completely buried in technical logs\n- Most users will never notice this ONE line among all the INFO messages about plugins, migrations, and socket handlers\n- The startup logs DO show \"Go to the dashboard\" but it's buried in a wall of text that scrolls by quickly\n- The docs don't even mention that a dashboard/web UI EXISTS, let alone tell users to look for it in the logs\n- Users are forced to configure unnecessary integrations (Telegram/Discord/Twitter) just to test their agent because they don't know about the web UI\n- Even the llms.txt file mentions WebSocket connections and API endpoints but not the dashboard\n- This is a critical onboarding issue - new users literally cannot figure out how to interact with the thing they just installed\n- The fix is trivial: add to the quickstart \"After starting, your agent will display 'Go to the dashboard at http://localhost:xxxx' - open this URL in your browser to chat with your agent\"",
      "createdAt": "2025-09-01T00:16:45Z",
      "closedAt": "2025-09-08T17:09:29Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6nYgfa",
      "title": "fix: sanitize dkg assets",
      "author": "Lexpeartha",
      "number": 5902,
      "body": "",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-08T13:11:21Z",
      "mergedAt": null,
      "additions": 5899,
      "deletions": 890
    },
    {
      "id": "PR_kwDOMT5cIs6nTclZ",
      "title": "fix: separate browser sentry in logger",
      "author": "ChristopherTrimboli",
      "number": 5893,
      "body": "Testing @eliza/core/browser in next.js\n\nGetting errors logger sentry is still loading node.js:\n\n```\nModule not found: Can't resolve 'async_hooks'\n  18 | exports.AsyncHooksContextManager = void 0;\n  19 | const api_1 = require(\"@opentelemetry/api\");\n> 20 | const asyncHooks = require(\"async_hooks\");\n     |                    ^^^^^^^^^^^^^^^^^^^^^^\n  21 | const AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\n  22 | class AsyncHooksContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n  23 |     _asyncHook;\n\nImport traces:\n  Client Component Browser:\n    ./node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js [Client Component Browser]\n    ./node_modules/@opentelemetry/context-async-hooks/build/src/index.js [Client Component Browser]\n    ./node_modules/@sentry/node-core/build/esm/otel/contextManager.js [Client Component Browser]\n    ./node_modules/@sentry/node/build/esm/index.js [Client Component Browser]\n    ./node_modules/@elizaos/core/dist/browser/index.browser.js [Client Component Browser]\n    ./app/page.tsx [Client Component Browser]\n    ./app/page.tsx [Server Component]\n\n  Client Component SSR:\n    ./node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js [Client Component SSR]\n    ./node_modules/@opentelemetry/context-async-hooks/build/src/index.js [Client Component SSR]\n    ./node_modules/@sentry/node-core/build/esm/otel/contextManager.js [Client Component SSR]\n    ./node_modules/@sentry/node/build/esm/index.js [Client Component SSR]\n    ./node_modules/@elizaos/core/dist/browser/index.browser.js [Client Component SSR]\n    ./app/page.tsx [Client Component SSR]\n    ./app/page.tsx [Server Component]\n```",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-08T05:28:49Z",
      "mergedAt": "2025-09-08T06:16:26Z",
      "additions": 703,
      "deletions": 54
    },
    {
      "id": "PR_kwDOMT5cIs6nWzyc",
      "title": "fix: Logger API to Capture All Logs Including Namespaced Agent Logs",
      "author": "tcm390",
      "number": 5900,
      "body": "related: https://github.com/elizaOS/eliza/issues/5886\r\n\r\nresult: \r\n\r\n<img width=\"614\" height=\"837\" alt=\"Screenshot 2025-09-08 at 6 47 19 PM\" src=\"https://github.com/user-attachments/assets/3ca700fa-f1a9-46ea-b1f6-baaaa2928b89\" />\r\n\r\n## Summary\r\n\r\nThis PR fixes a critical issue where the logging API (`/api/server/logs`) was showing `undefined` for logger destinations and failing to capture agent-specific namespaced logs. The fix ensures that all logs, including those from agent runtimes with namespaces like `#Eliza (Default)`, are properly captured and displayed with correct log levels (warn=40, error=50, info=30, etc.).\r\n\r\n## Problem\r\n\r\nThe original issue had several components:\r\n\r\n1. **Undefined Logger Destination**: The logging API was trying to access a Pino-style destination (`Symbol.for('pino-destination')`) but ElizaOS uses Adze logger, causing `undefined` errors.\r\n\r\n2. **Missing Namespaced Logs**: Agent-specific logs with namespaces (e.g., `#Eliza (Default)`) were not being captured in the in-memory destination because sealed Adze instances don't trigger the global `adzeStore` listener.\r\n\r\n3. **Incorrect Log Levels**: All logs were showing as level 30 (info) instead of their actual levels (warn=40, error=50) due to missing level information in the string output.\r\n\r\n4. **ANSI Escape Sequence Issues**: Log parsing was failing due to ANSI color codes in terminal output.\r\n\r\n## Solution\r\n\r\n### 1. Core Logger Fix (`packages/core/src/logger.ts` & `logger.browser.ts`)\r\n\r\n- **Fixed Namespaced Log Capture**: Modified the `invoke` function to manually write all log messages (including namespaced ones) to the `globalInMemoryDestination`\r\n- **Preserved Log Levels**: Ensured that log entries maintain their correct numeric levels (40 for warn, 50 for error, etc.)\r\n- **Enhanced String Output**: Updated `recentLogs()` to include level information in the format \"TIMESTAMP LEVEL MESSAGE\"\r\n\r\n```typescript\r\n// Key fix: Capture all logs in invoke function\r\nconst entry: LogEntry = {\r\n  time: Date.now(),\r\n  level: LOG_LEVEL_PRIORITY[method.toLowerCase()] || LOG_LEVEL_PRIORITY.info,\r\n  msg,\r\n};\r\nglobalInMemoryDestination.write(entry);\r\n```\r\n\r\n### 2. Logging API Fix (`packages/server/src/api/runtime/logging.ts`)\r\n\r\n- **Removed Pino Dependencies**: Replaced Pino-specific destination access with ElizaOS `recentLogs()` function\r\n- **Added ANSI Parsing**: Implemented regex to strip ANSI escape sequences before parsing log strings\r\n- **Fixed Level Parsing**: Added proper mapping from level strings to numeric values\r\n- **Improved Error Handling**: Added robust fallback parsing for malformed log lines\r\n\r\n```typescript\r\n// Key fix: ANSI escape sequence removal and level parsing\r\nconst cleanLine = line.replace(/\\u001B\\[[0-9;]*m/g, '');\r\nconst logMatch = cleanLine.match(/^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z)\\s+(\\w+)\\s+(.+)$/);\r\n```\r\n\r\n## Testing\r\n\r\nThe fix has been tested to ensure:\r\n\r\n- ✅ All log types (info, warn, error, fatal) show correct levels in API response\r\n- ✅ Namespaced agent logs are captured and accessible via API\r\n- ✅ ANSI escape sequences are properly handled\r\n- ✅ API returns structured log data with proper timestamps and levels\r\n- ✅ Both browser and Node.js environments are supported\r\n\r\n## Files Changed\r\n\r\n- `packages/core/src/logger.ts` - Main logger implementation\r\n- `packages/core/src/logger.browser.ts` - Browser-compatible logger\r\n- `packages/server/src/api/runtime/logging.ts` - Logging API endpoint\r\n\r\n## Breaking Changes\r\n\r\nNone. This is a bug fix that maintains backward compatibility while improving functionality.\r\n\r\n## Impact\r\n\r\n- **Developers**: Can now properly monitor all agent logs including runtime-specific messages\r\n- **Operations**: Better observability and debugging capabilities for agent behavior\r\n- **UI**: Logging interfaces will show correct log levels with proper color coding\r\n- **Agent Development**: Enhanced visibility into agent decision-making and error handling\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-08T10:48:34Z",
      "mergedAt": "2025-09-08T15:36:46Z",
      "additions": 162,
      "deletions": 60
    },
    {
      "id": "PR_kwDOMT5cIs6nc_BK",
      "title": "feat: add NPM safe overrides for error-ex hack",
      "author": "ChristopherTrimboli",
      "number": 5904,
      "body": "In response to: https://jdstaerk.substack.com/p/we-just-found-malicious-code-in-the\r\n\r\nerror-ex NPM hack this pins package.json versions to safe versions.\r\n\r\nWe were not effected previously but this to be safe.\r\n\r\nThis pull request updates the way package versions are enforced in the project by moving several dependencies from the `resolutions` field to the `overrides` field in `package.json`, and adds additional package overrides. The changes help ensure consistent versions of important libraries and their transitive dependencies across the project.\r\n\r\n**Dependency management updates:**\r\n\r\n* Moved `@nrwl/devkit` and `@nrwl/tao` from the `resolutions` field to the new `overrides` field to better control their versions.\r\n* Added explicit version overrides for several packages: `chalk`, `strip-ansi`, `color-convert`, `color-name`, `is-core-module`, `error-ex`, and `has-ansi` to prevent potential version conflicts and ensure compatibility.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-08T19:55:02Z",
      "mergedAt": "2025-09-08T20:00:17Z",
      "additions": 140,
      "deletions": 143
    },
    {
      "id": "PR_kwDOMT5cIs6hdjEz",
      "title": "fix: namespace plugin routes",
      "author": "odilitime",
      "number": 5693,
      "body": "# Risks\r\n\r\nLow, some routes maybe need to be updated\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n- makes helmut more permissive (only in dev mode) so devs can use tailwind or CDNs for js frameworks\r\n- DRY clean up in server (refactored up `findRouteInRuntime`)\r\n- prefers matcher (which allows : route params) and uses base path after /plugins/ for matching\r\n\r\n## What kind of change is this?\r\n\r\nUpdates (new versions of included code)\r\n\r\n## Why are we doing this? Any context or related work?\r\n\r\nnamespacing plugins is just cleaner. Makes no sense having plugins fighting over the plugin/ namespace, now there's no chance of collision ever.\r\n\r\n# Documentation changes needed?\r\n\r\nMy changes do not require a change to the project documentation.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-31T03:51:29Z",
      "mergedAt": "2025-09-08T07:50:49Z",
      "additions": 124,
      "deletions": 174
    }
  ],
  "codeChanges": {
    "additions": 1208,
    "deletions": 856,
    "files": 16,
    "commitCount": 32
  },
  "completedItems": [
    {
      "title": "fix: namespace plugin routes",
      "prNumber": 5693,
      "type": "bugfix",
      "body": "# Risks\r\n\r\nLow, some routes maybe need to be updated\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n- makes helmut more permissive (only in dev mode) so devs can use tailwind or CDNs for js frameworks\r\n- DRY clean up in server (refactored u",
      "files": [
        "packages/core/src/runtime.ts",
        "packages/server/src/api/index.ts",
        "packages/server/src/index.ts"
      ]
    },
    {
      "title": "feat: add NPM safe overrides for error-ex hack",
      "prNumber": 5904,
      "type": "feature",
      "body": "In response to: https://jdstaerk.substack.com/p/we-just-found-malicious-code-in-the\r\n\r\nerror-ex NPM hack this pins package.json versions to safe versions.\r\n\r\nWe were not effected previously but this to be safe.\r\n\r\nThis pull request updates ",
      "files": [
        "bun.lock",
        "package.json"
      ]
    },
    {
      "title": "fix: agents panels loading",
      "prNumber": 5901,
      "type": "bugfix",
      "body": "\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n- New Features\n  - Public agent plugin panels are now exposed under agent-scoped paths: /api/agents/{agentId}/plugins...\n  - Panel disco",
      "files": [
        "packages/server/src/api/agents/panels.ts",
        "packages/server/src/api/index.ts"
      ]
    },
    {
      "title": "fix: Logger API to Capture All Logs Including Namespaced Agent Logs",
      "prNumber": 5900,
      "type": "bugfix",
      "body": "related: https://github.com/elizaOS/eliza/issues/5886\r\n\r\nresult: \r\n\r\n<img width=\"614\" height=\"837\" alt=\"Screenshot 2025-09-08 at 6 47 19 PM\" src=\"https://github.com/user-attachments/assets/3ca700fa-f1a9-46ea-b1f6-baaaa2928b89\" />\r\n\r\n## Summ",
      "files": [
        "packages/core/src/logger.browser.ts",
        "packages/core/src/logger.ts",
        "packages/server/src/api/runtime/logging.ts"
      ]
    },
    {
      "title": "chore(docs): remove duplicate AGENT.md in favor of AGENTS.md",
      "prNumber": 5899,
      "type": "other",
      "body": "This PR removes the duplicate AGENT.md at the repo root in favor of the canonical AGENTS.md.\\n\\nWhy:\\n- The repository standardizes on AGENTS.md for agent instructions across the tree.\\n- AGENT.md duplicated and diverged from AGENTS.md, ris",
      "files": [
        "AGENT.md"
      ]
    },
    {
      "title": "docs: add AGENTS.md contributor guide",
      "prNumber": 5898,
      "type": "docs",
      "body": "This pull request adds comprehensive repository guidelines to the documentation, outlining project structure, development workflows, coding standards, testing practices, and security protocols. These guidelines are intended to help contribu",
      "files": [
        "AGENTS.md"
      ]
    },
    {
      "title": "chore: remove deprecated configuration files",
      "prNumber": 5897,
      "type": "other",
      "body": "## Summary\n\nThis PR removes three deprecated configuration files that are no longer needed in the ElizaOS repository:\n\n### Files Removed:\n\n1. **** - GitHub Actions workflow for testing alpha CLI releases\n   - This workflow was used to test ",
      "files": [
        ".github/workflows/alpha-cli-tests.yml",
        "fly.toml",
        "knip.config.ts"
      ]
    },
    {
      "title": "fix: change SECRET_SALT log level from error to warning",
      "prNumber": 5895,
      "type": "bugfix",
      "body": "## Problem\n\nThe SECRET_SALT environment variable validation was logging an **error** when the default value was being used. This created confusion as error-level logs typically indicate critical failures that prevent the system from functio",
      "files": [
        "packages/core/src/settings.ts"
      ]
    },
    {
      "title": "fix(server): resolve TypeScript logger parameter errors",
      "prNumber": 5894,
      "type": "bugfix",
      "body": "",
      "files": [
        "packages/server/src/api/index.ts"
      ]
    },
    {
      "title": "fix: separate browser sentry in logger",
      "prNumber": 5893,
      "type": "bugfix",
      "body": "Testing @eliza/core/browser in next.js\n\nGetting errors logger sentry is still loading node.js:\n\n```\nModule not found: Can't resolve 'async_hooks'\n  18 | exports.AsyncHooksContextManager = void 0;\n  19 | const api_1 = require(\"@opentelemetry",
      "files": [
        "bun.lock",
        "packages/core/src/index.browser.ts",
        "packages/core/src/logger.browser.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 151.83319197653904,
      "prScore": 151.39519197653905,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 87.49686069892569,
      "prScore": 87.49686069892569,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 74.74599931662476,
      "prScore": 68.74599931662476,
      "issueScore": 0,
      "reviewScore": 6,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 36.607059622210414,
      "prScore": 36.16905962221041,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "Lexpeartha",
      "avatarUrl": "https://avatars.githubusercontent.com/u/43365376?u=612e09b9512edda4717a1cb7d61f163a0289be1a&v=4",
      "totalScore": 33.5437738965761,
      "prScore": 33.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 12,
  "mergedPRs": 10,
  "newIssues": 0,
  "closedIssues": 5,
  "activeContributors": 6
}