Skip to content
AI-Assisted Development

Launch handoff

Explanation · Updated Jun 2026

Launch handoff

Quake AI launch handoff lets you declare what you want to run (runtime, environments, resources, optional services) in a versioned quake.yaml file. Quake AI validates that manifest and emits a downloadable handoff packet. The packet is self-contained: an agent with OpenTofu, Docker, and Quake AI credentials can execute it directly, or a human operator or the cloud control plane can run the same steps.

This platform validates intent and assembles references. It does not run builds, push container images, provision preview URLs, or enforce preview TTL on your behalf.

What you author#

Place quake.yaml at the root of your application repository. The file uses schema version 1 and declares:

  • Application identity (name, runtime)
  • How source is built (source.build, optional dockerfile path)
  • One or more named environments (production, preview, or custom keys) with branch rules, flavor aliases, optional domain, and optional preview TTL
  • Optional backing services (for example object storage) mapped to IaC templates
  • Secret names only (never values)
  • Whether to attach an evidence bundle stub (evidence: true)

Field names, enum values, and resolution rules are documented on the quake.yaml reference page. Machine-readable JSON Schema is published at https://docs.quake.ai/schema/quake-manifest.v1.json.

Branch-to-environment workflow#

Typical git workflow maps branches to environments declared in the manifest:

Git eventEnvironmentLaunch action
Push a feature branch or open a pull requestpreview (branch pattern such as "*")preview
Merge to mainproduction (branch: main)deploy or promote
Revert a bad production deployproductionrollback

The manifest records branch rules and flavor aliases. The control plane (or a human following the handoff packet) maps the git revision to the correct environment entry, applies the resolved IaC templates, and runs the container or VM workload.

Preview environments often set ttl_hours (for example 72). The manifest carries that value as advisory metadata; teardown scheduling lives on the control plane.

Handoff model#

Quake AI launch handoff flowAn IDE agent authors quake.yaml, calls MCP validate and prepare tools, receives a handoff packet, and an agent or operator executes build and deploy outside this platform.

Agent in IDE

quake.yaml

MCP server

Handoff packet

Agent or operator

Click to zoom
Launch handoff flow: the agent authors quake.yaml, the MCP server validates and prepares a packet, and a consumer executes the packet.
  1. Author quake.yaml in your repo (or ask your IDE agent to draft it from the reference page).
  2. Validate by calling the validate_launch_manifest MCP tool with the parsed manifest JSON. Fix schema, flavor, or template resolution errors before continuing.
  3. Prepare by calling prepare_launch with the manifest and an action (deploy, preview, promote, or rollback). On success you receive a PortableArtifact whose JSON content is the handoff packet plus a Markdown preview for humans.
  4. Execute the packet. An agent or operator runs resolved.build.steps to produce the image, applies the templates in resolved.template_plan order (binding the resolved variables and container_env), and reads the runtime outputs to verify. DNS, TLS, and managed preview URLs happen outside this documentation platform.

Tool inputs, response shapes, and artifact types are documented in the AI tools reference.

Handoff packet contents#

A successful prepare_launch call returns JSON content with these top-level fields:

FieldDescription
request_idStable id with lreq_ prefix (for example lreq_20260618-a1b2c3d4e5f6)
actiondeploy, preview, promote, or rollback
createdISO 8601 timestamp when the packet was generated
source_shaOptional git commit SHA you supplied
manifestNormalized manifest after validation
resolvedTarget environment, flavor alias, IaC template paths, preview ttl_hours, plus build and template_plan (see below)
evidence_bundlePending stub (see below)
next_stepsStep-by-step instructions for the consumer (agent or operator)

The resolved block carries everything a consumer needs to execute without re-deriving it:

resolved fieldDescription
buildBuild recipe: method, dockerfile, steps (build, push, set container_image), and the <registry> placeholder to replace
template_planOrdered apply plan. Services apply before the runtime. Each entry lists variables (with value: null where you supply it), container_env, provides (outputs), consumes, and depends_on

The prepare_launch action selects which environment entry is resolved:

ActionRequired environment key
previewpreview
deploy, promote, rollbackproduction

If the manifest omits the required environment, validation fails and no packet is emitted.

Evidence bundle#

When evidence: true (or by default for prepared launches), the packet includes an evidence bundle attachment. At handoff time the bundle is a pending stub: deploy id, build logs, IaC plan output, preview URL, and gate results are null or pending. The control plane fills those fields after it runs build, apply, and health checks.

Every stub includes validation gate rows for at least:

  • no-leaked-secrets
  • health-check
  • manifest-schema
  • iac-template-resolved

Gate statuses start as pending. A consumer updates them to pass, fail, warn, or skip as work completes.

Runtime and template resolution#

runtime valueResolved IaC templateNotes
containercontainerized-appGolden-path CPU VM plus Docker lane
gpu(none)Enum accepted; validation emits a warning only

Optional services[] entries resolve to additional templates and apply before the runtime so it can consume their outputs:

services[].typeResolved IaC templateApp-facing container_env key
object-storages3-storage-acl<NAME>_BUCKET_NAME, <NAME>_BUCKET_ARN
postgresself-managed-postgres<NAME>_DATABASE_URL
mysqlmysql-database<NAME>_DATABASE_URL
redisredis-cache<NAME>_REDIS_URL
vectorqdrant<NAME>_QDRANT_URL
analyticsanalytics-umami<NAME>_ANALYTICS_URL
inference-gatewayinference-gateway<NAME>_GATEWAY_URL
supabasesupabase-selfhost<NAME>_SUPABASE_URL

Each service entry's provides lists its outputs (for example a Postgres private_ip and database_url); the runtime entry's depends_on names the service template slugs, and its consumes references the outputs it wires in. Passwords stay name-only: declare them in secrets and supply the value out of band. The supabase type resolves to the supabase-selfhost template, the full BaaS stack on a single instance; see the Supabase self-host deployment for a step-by-step build. See the containerized app template for how runtime: container maps to OpenTofu parameters, and the quake.yaml services reference for the full resolution table.

Flavor aliases#

Environment resources fields use aliases, not raw flavor names:

AliasQuake AI flavor
cpu-standardm2a.large
cpu-smalls1a.small

Validation resolves aliases against the production flavor catalog. Use cpu-standard for production-sized workloads and cpu-small for preview defaults.

What this platform does not do#

The launch handoff surface stops at the packet download. Out of scope for this documentation platform:

  • Running Dockerfile or buildpack builds
  • Pushing images to a registry
  • SSH or remote exec on instances
  • Assigning preview URLs, TLS certificates, or DNS records
  • Enforcing preview TTL timers
  • Persisting evidence to object storage

The agent or operator executing the packet handles those steps using resolved.build, resolved.template_plan, and next_steps. A managed control plane handles them for the non-agent path.

See also#

Was this page helpful?