Provider-by-provider checklist for credentials and deploy wiring. The Go engine uses REST/SDK for deploy where implemented (see DEPLOY_PROVIDERS).
runfabric.yml (e.g. provider.name: aws-lambda).@runfabric/provider-aws-lambda); otherwise use the built-in engine.runfabric doctor.runfabric deploy.extension/provider/runtime/simulator” + ` plugins must import contracts from the SDK layer only.github.com/runfabric/runfabric/platform/...” + ` in those plugin implementations.Real deploy is opt-in: RUNFABRIC_REAL_DEPLOY=1 or RUNFABRIC_<PROVIDER>_REAL_DEPLOY=1. Simulated mode is default.
For any provider:
runfabric doctor -c runfabric.yml
runfabric plan -c runfabric.yml
runfabric build -c runfabric.yml
runfabric deploy -c runfabric.yml
Required env:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONOptional real mode:
RUNFABRIC_AWS_REAL_DEPLOY=1RUNFABRIC_AWS_LAMBDA_ROLE_ARN (required for built-in internal deployer)RUNFABRIC_AWS_DEPLOY_CMD (JSON output)RUNFABRIC_AWS_DESTROY_CMDAPI-based deploy (when providerOverrides uses gcp-functions):
GCP_ACCESS_TOKEN — e.g. from gcloud auth print-access-token or a service accountGCP_PROJECT or GCP_PROJECT_IDGCP_SOURCE_BUCKET and GCP_SOURCE_OBJECT (pre-uploaded zip), or set GCP_UPLOAD_BUCKET to zip project root and upload before deploy. runfabric invoke logs uses Cloud Logging (same token).GCP_ACCESS_TOKEN + GCP_PROJECT/GCP_PROJECT_ID with extensions.gcp-functions.cloudWorkflows declarations in runfabric.yml.CLI-based (optional):
GCP_PROJECT_ID, GCP_SERVICE_ACCOUNT_KEYRUNFABRIC_GCP_REAL_DEPLOY=1 — built-in deploy/remove uses gcloud; overrides: RUNFABRIC_GCP_DEPLOY_CMD, RUNFABRIC_GCP_DESTROY_CMDAPI-based deploy (default when provider is azure-functions):
AZURE_ACCESS_TOKEN — e.g. from az account get-access-token --resource https://management.azure.comAZURE_SUBSCRIPTION_IDAZURE_RESOURCE_GROUP (optional; defaults to service-stage)AZURE_LOG_ANALYTICS_WORKSPACE_ID (and AZURE_ACCESS_TOKEN) to query Log Analytics.extensions.azure-functions.durableFunctions in runfabric.yml)./config/appsettings), so AZURE_ACCESS_TOKEN and AZURE_SUBSCRIPTION_ID are required for durable lifecycle parity.Optional CLI-based path:
AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUPRUNFABRIC_AZURE_REAL_DEPLOY=1 — built-in deploy/remove uses func + az; overrides: RUNFABRIC_AZURE_DEPLOY_CMD, RUNFABRIC_AZURE_DESTROY_CMDAPI-based deploy (default when provider is kubernetes):
KUBECONFIG (or in-cluster config when running inside the cluster)API-based deploy (default when provider is cloudflare-workers):
CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKENrunfabric invoke logs uses wrangler tail when wrangler CLI is available, with Cloudflare API tail fallback.RUNFABRIC_CLOUDFLARE_DISABLE_WRANGLER_TAIL=1 to force API tail only.API-based deploy (default when provider is vercel):
VERCEL_TOKENVERCEL_TEAM_ID (optional, for teams)API-based deploy (default when provider is netlify):
NETLIFY_AUTH_TOKENNETLIFY_SITE_ID (optional; site is created on first deploy if unset)API-based deploy (default when provider is alibaba-fc):
ALIBABA_ACCESS_KEY_ID, ALIBABA_ACCESS_KEY_SECRETALIBABA_FC_ACCOUNT_ID (Alibaba Cloud account ID)ALIBABA_FC_REGION or provider.region (default cn-hangzhou)API-based deploy (default when provider is digitalocean-functions):
DIGITALOCEAN_ACCESS_TOKENDO_APP_REPO (e.g. owner/repo for GitHub)DO_REGION (optional; default ams)API-based deploy (default when provider is fly-machines):
FLY_API_TOKENFLY_ORG_ID (optional; default personal)API-based deploy (default when provider is ibm-openwhisk):
IBM_OPENWHISK_AUTH (e.g. user:password or API key)IBM_OPENWHISK_API_HOST (optional; default https://us-south.functions.cloud.ibm.com)IBM_OPENWHISK_NAMESPACE (optional; default _)Command-based deploy (default when provider is linode):
LINODE_TOKEN — Linode API token for account authenticationLINODE_CLI_BIN (optional; default linode-cli)RUNFABRIC_LINODE_DEPLOY_CMD — deploy command (must output JSON with deployment ID or function info)RUNFABRIC_LINODE_REMOVE_CMD — remove commandRUNFABRIC_LINODE_INVOKE_CMD — invoke command (auto-discovered if invokeUrl is in config)RUNFABRIC_LINODE_LOGS_CMD — logs commandlinode-cli functions action-create for deploy, functions action-delete for remove, functions activation-list for logs.runfabric/<name>.zip → dist/<name>.zip → build/<name>.zipnodejs, pythonhttpOptional direct invoke URL (bypasses command):
invokeUrl in provider config or functions[].url to invoke via HTTP POST directlyFor providers where you want cloud-native observability calls instead of local artifact-derived data, set:
RUNFABRIC_<PROVIDER>_TRACES_CMDRUNFABRIC_<PROVIDER>_METRICS_CMDExample (AWS):
export RUNFABRIC_AWS_TRACES_CMD='echo "{\"traces\":[{\"timestamp\":\"2026-01-01T00:00:00Z\",\"message\":\"trace\"}]}"'
export RUNFABRIC_AWS_METRICS_CMD='echo "{\"metrics\":[{\"name\":\"invocations\",\"value\":10,\"unit\":\"count\"}]}"'
Provider config examples:
examples/node/hello-http/runfabric.<provider>.ymlexamples/node/hello-http/runfabric.cloudflare-workers.ymlCompose contracts example:
examples/node/compose-contracts/runfabric.compose.yml