nexo-poller-tools
Reusable poller building blocks —
OutboundDelivery,LlmTurnBuilder,MirroredFlow— that built-in pollers (gmail, rss, agent_turn, google_calendar, webhook_poll) and extension-loaded pollers compose to deliver scheduled work to agents.
This crate is part of Nexo — a multi-agent Rust framework with a NATS event bus, pluggable LLM providers (MiniMax, Anthropic, OpenAI-compat, Gemini, DeepSeek), per-agent credentials, MCP support, and channel plugins for WhatsApp, Telegram, Email, and Browser (CDP).
- Main repo: https://github.com/lordmacu/nexo-rs
- Runtime engine:
nexo-core - Public docs: https://lordmacu.github.io/nexo-rs/
What this crate does
OutboundDelivery— uniform "ship this to channel X with this body" primitive every poller eventually emits. Renders to the sameplugin.outbound.<channel>envelope a manual send-tool emits.LlmTurnBuilder— composes a synthetic LLM turn from a pollable event (e.g. an inbound RSS item) so the agent reasons over it the same way it would a user message. Phase 20agent_turnpoller builds on this.MirroredFlow— keeps a TaskFlow record in sync when a poller produces work that should also be tracked durably. The host sees a tick, asksMirroredFlowto record + then the runtime's TaskFlow tools see the same flow ID.- Result classification helpers —
classify_transient,classify_permanent,classify_skippedfor poller authors who want consistent retry semantics.
Why a separate crate
nexo-poller is the core scheduler + cursor + DLQ runtime;
nexo-poller-tools is what built-ins + extensions use to
produce events. Splitting them lets the scheduler stay
transport-agnostic while the tools side carries the
opinionated "this is what an inbound poller event looks like"
shape.
Install
[]
= "0.1"
Documentation for this crate
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.