Sendo Worker Plugin - An intelligent orchestrator that dynamically analyzes agent capabilities, executes data collection actions, and generates LLM-powered recommendations.
The Sendo Worker plugin transforms ElizaOS agents into intelligent analysts by:
- Discovering available actions and providers dynamically
- Categorizing actions via LLM (DATA vs ACTION)
- Executing analysis actions in parallel
- Generating comprehensive 4-section analyses via LLM
- Recommending contextual actions with execution triggers
- Tracking action execution with async status updates
Key principle: 100% dynamic - zero hardcoded logic. The plugin adapts automatically to any installed plugins.
- Automatically discovers all available actions and providers
- LLM-based categorization (DATA vs ACTION)
- Adapts to new plugins without code changes
- Parallel action execution for performance
- Smart filtering of relevant actions
- Dynamic trigger message generation via LLM
- Real runtime integration (no mocks)
Four comprehensive sections:
- Wallet Overview: Holdings, balances, recent activity
- Market Conditions: Trends, sentiment, opportunities
- Risk Assessment: Exposure, volatility, warnings
- Opportunities: Actionable insights with data attribution
- Context-aware action suggestions
- Confidence scoring and priority ranking
- Ready-to-execute trigger messages
- Estimated impact and gas costs
- Non-blocking action execution
- Real-time status tracking (pending β executing β completed/failed)
- Result storage with error handling
- Database persistence
npm install @sendo-labs/plugin-sendo-workeror with Bun:
bun add @sendo-labs/plugin-sendo-workerimport { sendoWorkerPlugin } from '@sendo-labs/plugin-sendo-worker';
const agent = {
plugins: [
sendoWorkerPlugin,
// ... your other plugins
],
};The plugin exposes REST endpoints for analysis management:
POST /analysisReturns a complete analysis with recommendations based on all available plugins.
GET /analysisReturns list of recent analyses for the agent.
GET /analysis/:analysisId/actionsReturns recommended actions for a specific analysis.
POST /actions/decide
Body: {
decisions: [
{ actionId: "rec-123", decision: "accept" },
{ actionId: "rec-456", decision: "reject" }
]
}Decide on recommended actions:
- accept: Executes the action asynchronously
- reject: Marks as rejected without execution
GET /action/:actionIdReturns current status and result of an action.
SendoWorkerService (src/services/sendoWorkerService.ts)
Main orchestrator with these key methods:
runAnalysis()- Complete workflow orchestratorcategorizeActions()- LLM-based action classificationcollectProviderData()- Provider data collectionselectRelevantDataActions()- Smart action filteringexecuteAnalysisActions()- Parallel action executiongenerateAnalysis()- LLM-powered 4-section analysisgenerateRecommendations()- Context-aware suggestionsexecuteActions()- Async action execution
analysis_results
- Stores complete analyses with LLM-generated insights
- Links to plugin attribution
recommended_actions
- Stores action recommendations
- Tracks execution status (pending/executing/completed/failed)
- Stores results and errors
actionResult utilities (src/utils/actionResult.ts)
getActionResultFromCache()- Retrieve ActionResult from runtime stateCacheextractErrorMessage()- Clean error message extraction
- Node.js 18+ or Bun
- PostgreSQL database (for persistence)
bun run buildbun run devbun run typecheckplugin-sendo-worker/
βββ src/
β βββ services/ # SendoWorkerService (main orchestrator)
β βββ routes/ # REST API endpoints
β βββ schemas/ # Drizzle ORM database schemas
β βββ templates/ # LLM prompt templates
β βββ types/ # TypeScript type definitions
β βββ utils/ # Helper functions
β βββ index.ts # Plugin export
βββ package.json
βββ tsconfig.json
βββ tsup.config.ts
Contributions welcome! Please ensure:
- Code follows existing patterns
- Tests pass (when implemented)
- TypeScript types are correct
- Documentation is updated
MIT
- ElizaOS: https://github.com/elizaos/eliza
- Sendo Labs: https://github.com/Sendo-labs
Built with β€οΈ by Sendo Labs