condensate

Reference

HTTP route index

Every route on the runtime's listener, generated from the routers main.ts joins.

This page is generated from the routers that packages/agents-host/src/main.ts joins into the runtime's listener. Do not edit it by hand. Run bun run docs:http-routes to regenerate it, and CI fails when it is out of date.

It lists the 149 routes these files in packages/agents-host/src register, sorted by path: http.ts, account-tokens.ts, account-login.ts, mcp-doors.ts, account-reset-credits.ts, github.ts, github-write-doors.ts, pr-overlap-pass.ts, host-load.ts, previews.ts, main.ts. Runtime HTTP API explains them by task and lists the error codes.

A path that contains ${...} is a template. The router registers it once for each value of that expression.

These files also register routes, but on a different listener, so this page leaves them out:

  • account-leases.ts: Its router serves the optional lease listener that Tailscale Serve exposes. The runtime's listener has only its POST /accounts/:name/lease, which main.ts registers.
  • reader.ts: It is a separate read-only process, bun src/reader.ts <data-directory> <port>, that serves its route on its own port.

The source is the file that registers the route. The handler is the expression the route runs, as written there. The request schema is the one the handler decodes its body or query with. The response schema is one the handler encodes with. Both are read from the handler's own declaration in its source file. A handler declared in another file, or one that builds its response without a schema, shows no schema.

