{
  "interval": {
    "intervalStart": "2026-01-27T00:00:00.000Z",
    "intervalEnd": "2026-01-28T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-01-27 to 2026-01-28, elizaos/eliza had 1 new PRs (1 merged), 5 new issues, and 5 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7l6nkR",
      "title": "[Research] Poke App Analysis - All Team Members",
      "author": "borisudovicic",
      "number": 6395,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nEvery team member must try Poke app and document the experience. This is our form factor model.\n\n## Acceptance Criteria\n\n- [ ] Complete Poke onboarding\n- [ ] Test iMessage and Telegram flows\n- [ ] Note: You can negotiate price down to $0/month (talk the bouncer down)\n- [ ] Document the exact onboarding flow\n- [ ] Screenshot key interactions\n- [ ] Share findings in Discord #cloud channel\n\n## Technical Notes\n\n* Poke has unique \"talk down the bouncer\" pricing negotiation\n* Focus on their no-app onboarding magic\n* This is the form factor we're copying\n* URL: poke app (search \"poke app\")\n\n## Assignees\n\nAll team members\n\n## Priority\n\n**P0 - Day 1**",
      "createdAt": "2026-01-26T19:31:46Z",
      "closedAt": "2026-01-27T18:24:14Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7l6ncQ",
      "title": "[Research] Claudebot Deep Dive - All Team Members",
      "author": "borisudovicic",
      "number": 6394,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nEvery team member must set up and use Claudebot extensively to understand the competition before building.\n\n## Acceptance Criteria\n\n- [ ] Each team member has Claudebot running (Mac Mini may be required)\n- [ ] Test email, code, tasks, calendar functions\n- [ ] Document strengths and weaknesses\n- [ ] Screenshot key flows\n- [ ] Share findings in Discord #cloud channel\n\n## Technical Notes\n\n* Focus on what makes it feel magical\n* Identify features we can do better\n* This is research, not optional - required before building\n\n## Assignees\n\nAll team members\n\n## Priority\n\n**P0 - Day 1**",
      "createdAt": "2026-01-26T19:31:37Z",
      "closedAt": "2026-01-27T18:23:46Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7mLlsz",
      "title": "[Research] Twilio SMS Regulatory Compliance",
      "author": "borisudovicic",
      "number": 6433,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nResearch Twilio SMS regulatory requirements and verify our existing account setup from the Trump project.\n\n## Acceptance Criteria\n\n- [ ] Verify existing Twilio account status\n- [ ] Understand message volume limitations\n- [ ] Check regulatory paperwork requirements\n- [ ] Document any compliance steps needed for scale\n\n## Technical Notes\n\n**From today's meeting:**\n\n* R Odili: \"In my previous company that did Twilio with SMS, there was this big regulatory paper we had to fill out... I think that's going to take about a week\"\n* Shaw: \"We did do this for the Trump thing and we got that set up\"\n* Question is can we send 50 or 50,000 messages?\n* If limited to 50, need to talk to Twilio\n* Shaw will escalate if Twilio breaks down\n* Neo might know about the Trump project account\n* Note: This is different from main Twilio that Ren has access to\n\n## Priority\n\n**P1 - Research in parallel, don't block development**",
      "createdAt": "2026-01-27T18:06:56Z",
      "closedAt": "2026-01-29T20:12:27Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7mLliw",
      "title": "[Infra] Fix MCP Plugin 3-Second Initialization Delay",
      "author": "borisudovicic",
      "number": 6432,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nInvestigate and resolve the 3-second MCP plugin initialization delay on Vercel due to WebSocket handshake requirements.\n\n## Acceptance Criteria\n\n- [ ] Understand root cause of 3-second delay\n- [ ] Research options: Redis cache, Gateway pattern, or dedicated server\n- [ ] Implement solution that keeps connection alive\n- [ ] Test performance improvement\n\n## Technical Notes\n\n**From today's meeting (Ben):**\n\n* MCP plugin takes 3 seconds to initialize on every message\n* Caused by needing to establish WebSocket communication with server\n* Vercel serverless functions don't maintain state between invocations\n* Options discussed:\n  1. Redis cache for connection state (but WebSocket still needs reconnect)\n  2. Gateway pattern like Discord (dedicated server for stateful connections)\n  3. Accept the delay for now, optimize later\n\n**Shaw's guidance:**\n\n* For any WebSocket service, use the Gateway pattern similar to Discord\n* \"It's not like everything has to be serverless\" - just avoid idle pods doing nothing\n* Gateway service can scale, handles WebSocket → turns into HTTP to agent\n\n## Assignee\n\nBen\n\n## Priority\n\n**P1 - Important but not blocking MVP**",
      "createdAt": "2026-01-27T18:06:44Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7mLlVj",
      "title": "[Infra] Messaging Connection UI & Routing Service",
      "author": "borisudovicic",
      "number": 6431,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nSam's work on messaging infrastructure including UI settings card, webhook endpoints, database tables, and routing service.\n\n## Acceptance Criteria\n\n- [ ] Messaging connection UI in dashboard\n- [ ] Settings card for connecting Google/Twilio/SMS/Blue iMessage\n- [ ] Service that routes incoming SMS/iMessages to correct agent\n- [ ] Automatic response sending\n- [ ] Endpoints for Twilio and [Blue.io](<http://Blue.io>) webhooks\n- [ ] Database tables for messaging connections\n- [ ] E2E tests\n\n## Technical Notes\n\n**From today's meeting (Sam):**\n\n* Already built MVP of messaging connection UI\n* Settings card for connecting accounts from dashboard\n* Service routes incoming messages to right AI agent, sends back response automatically\n* Created endpoints for Twilio and [Blue.io](<http://Blue.io>) webhooks\n* Created database tables\n* Wrote E2E tests\n* Still testing UI, will share video when ready\n* PR coming soon - prioritize review\n\n## Assignee\n\nSam\n\n## Status\n\n**In Progress - PR coming soon**",
      "createdAt": "2026-01-27T18:06:30Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6-t40m",
      "title": "V2.0.0: fixed a2a example and related protobuf compatibility and runtime errors",
      "author": "hanzlamateen",
      "number": 6386,
      "body": "# Relates to\r\nFixes runtime errors in the python & rust a2a server example.\r\n\r\n# Risks\r\nLow. Changes are isolated to the python package and the a2a example server. The fixes ensure correct handling of protobuf messages which strictly enforces typing and structure, reducing the risk of runtime type errors.\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\nThis PR fixes type compatibility issues in the python package and resolves critical runtime exceptions (`AttributeError`, `TypeError`, `ValueError`) preventing the python a2a server from running. It updates the `elizaos` core package and the `inmemorydb` plugin to correctly interface with generated Protobuf classes, which do not support dynamic dictionary-style access. It also cleans up the a2a example's dependencies and configuration.\r\n\r\nIt also addresses critical runtime failures in the rust a2a example server: including database initialization, missing core actions, and model configuration bugs.\r\n\r\n## What kind of change is this?\r\n- Bug fixes (non-breaking change which fixes an issue)\r\n- Improvements (misc. changes to existing features)\r\n\r\n## Why are we doing this? Any context or related work?\r\nThe python a2a server example was failing to start and respond to requests because the code treated strict Protobuf message objects as flexible python dictionaries. This led to failures when assigning values to `State` objects or serializing `Memory` objects. These fixes make the Python implementation functional and compatible with the generated Protobuf types.\r\n\r\nAlso the rust a2a server example crashes on startup or hangs during execution due to broken dependencies (custom DB adapter, missing `bootstrap` actions) and invalid default configuration (plugin defaulting to `gpt-5`). This PR makes the example functional again.\r\n\r\n# Documentation changes needed?\r\n- My changes require a change to the project documentation.\r\n- If documentation change is needed: I have updated the documentation accordingly. (Updated `examples/a2a/python/README.md`)\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n- `packages/python/elizaos/runtime.py`: Verify the logic change for updating `state.values` and initializing `state.data.providers`.\r\n- `examples/a2a/python/server.py`: Check the field name correction and simplified imports.\r\n- `plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py`: Review the `MessageToDict` fix for serializing Memory objects.\r\n- `packages/python/elizaos/types/database.py`: New type definitions.\r\n- - `examples/a2a/rust/src/main.rs`: Core logic changes for the Rust server.\r\n\r\n## Detailed testing steps\r\n\r\n### python\r\n\r\n1. Use the updated installation instructions in `examples/a2a/python/README.md` to set up the environment.\r\n2. Run the server: `python examples/a2a/python/server.py`\r\n3. Verify startup works without import errors.\r\n4. Send a test chat message via curl:\r\n   ```bash\r\n   curl -X POST http://localhost:3000/chat \\\r\n        -H \"Content-Type: application/json\" \\\r\n        -d '{\"message\": \"Hello\"}'\r\n   ```\r\n5. Confirm a JSON response is received (e.g., from `eliza-classic` or OpenAI if configured).\r\n\r\n### rust\r\n\r\n1. Set `OPENAI_API_KEY` in .env or terminal and run.\r\n2. Run `cargo run --release` in `examples/a2a/rust`.\r\n3. Send a test chat message via curl:\r\n   ```bash\r\n   curl -X POST http://localhost:3000/chat \\\r\n        -H \"Content-Type: application/json\" \\\r\n        -d '{\"message\": \"Hello\"}'\r\n   ```\r\n4. Confirm a JSON response is received (e.g., from `eliza-classic` or OpenAI if configured).\r\n\r\n## Database changes\r\nN/A\r\n\r\n## Deployment instructions\r\nN/A\r\n\r\n## Discord username\r\n@hanzlamateen\r\n\r\n<!-- greptile_comment -->\r\n\r\n<h3>Greptile Summary</h3>\r\n\r\n\r\n- Fixes critical runtime errors in Python and Rust A2A server examples by addressing Protobuf type compatibility issues that were causing `AttributeError`, `TypeError`, and `ValueError` exceptions\r\n- Updates Python ElizaOS package to properly handle strict Protobuf message objects using `MessageToDict` serialization and attribute-based field access instead of dictionary-style operations  \r\n- Resolves Rust A2A server crashes by implementing missing database adapter methods, adding default model configuration, and providing local bootstrap actions when OpenAI API is unavailable\r\n\r\n<h3>Important Files Changed</h3>\r\n\r\n\r\n| Filename | Overview |\r\n|----------|----------|\r\n| `packages/python/elizaos/runtime.py` | Fixed Protobuf compatibility by implementing proper state.values updates and MessageToDict conversion for character settings |\r\n| `examples/a2a/rust/src/main.rs` | Comprehensive rewrite implementing complete in-memory database adapter, model configuration fixes, and local bootstrap actions |\r\n| `plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py` | Added Protobuf message detection and MessageToDict serialization for create_memory method |\r\n| `examples/a2a/python/server.py` | Fixed field name inconsistency from `channelType` to `channel_type` to match Protobuf schema requirements |\r\n\r\n<h3>Confidence score: 4/5</h3>\r\n\r\n\r\n- This PR addresses legitimate runtime compatibility issues with well-targeted fixes for Protobuf type handling\r\n- Score reduced due to the comprehensive nature of changes across multiple languages and complex Protobuf interaction patterns that could introduce edge cases\r\n- Pay close attention to the runtime.py and main.rs files which contain the most complex logic changes and could impact broader system functionality\r\n\r\n<h3>Sequence Diagram</h3>\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    participant User\r\n    participant FastAPI as \"FastAPI Server\"\r\n    participant ChatHandler as \"handle_chat()\"\r\n    participant Runtime as \"AgentRuntime\"\r\n    participant MessageService as \"DefaultMessageService\"\r\n    participant StateComposer as \"compose_state()\"\r\n    participant Providers as \"Providers\"\r\n    participant Model as \"LLM Model\"\r\n    participant Actions as \"Actions\"\r\n    participant Memory as \"InMemoryDB\"\r\n\r\n    User->>FastAPI: \"POST /chat {message: 'Hello'}\"\r\n    FastAPI->>ChatHandler: \"handle_chat(message, session_id)\"\r\n    ChatHandler->>Runtime: \"get_runtime()\"\r\n    Runtime-->>ChatHandler: \"initialized runtime\"\r\n    \r\n    ChatHandler->>ChatHandler: \"get_or_create_session(session_id)\"\r\n    ChatHandler->>ChatHandler: \"create Content & Memory objects\"\r\n    \r\n    ChatHandler->>MessageService: \"handle_message(runtime, message)\"\r\n    MessageService->>Memory: \"create_memory(message, 'messages')\"\r\n    MessageService->>StateComposer: \"compose_state(message)\"\r\n    \r\n    StateComposer->>Providers: \"execute providers (ACTION_STATE, RECENT_MESSAGES, etc.)\"\r\n    Providers-->>StateComposer: \"provider results with fixed protobuf access\"\r\n    StateComposer-->>MessageService: \"composed state\"\r\n    \r\n    MessageService->>MessageService: \"build_canonical_prompt()\"\r\n    MessageService->>Model: \"use_model(TEXT_LARGE, prompt)\"\r\n    Model-->>MessageService: \"raw XML response\"\r\n    \r\n    MessageService->>MessageService: \"parse actions, text, params from XML\"\r\n    MessageService->>Actions: \"process_actions(message, responses, state)\"\r\n    Actions-->>MessageService: \"action results\"\r\n    \r\n    MessageService->>Memory: \"create_memory(response_memory, 'messages')\"\r\n    MessageService-->>ChatHandler: \"MessageProcessingResult\"\r\n    \r\n    ChatHandler-->>FastAPI: \"response text\"\r\n    FastAPI-->>User: \"ChatResponse with agent response\"\r\n```\r\n\r\n<!-- greptile_other_comments_section -->\r\n\r\n<details><summary><h3>Context used (3)</h3></summary>\r\n\r\n- Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=8ef4c9a3-e221-4aef-8556-8c9b88bf6bbb))\r\n- Context from `dashboard` - .cursorrules ([source](https://app.greptile.com/review/custom-context?memory=00074882-001f-44b1-89c4-859ed3656db9))\r\n- Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=51febe90-8918-4f18-be1f-d43bb68d696c))\r\n</details>\r\n\r\n\r\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-22T14:54:11Z",
      "mergedAt": "2026-01-27T23:23:54Z",
      "additions": 448,
      "deletions": 95
    },
    {
      "id": "PR_kwDOMT5cIs6_pt91",
      "title": "Create SECURITY.md",
      "author": "j4lambert",
      "number": 6428,
      "body": "<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\r\n\r\n# Relates to\r\n\r\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review and merge. -->\r\n\r\n# Risks\r\n\r\n<!--\r\nLow, medium, large. List what kind of risks and what could be affected.\r\n-->\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n## What kind of change is this?\r\n\r\n<!--\r\nBug fixes (non-breaking change which fixes an issue)\r\nImprovements (misc. changes to existing features)\r\nFeatures (non-breaking change which adds functionality)\r\nUpdates (new versions of included code)\r\n-->\r\n\r\n<!-- This \"Why\" section is most relevant if there are no linked issues explaining why. If there is a related issue, it might make sense to skip this why section. -->\r\n<!--\r\n## Why are we doing this? Any context or related work?\r\n-->\r\n\r\n# Documentation changes needed?\r\n\r\n<!--\r\nMy changes do not require a change to the project documentation.\r\nMy changes require a change to the project documentation.\r\nIf documentation change is needed: I have updated the documentation accordingly.\r\n-->\r\n\r\n<!-- Please show how you tested the PR. This will really help if the PR needs to be retested and probably help the PR get merged quicker. -->\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n## Detailed testing steps\r\n\r\n<!--\r\nNone: Automated tests are acceptable.\r\n-->\r\n\r\n<!--\r\n- As [anon/admin], go to [link]\r\n  - [do action]\r\n  - verify [result]\r\n-->\r\n\r\n<!-- If there is a UI change, please include before and after screenshots or videos. This will speed up PRs being merged. It is extra nice to annotate screenshots with arrows or boxes pointing out the differences. -->\r\n<!--\r\n## Screenshots\r\n### Before\r\n### After\r\n-->\r\n\r\n<!-- If there is anything about the deployment, please make a note. -->\r\n<!--\r\n# Deploy Notes\r\n-->\r\n\r\n<!--  Copy and paste command line output. -->\r\n<!--\r\n## Database changes\r\n-->\r\n\r\n<!--  Please specify deploy instructions if there is something more than the automated steps. -->\r\n<!--\r\n## Deployment instructions\r\n-->\r\n\r\n<!-- If you are on Discord, please join https://discord.gg/ai16z and state your Discord username here for the contributor role and join us in #development-feed -->\r\n<!--\r\n## Discord username\r\n\r\n-->\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n<h3>Greptile Summary</h3>\n\nAdded a SECURITY.md file using GitHub's default template, but the content was not customized for the ElizaOS project.\n\n- The \"Supported Versions\" table lists incorrect version numbers (5.1.x, 5.0.x, 4.0.x) that don't match ElizaOS's actual versioning scheme (currently at v1.7.x)\n- The \"Reporting a Vulnerability\" section contains only placeholder text instructing authors to fill in the content, with no actual reporting instructions\n- The file should be updated with ElizaOS-specific information: accurate version numbers, actual vulnerability reporting channels (GitHub Security Advisories, Discord), and expected response timelines\n\n<h3>Confidence Score: 1/5</h3>\n\n- This PR should not be merged without completing the SECURITY.md content with project-specific information\n- Score reflects that while adding a SECURITY.md file is good practice, this PR only adds GitHub's unmodified template with placeholder text and incorrect version numbers. The file provides no actual value to users trying to report vulnerabilities or understand which versions receive security updates.\n- SECURITY.md requires complete rewrite with actual ElizaOS project information\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| SECURITY.md | Added GitHub's default SECURITY.md template without customization - contains placeholder text and incorrect version numbers (5.1.x instead of 1.7.x) |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant User as Security Researcher\n    participant GH as GitHub Repository\n    participant SECURITY as SECURITY.md File\n    participant Team as ElizaOS Team\n\n    User->>GH: Visit repository\n    User->>SECURITY: Read SECURITY.md\n    Note over SECURITY: Currently shows<br/>placeholder template<br/>with wrong versions\n    SECURITY-->>User: Template text:<br/>\"Use this section to...\"\n    User->>User: Confused about<br/>how to report\n    \n    Note over User,Team: Expected Flow (after fix):\n    User->>SECURITY: Read SECURITY.md\n    SECURITY-->>User: Clear instructions:<br/>1.7.x supported<br/>Use GitHub Security<br/>Advisories or Discord\n    User->>Team: Reports vulnerability<br/>via proper channel\n    Team->>User: Response within 48h\n```\n\n<!-- greptile_other_comments_section -->\n\n<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-27T16:50:05Z",
      "mergedAt": null,
      "additions": 21,
      "deletions": 0
    }
  ],
  "codeChanges": {
    "additions": 448,
    "deletions": 95,
    "files": 14,
    "commitCount": 1
  },
  "completedItems": [
    {
      "title": "V2.0.0: fixed a2a example and related protobuf compatibility and runtime errors",
      "prNumber": 6386,
      "type": "bugfix",
      "body": "# Relates to\r\nFixes runtime errors in the python & rust a2a server example.\r\n\r\n# Risks\r\nLow. Changes are isolated to the python package and the a2a example server. The fixes ensure correct handling of protobuf messages which strictly enforc",
      "files": [
        "bun.lock",
        "examples/a2a/python/README.md",
        "examples/a2a/python/requirements.txt",
        "examples/a2a/python/server.py",
        "examples/a2a/rust/Cargo.lock",
        "examples/a2a/rust/src/main.rs",
        "packages/python/elizaos/__init__.py",
        "packages/python/elizaos/basic_capabilities/providers/action_state.py",
        "packages/python/elizaos/runtime.py",
        "packages/python/elizaos/services/message_service.py",
        "packages/python/elizaos/types/database.py",
        "packages/python/elizaos/types/primitives.py",
        "packages/python/elizaos/utils/__init__.py",
        "plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "j4lambert",
      "avatarUrl": "https://avatars.githubusercontent.com/u/36552964?v=4",
      "totalScore": 15.545521226679158,
      "prScore": 15.545521226679158,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "borisudovicic",
      "avatarUrl": "https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4",
      "totalScore": 10,
      "prScore": 0,
      "issueScore": 10,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 4.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 4.5,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 1,
  "mergedPRs": 1,
  "newIssues": 5,
  "closedIssues": 2,
  "activeContributors": 5
}