Routines
The Desktop Routines tab runs saved, parameterized investigations against the
active project. Routine runs are recorded in the project runtime store and can
also write Markdown reports under .boatman/routines. Each execution also
creates a new chat session, so you can continue from the completed routine,
ask follow-up questions, or hand the agent the next investigation step with the
same project and routine context.
Boatman loads the routine list from the active project every time the project changes. Built-in routines are always available, and project routines can be added in either:
<project>/.boatman/routines.json
<project>/.boatman/routines/*.jsonProject routines may define a full routine or extends a built-in routine and
set project-specific defaults:
{
"routines": [
{
"id": "daily-employer-gql",
"extends": "datadog-gql-slow-queries",
"name": "Daily Employer GraphQL",
"schedule": "0 8 * * *",
"defaults": {
"graph_area": "employer",
"service": "employer-graphql",
"top_n": "10"
},
"models": {
"plan": "claude-opus-4-6",
"implementation": "claude-sonnet-4-5",
"skills": "claude-sonnet-4-5"
}
}
]
}The Routines tab renders inputs from the selected routine's parameters, so a
project can add new routines without changing the desktop frontend.
Model Routing
Routines may define a models profile with phase-specific overrides:
plan: model for/planand planning phasesimplementation: model for code changes and refactor workskills: model for review skills and other skill execution
Any empty field falls back to the model selected in the Routines tab. The Datadog remediation loop passes the resolved profile into each child BoatmanMode run.
Datadog GraphQL Slow Queries
The first built-in routine is datadog-gql-slow-queries.
It connects the model to Datadog MCP, investigates the slowest GraphQL operations for a graph area, and returns a Markdown report with:
- executive summary
- Datadog query assumptions
- top slow operations table
- clustered likely causes
- remediation plan and validation checks
- a machine-readable
boatman_remediation_candidatesblock - automatic remediation summary with branch and draft PR links when Boatman finds credible fixes
- follow-up questions or missing telemetry
When telemetry points to a high-confidence code or schema remediation, Desktop
does the routing automatically after discovery. It selects up to
max_remediations candidates, starts a BoatmanMode child run for each one,
creates a fresh worktree from the configured base branch, runs planning,
implementation, targeted validation, peer-review, lydia-code-review,
feedback refactors, and leaves the resulting PR as a draft. If the evidence is
too weak, it stops after the investigation report and explains what is missing.
Setup
- Open a project.
- Open the Routines tab.
- Click Check. If Datadog is not authenticated, click Authenticate.
- Complete the Datadog MCP auth flow in the terminal window opened by Boatman.
- Enter graph area, top N, lookback, environment, optional service, and maximum remediations.
- Click Run Routine.
Desktop auth keeps Datadog OAuth credentials in Claude Code's MCP auth store.
Boatman first reuses an existing healthy Datadog MCP server, including
boatman-datadog-mcp, datadog-mcp, or plugin:datadog:datadog-mcp. If the
Claude plugin is missing, unauthenticated, or points at Datadog's legacy
/api/unstable/mcp-server/mcp endpoint, Authenticate creates
boatman-datadog-mcp against the current Datadog MCP endpoint:
https://mcp.datadoghq.com/v1/mcp?toolsets=core,llmobs,alerting,apm,onboardingIf you use a non-US1 Datadog site, set Datadog Site in Settings or DD_SITE
before authenticating so Boatman creates the regional MCP URL. Boatman can still
fall back to API-key MCP configuration from Datadog API Key, Datadog App Key,
and optional Datadog Site.
Output
Routine reports are written to:
<project>/.boatman/routines/datadog-gql-slow-queries/<run-id>.mdThe same run is also visible in the Runtime tab because routine executions use the provider-neutral runtime recorder. The run ID and routine session ID match, so the Runtime tab and the chat session point at the same execution.