MethodPathSourceHandlerRequest schemaResponse schema
GET/accountsaccount-tokens.tslist
POST/accountsaccount-login.tscreateCreateAccountRequest
GET/accounts/${spec.id}/callbackmcp-doors.tscallback
GET/accounts/${spec.id}/login/:statemcp-doors.tsloginStatus
POST/accounts/${spec.id}/login/startmcp-doors.tsstart
POST/accounts/${spec.id}/preparemcp-doors.tsprepare
GET/accounts/${spec.id}/statusmcp-doors.tsstatus
POST/accounts/:name/leasemain.tsleases.lease
GET/accounts/:name/login/:stateaccount-login.tsstatus
POST/accounts/:name/login/completeaccount-login.tscompleteLoginCompleteRequest
POST/accounts/:name/login/startaccount-login.tsstartLoginStartRequest
POST/accounts/:name/reenableaccount-tokens.tsreenable(inline)
GET/accounts/:name/reset-creditsaccount-reset-credits.tslist
POST/accounts/:name/reset-credits/consumeaccount-reset-credits.tsconsumeResetConsumeRequest
POST/accounts/:name/tokenaccount-tokens.tstoken
GET/accounts/connectedaccount-tokens.tsconnected
POST/accounts/model-refusals/clearaccount-tokens.tsclearRefusalsClearRefusalsRequest
POST/accounts/opencodeaccount-login.tscreateOpencodeCreateOpencodeAccountRequest
GET/attentionhttp.tsattentionSnapshot
GET/attention/:idhttp.tsattentionItem
GET/attention/changeshttp.tsattentionChanges
GET/attention/followhttp.tsattentionFollow
GET/code/fileshttp.tscodeFiles
GET/code/outlinehttp.tscodeOutline
GET/code/readhttp.tscodeRead
GET/code/rootshttp.tscodeRoots
POST/code/searchhttp.tscodeSearchCodeSearchBody
GET/drainhttp.tsdrainStatus
POST/drainhttp.tsdrainArmDrainBody
DELETE/drainhttp.tsdrainDisarm
POST/drain/claimhttp.tsdrainClaimDrainClaimBody
DELETE/drain/claimhttp.tsdrainReleaseDrainReleaseBody
GET/github/:owner/:repo/prsgithub.tslistDoor
GET/github/:owner/:repo/prs/:number/checksgithub.tsdoor(reads.checks, true)
GET/github/:owner/:repo/prs/:number/commentsgithub.tsdoor(reads.comments, true)
GET/github/:owner/:repo/prs/:number/diffgithub.tsdoor(reads.diff, true)
POST/github/overlappr-overlap-pass.tsoverlapConfig
GET/healthhttp.tshealthRoute
GET/host-loadhost-load.tsEffect.flatMap(read, (reading) => HttpServerResponse.json(reading, { headers: { "cache-control": "no-store" } }))
GET/incidentshttp.tsincidentsSnapshot
GET/keeper/spawn-pausehttp.tsspawnPauseStatus
POST/keeper/spawn-pause/clearhttp.tsspawnPauseClearSpawnPauseClearBody
GET/limitshttp.tslimitsRoute
GET/livehttp.tsliveRoute
GET/live-activityhttp.tsliveActivityRoute
GET/metricshttp.tsmetricsRoute
GET/metrics/cost-per-merged-prhttp.tscostRoute
GET/metrics/estatehttp.tsmetricsEstate
GET/metrics/historyhttp.tsmetricsHistory
GET/metrics/keeperhttp.tsmetricsKeeper
GET/peershttp.tspeersRoute
POST/peers/externalhttp.tsregisterExternalPeerExternalPeerBody
DELETE/peers/external/:namehttp.tsunregisterExternalPeer
GET/previewspreviews.tslist
POST/previewspreviews.tscreatePreviewBody
DELETE/previews/:idpreviews.tsremove
GET/rooms/:idhttp.tsroomRoute
POST/rooms/:id/finalizehttp.tsfinalizeRouteRoomFinalizeBody
POST/rooms/:id/roundshttp.tsfireRoundRouteRoomRoundBody
GET/rooms/:id/rounds/:nhttp.tsroundRoute
GET/rooms/capabilitieshttp.tsroomCapabilitiesRoute
POST/spawnhttp.tsspawnSpawnBody
GET/threadshttp.tsthreads
GET/threads/:idhttp.tsthread
DELETE/threads/:idhttp.tssetArchived("archived")
GET/threads/:id/aguihttp.tsagui
GET/threads/:id/agui-pagehttp.tsaguiPage
POST/threads/:id/approvals/:approvalIdhttp.tsresolveApprovalApprovalBody
GET/threads/:id/attachmentshttp.tsattachments
GET/threads/:id/compacthttp.tscompactStatus
POST/threads/:id/compacthttp.tscompactCompactBody
POST/threads/:id/eventshttp.tsappendEventAppendableEventBody
GET/threads/:id/followhttp.tsfollowLog
POST/threads/:id/forkhttp.tsforkForkBody
POST/threads/:id/gatehttp.tsgateGateBody
POST/threads/:id/handoffhttp.tshandoffHandoffInput
GET/threads/:id/handoffshttp.tshandoffs
POST/threads/:id/handoffs/:fromSeq/accepthttp.tsanswerHandoff(false)(inline)
POST/threads/:id/handoffs/:fromSeq/declinehttp.tsanswerHandoff(true)(inline)
GET/threads/:id/headhttp.tsthreadHead
POST/threads/:id/interrupthttp.tsinterruptInterruptQuery
GET/threads/:id/loophttp.tsloopStatus
POST/threads/:id/loophttp.tsloopStartLoopBody
POST/threads/:id/loop/continuehttp.tsloopContinueLoopContinueBody
POST/threads/:id/loop/stophttp.tsloopStop
GET/threads/:id/memoryhttp.tsthreadMemory
POST/threads/:id/mergehttp.tsmergeMergeBody
POST/threads/:id/messageshttp.tsenqueueEnqueueBody
PATCH/threads/:id/messages/:seqhttp.tseditHeldHeldEditBody
DELETE/threads/:id/messages/:seqhttp.tswithdrawHeld
POST/threads/:id/notifyhttp.tsnotifyNoticeBody
DELETE/threads/:id/notifyhttp.tsclearNotice
GET/threads/:id/operationshttp.tsoperations
POST/threads/:id/operationshttp.tsstartOperationRouteOperationStartBody
GET/threads/:id/operations/:operationhttp.tsoperationStateRoute
POST/threads/:id/operations/:operationhttp.tsrecordOperationRouteOperationRecordBody
GET/threads/:id/questions/:requestIdhttp.tsquestionStatus
POST/threads/:id/questions/:requestId/answerhttp.tsquestionDoor("answer")QuestionAnswerBody, QuestionTargetBody
POST/threads/:id/questions/:requestId/continuehttp.tsquestionDoor("continue")QuestionAnswerBody, QuestionTargetBody
POST/threads/:id/questions/:requestId/dismisshttp.tsquestionDoor("dismiss")QuestionAnswerBody, QuestionTargetBody
POST/threads/:id/recoverhttp.tsrecoverRecoverPayload
POST/threads/:id/restorehttp.tssetArchived("restored")
POST/threads/:id/rolehttp.tsthreadRoleRoleBody
PUT/threads/:id/seat-leasehttp.tsseatLeaseSeatLeaseBody
GET/threads/:id/seatshttp.tsseats
POST/threads/:id/seatshttp.tsseatJoinSeatBody
DELETE/threads/:id/seats/:namehttp.tsseatLeave
POST/threads/:id/seats/replacehttp.tsseatReplaceSeatReplaceBody
POST/threads/:id/sendhttp.tssendSendBody
GET/threads/:id/steeringhttp.tssteering
GET/threads/:id/streamhttp.tsstreamDeltas
GET/threads/:id/subscriptionshttp.tssubscriptions
POST/threads/:id/subscriptionshttp.tssubscribeSubscribeBody
DELETE/threads/:id/subscriptions/:watchhttp.tsunsubscribe
GET/threads/:id/tailhttp.tstail
GET/threads/:id/tool-results/:seqhttp.tstoolResult
GET/threads/:id/turnhttp.tsturnStatus
POST/threads/:id/ui/generatehttp.tsgenerateUiUiGenerateBody
GET/timingshttp.tstimingsRoute
POST/v1/chat/completionshttp.tscompletions.chatCompletions
GET/v1/modelshttp.tscompletions.models
GET/watch/wshttp.tswatchDoors.stream
GET/watcheshttp.tswatchDoors.listAll
POST/watcheshttp.tswatchDoors.add
DELETE/watches/:thread/:idhttp.tswatchDoors.remove
GET/workspaceshttp.tsworkspacesRoute
GET/workspaces/:namehttp.tsworkspaceRoute
GET/workspaces/:name/approvalshttp.tsworkspaceApprovals
GET/workspaces/:name/changeshttp.tsfollowWorkspaceChanges
POST/workspaces/:name/changes/:streamhttp.tsworkspaceChangesControlChangeControl
GET/workspaces/:name/eventshttp.tsfollowWorkspaceEventsStoredEvent
GET/workspaces/:name/github-writes/:keygithub-write-doors.tsstatusRoute
POST/workspaces/:name/github/prs/:number/threads/:threadId/repliesgithub-write-doors.tsreplyRouteThreadReplyRequest
PUT/workspaces/:name/github/prs/:number/threads/:threadId/resolutiongithub-write-doors.tsresolutionRouteThreadResolutionRequest
POST/workspaces/:name/github/prs/:number/threads/resolutiongithub-write-doors.tsbulkRouteBulkResolutionRequest
GET/workspaces/:name/headhttp.tsworkspaceHeadRoute
GET/workspaces/:name/memoryhttp.tsworkspaceMemoryBrowse
POST/workspaces/:name/memory/recallhttp.tsworkspaceMemoryRecallMemoryRecallBody
POST/workspaces/:name/memory/reflecthttp.tsworkspaceMemoryReflectMemoryReflectBody
POST/workspaces/:name/memory/retainhttp.tsworkspaceMemoryRetainMemoryRetainBody
PUT/workspaces/:name/policyhttp.tsworkspacePolicyRouteWorkspacePolicy
GET/workspaces/:name/pr-agent-starts/:keyhttp.tsprAgentStartRoute
POST/workspaces/:name/prs/:number/agentshttp.tsprAgentRoutePrAgentRequest
GET/workspaces/:name/prs/:number/receipthttp.tsreceiptRoute(inline)
GET/workspaces/:name/questionshttp.tsworkspaceQuestions
GET/workspaces/:name/reflexhttp.tsworkspaceReflex
GET/workspaces/:name/roomshttp.tsfindRoomRouteRoomFindQuery
POST/workspaces/:name/roomshttp.tsarmRoomRouteRoomArmBody
GET/workspaces/:name/tailhttp.tsworkspaceTail