---
title: "Admin Canary Promote"
method: POST
path: "/admin/canary/{platform}/promote"
---

# Admin Canary Promote

`POST /admin/canary/{platform}/promote`

## Request

- Base URL: `https://api.local-mcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.local-mcp.com/admin/canary/{platform}/promote`
- Auth: none declared. Required headers: `x-admin-key`

#108 condition 1 — release the canary to everyone, with NO second CI run (the release's
`canario` stage already uploaded the artifacts to R2 and registered the row). darwin: flip
`is_latest` to the canary version — the row already carries the artifact the canary verified,
so the same-artifact guarantee holds by construction. windows: clearing the canary lets the
`win-%` row become the public highest (PR3 adds its serve-time exclusion). Then clear the
canary. 409 if no canary is set; idempotent; audited.

#128 review:
- BLOCKER 2 — the 3.0.417 gate: at least one ACTIVE canary machine must have reported the canary
  version (installed or running it), or the release is unvalidated → 409 with the per-machine
  status. `force=true` overrides it (audited).
- BLOCKER 1 — inside the lock, re-check that the canary is a darwin row STRICTLY newer than the
  fleet, or promoting it would downgrade everyone.

## Path parameters

- `platform` string, required

## Query parameters

- `force` boolean

## Headers

- `x-admin-key` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/local-mcp/apis/lmcp-api.md) · [All operations](https://skmtc.dev/local-mcp/apis/lmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/local-mcp/apis/lmcp-api/revisions/f1f1c502623a?raw)
