Inspiration

Independent IT professionals and small Managed Service Providers (MSPs) face a constant operational dilemma: the sheer volume of minor pings, transient network alerts, and routine status inquiries fragments deep focus, causing severe context-switching. Yet ignoring notifications isn't an option — missing a core infrastructure failure or breaching a customer Service Level Agreement (SLA) can destroy client trust.

We set out to build an agent that operates with quiet resilience. Instead of yet another noisy dashboard that demands constant human oversight, we designed Go-Dispatch to run silently in the background — absorbing routine diagnostics, drafting context-aware updates, and surfacing to a human only when high-stakes authorization or emergency, boots-on-the-ground dispatch is required.

Who it's for: MSPs, SysAdmins, and on-call DevOps engineers who carry the pager after hours.


What It Does

Go-Dispatch is an autonomous operational triage and dispatch agent built on the Strands Agents SDK and powered by Amazon Bedrock (Anthropic Claude Sonnet 4.5). It processes incoming support tickets, system telemetry, and alert webhooks through a four-tier decision engine:

  • Tier 1 — Silent Auto-Resolve: Runs a real ICMP ping diagnostic to verify transient network blips, confirms the service self-healed, and logs a resolution note silently. The engineer is never paged.
  • Tier 2 — Asynchronous Queueing: Ingests non-urgent inquiries, consults the client runbook, and drafts a diagnostic reply queued for later review — without interrupting the technician.
  • Tier 3 — Proactive SLA Defense: Tracks contract response timers and escalates with a ready-to-send response before a breach occurs.
  • Tier 4 — Immediate Dispatch: Detects catastrophic outages, confirms them with a live ping (100% packet loss = hard-down), compiles an actionable field dossier (site address, gateway topology, recommended spare parts, SLA window), and mobilizes a technician — but only after a human approves the dispatch.

The result is zero-distraction operation: 90% of alert noise is handled silently, and a human is pulled in only for the decisions that genuinely need one.


How We Built It

  • Agent Orchestration: Built on the Strands Agents SDK, defining an autonomous reasoning loop over modular Python @tool functions for diagnostics, knowledge lookups, ticket updates, and technician dispatch.
  • Foundation Model: Amazon Bedrock running Anthropic Claude Sonnet 4.5 via a cross-region inference profile, enabling reliable multi-step tool reasoning and deep context extraction from client runbooks.
  • Runtime & Service: The agent executes through the Amazon Bedrock Runtime (Converse API) via Strands, wrapped in a FastAPI service that exposes synchronous and asynchronous (202 + background worker) webhook ingestion, incident status polling, and a health check — plus an interactive Rich CLI harness for live demos. (Architected to deploy onto Amazon Bedrock AgentCore for managed serverless hosting — see What's Next.)
  • Real Diagnostics: execute_ping_diagnostic runs an actual OS-level ICMP probe (cross-platform), parsing packet loss and round-trip latency so the agent's escalation decisions are grounded in measured reality, not just alert wording.
  • Knowledge Retrieval: Integrated Amazon Bedrock Knowledge Bases for client runbook / topology retrieval, with a deterministic mock-runbook fallback when no KB is attached.
  • State & Alerting: Amazon DynamoDB for ticket state and client SLA metadata, and Amazon SNS for critical technician paging. Both degrade gracefully — when a resource isn't provisioned, the agent falls back to local logging and truthfully reports that no page was sent, rather than fabricating a dispatch.
  • Human-in-the-Loop: Native Strands BeforeToolCall interrupt hooks pause autonomous execution and require explicit human approval before any physical dispatch or billable action; once approved, the technician is paged via Amazon SNS. Every decision is recorded in an audit log.
  • Autonomous SLA Daemon: A background countdown monitor tracks active tickets and proactively raises a Tier-3 warning once a ticket crosses its SLA threshold.
  • Quality: 36 automated tests cover the tools, the API, the approval gate, the SLA daemon, and graceful-degradation paths.

Stack: Strands Agents SDK · Amazon Bedrock (Claude Sonnet 4.5) · Bedrock Knowledge Bases · Amazon DynamoDB · Amazon SNS · Python 3.13 · FastAPI · Boto3 · Rich · Pydantic.


Challenges We Ran Into

  • Calibrating Human-in-the-Loop boundaries: Cleanly separating what the agent may do autonomously from what requires a human. We tuned the system prompt and the approval hook to prevent alert fatigue without risking a silent failure on an edge-case outage.
  • Grounding decisions in reality: Early runs escalated on alert wording alone. We rebuilt the diagnostic path around real ICMP measurement and instructed the agent to let measured packet loss — not the alert's tone — decide whether an outage is genuine.
  • Trustworthy degradation: An agent that claims it paged a technician when it didn't is dangerous. We made every dispatch report state exactly what did and didn't happen, so the audit trail never lies — even when DynamoDB or SNS is offline.
  • Multi-step tool orchestration in Strands: Structuring tools so the agent chains runbook lookup → diagnostic → dossier compilation into one coherent workflow before deciding whether to interrupt a human.

Accomplishments That We're Proud Of

  • True zero-distraction operation: Continuous background triage that keeps the engineer's feed clear of routine noise while never missing a real emergency.
  • Sub-minute emergency mobilization: A complete site-failure field dossier — location, diagnostic findings, recommended spare parts, SLA window — synthesized instantly on critical detection.
  • A human-governed agent: A real approval gate, via native Strands interrupt hooks, that holds physical dispatch until a person signs off — the "Agents for Humans" thesis made concrete.
  • An agent that tells the truth: Graceful degradation across Knowledge Bases, DynamoDB, and SNS, with honest reporting of every outcome — production-grade trustworthiness, not a happy-path demo.

What We Learned

Working with the Strands Agents SDK reinforced the power of decoupled, tool-driven agent architectures: clear tool contracts let a foundation model act as a reliable operational dispatcher rather than a chatbot. We learned that the hardest part of an autonomous ops agent isn't the reasoning — it's the boundaries: knowing when not to act, and being honest about what actually happened. Designing for graceful degradation from day one turned "missing infrastructure" from a failure mode into a feature.


What's Next for Go-Dispatch

  • Managed deployment on Amazon Bedrock AgentCore: Move from local/FastAPI execution to AgentCore for a production-grade, secure, serverless runtime.
  • Automated vendor dispatch: Interface directly with hardware-vendor RMA and ISP outage APIs to open upstream tickets automatically.
  • Two-way voice & SMS triage: Let technicians in transit authorize work orders hands-free.
  • Multi-tenant MSP fleet management: Route multi-technician dispatch by geographic proximity and real-time workload.

Built With

Share this project:

Updates