Recommended flows are maintained starting points. The catalog is public, versioned JSON, so the Cloud dashboard and the flows CLI discover the same identifiers, defaults, requirements, and source instead of keeping separate copies.
Software Garden
Software Garden is the display name of the first recommended flow. Its stable catalog and authored flow ID is software-factory: a GitHub issue starts implementation, deterministic repository checks, adversarial review, and a pull request for a human decision.
The released source uses Claude Code for implementation and review, so catalog version 2 allows and defaults only that harness. A future catalog version can point at a new released source with a different requirement; clients do not rewrite the authored flow.
Software Garden currently supports GitHub repositories. Deploy one listener per repository using the direct-source API below. The catalog deliberately does not define Babysitter behavior. Babysitter is a flow plugin installed onto Software Garden, not a recommended flow of its own.
Catalog API
The stable endpoints are:
GET https://agentrelay.com/api/v1/flows/catalog
GET https://agentrelay.com/api/v1/flows/catalog/software-factoryThe list response starts with schemaVersion: 1 and catalogVersion: 2. Every flow has a stable id, its own numeric version, display copy, repository-host support, trigger defaults, required/default activation inputs, and an immutable source reference.
The catalog does not copy or generate the flow body. source names the canonical AgentWorkforce/flows owner, repository, path, release tag, full commit SHA, GitHub blob and raw URLs, media type, and SHA-256 content digest. Both URLs contain the commit SHA, never a mutable branch:
https://github.com/AgentWorkforce/flows/blob/8b33ebab8347514f80d9da5a81206a087f641714/examples/software-factory/software-factory.flow.tsCI and the production release workflow resolve the release tag, fetch the pinned raw file with a size bound, and verify the digest. A broken, moved, mutable, or drifted source therefore fails before the catalog can ship. For the direct-source deploy API, the client downloads source.rawUrl, verifies the bytes against source.sha256, and submits that source text; Cloud stores it as the deployment's source snapshot.
Activation contract
The current POST /cloud/api/v1/flows/deploy endpoint accepts the same direct-source listener body as flows deploy. Authenticate with a Cloud bearer session, download and verify the catalog source, then submit:
{
"workspaceId": "workspace-id",
"name": "Platform Garden",
"workflow": "software-factory",
"source": "<verified TypeScript source text>",
"handoffId": "<UUID generated for this deployment>",
"mode": "activate",
"repository": { "owner": "acme", "name": "api" },
"sources": [{ "provider": "github", "settings": { "repository": "acme/api" } }],
"inputs": {
"approver": "github:@octocat",
"agents": ["claude"]
}
}Replace the sample repository and approver with the user's choices. approver is required; for GitHub use github:@handle, not a Google email. Fill agents from the catalog defaults and supported harnesses. workflow labels the flow; it does not cause Cloud to fetch the source. The endpoint requires inline source text and one repository, not a flowId/repositories catalog request or the browser onboarding handoff.
Set the GitHub trigger's settings.repository to the selected owner/name; Cloud does not derive that filter from repository, and an empty filter can wake the listener for other repositories in the workspace.
For several repositories, submit one body per repository with its own trigger filter, distinct name, and handoffId; reuse that ID when retrying the same deployment. Connect required tools and coding agents before activation. Success is HTTP 201 with agentId and status: "listening"; verify the saved listener through GET /cloud/api/v1/flows/listeners/<agentId>. See the complete agent signup instructions for authentication, connections, and retry behavior.