Skip to main content
Use heysavvy/embeddables-actions/embeddables-deploy@v1 to deploy a configured hosting app from GitHub Actions. This guide assumes the app’s build paths are already listed in embeddables/config.yaml.

Add the deploy key

Create a deploy key from the Embeddables dashboard, the createHostingDeployKey Admin SDK method, or the hosting_create_deploy_key MCP tool. Save the returned edk_… secret in the GitHub repository as EMBEDDABLES_DEPLOY_KEY. The secret is shown only once. Create a new key if it is lost; do not log it or commit it.

Configure the build output

Add the existing server and client build directories to embeddables/config.yaml. Example:
server and client are relative to the repository root. slug must exactly match the app slug registered in the Embeddables dashboard.

Add the workflow

Example:
The action reads embeddables/config.yaml, packages one app’s existing build output, uploads it, and exposes branch-url and commit-url outputs. When the config lists more than one hosting app, pass its slug with app. Use config only when the config file is not at embeddables/config.yaml. On a pull request, the action comments with the branch preview URL. A deploy from the registered production branch also promotes the new commit to production.

Deploy endpoint

The action sends one gzipped tar archive to:
The request contract is: The archive contains Worker modules under server/ and static files under client/. server/wrangler.json can set the main module, compatibility date, compatibility flags, and string variables. The main module defaults to index.js. The compressed request is limited to 32 MB, the unpacked archive to 64 MB, and each static asset to 25 MB.

Returned URLs

A successful deploy returns:
  • branchUrl: the moving URL for the git branch.
  • commitUrl: the immutable URL for this commit.
  • promotion: the production promotion result when the branch is the production branch, otherwise null.
Overlapping CI jobs cannot move a branch or deploy-triggered production alias back to an older commit when X-Git-Commit-Time is present.