One-line Summary
An incident command workbench that gives AI agents evidence-linked investigation tools while operators control remediation and verify recovery.
Problem
When a small engineering team faces an outage, diagnostic clues, mitigation decisions, and stakeholder updates are scattered. A plausible AI explanation is not enough: responders need to see the supporting evidence, know which changes were authorized, and prove the service recovered.
Solution
SignalPilot unifies the incident lifecycle in a Spring Boot service and an incident dashboard. An AI client can discover and invoke nine MCP tools over Streamable HTTP. The operator can inspect source evidence, review proposed actions, run a clearly labeled mitigation simulation, and resolve the incident only after two consecutive healthy observations. A persisted timeline becomes a Markdown postmortem.
Why This Matters
SignalPilot explores how AI agents can help a small on-call team without erasing uncertainty or confusing recommendations with authority. Judges can reproduce both success and failure paths without production access, hardware, or a model key. No measured reduction in incident duration or real customer outcome is claimed.
How We Used AI
The self-hosted MCP server provides structured observations and workflow tools to a connected AI client. The client brings its model. Server tools return evidence IDs, alternate hypotheses, and explicit uncertainty, giving the model durable context instead of an unstructured log dump.
The dashboard's local evidence evaluator, basic command router, status drafts, and default briefing are deterministic; they are labeled accordingly and are not presented as model inference. An optional Amazon Bedrock Converse adapter requests a structured, evidence-grounded commander brief with explicit citations, uncertainty, and a next step. The server rejects unknown evidence references, malformed output, and prompt or secret-leak patterns before persisting a brief. That cloud path has not been verified with live AWS credentials and is not claimed as an AWS mini-challenge achievement.
How We Used Codex
Codex helped compare project directions, implement the Java service and interface, write integration tests, debug a Spring bean-name collision, verify the MCP server through a separate SDK client, test the browser lifecycle, capture screenshots, and generate an English narrated demo. A later production-readiness pass added scoped operator and MCP credentials, bounded request handling, rate and concurrency controls, replay-safe idempotency, Flyway migrations, structured model-output validation, dependency and SBOM checks, and accessibility regression coverage.
Key Features
- Three reproducible incident scenarios plus custom evidence intake.
- Evidence-linked hypotheses, alternative explanations, and abstention when evidence is insufficient.
- Human approval for simulated mitigation; new evidence invalidates old proposals and approvals.
- Revision preconditions, database row locks, and replay-safe idempotency.
- A recovery gate requiring two consecutive observations below 1% errors and 500 ms p95.
- Customer, engineering, and executive update drafts; nothing is sent automatically.
- A persisted incident timeline and downloadable Markdown postmortem.
- A responsive, keyboard-operable dashboard with separate operator and MCP credentials.
- Nine real MCP tools using the official Spring AI transport implementation.
Architecture
Java 21 → Spring Boot 4.0.8 → Spring AI 2.0.1 MCP server → shared incident service → transactional JDBC persistence. Flyway owns the schema; H2 supports the credential-free local demo, while the PostgreSQL driver and migrations support a production database. Evidence, timeline events, recovery metrics, and idempotency records are stored in bounded, indexed tables. A vanilla JavaScript dashboard uses the same domain logic through REST. Optional AWS SDK Bedrock Converse produces a validated textual briefing and cannot mutate incident actions.
The MCP integration negotiates protocol 2025-11-25 and uses Streamable HTTP. There is no claim of a production Alexa+ account link, certified Alexa skill, event-sourced backend, or tamper-proof audit store.
Try It Yourself
SignalPilot is a reproducible local application rather than a hosted production service. Follow the repository quick start, or watch the recorded walkthrough below. The core workflow needs only JDK 21—no paid service, cloud credentials, or model key.
- Clone the repository and install JDK 21.
- Run
./mvnw verify(Windows:.\mvnw.cmd verify). - Run
java -jar target/signalpilot-1.0.0.jarand openhttp://127.0.0.1:8091. - Launch the checkout scenario, analyze the evidence, approve the proposal, and run the simulation.
- Demonstrate a failed recovery check, then pass two consecutive checks and resolve the incident.
- Run
npm ci && npm run test:mcpagainst the running app to exercise real tools through an independent MCP SDK client.
Local data persists under data/. Bedrock and browser microphone access are optional.
Demo Video
Watch the 2½-minute SignalPilot demo. It follows a checkout incident from evidence-linked investigation through operator approval, a failed recovery check, two verified healthy observations, a customer update, postmortem export, and live MCP tool calls. It also demonstrates abstention when the available evidence is insufficient. The narration is synthetic.
Gallery Highlights
- Evidence-linked investigation with telemetry, hypotheses, and a human-approved response plan.
- Verified recovery after two healthy checks, with the full incident timeline and outcome visible.
- Live Streamable HTTP MCP handshake, tool discovery, and a real SignalPilot tool invocation.
Verification and Artifacts
- Source repository and run instructions
- SignalPilot v1.0.0 release
- Successful CI, security, and provenance run
Known Limitations
All operational telemetry and remediation are simulated. Hypothesis strength is rule-based and not a calibrated probability. Evidence sources are supplied by callers rather than independently authenticated. The cloud briefing and native microphone path are not verified with live accounts or devices. Scoped static credentials are not multi-user identity, OAuth, or tenant isolation; rate limiting is process-local. PostgreSQL and the hardened Docker configuration are included but have not been exercised in the local environment because the Docker engine was unavailable. No production availability or scale claim is made.
Built With
- aws-sdk
- axe
- docker
- flyway
- github-actions
- h2
- java
- javascript
- model-context-protocol
- playwright
- postgresql
- spring-ai
- spring-boot