Skip to Content
DevelopersDeployment

Deployment

Draft. This page describes intended behaviour that has not been verified on a real Gardyn yet.

How code gets from dev to a unit (mirrors sleepypod/core ).

  • dev → every push builds a tarball (build.yml) and re-tags the rolling dev-latest prerelease (dev-release.yml). scripts/install --branch dev installs it.
  • main → release.yml cross-builds hald for armv6 and aarch64, builds core, and semantic-release publishes vX.Y.Z with the tarball and both binaries attached. scripts/install (no args) installs the latest release.
  • Feature branches → build.yml tarball artifact, installable via nightly.link with scripts/install --branch <name>.
  • Local → scripts/deploy user@host builds here and ships over SSH.

The unit runs two systemd services: hald (Rust, owns hardware) and seedypod-core (Node, :3000). Both restart on failure. Core is LAN-only; no outbound connections are made by either service.

Repository secrets and variables

NameKindUsed byHow to get it
VERCEL_TOKENsecretvercel.ymlvercel.com/account/settings/tokens → Create, scoped to therealng’s projects
VERCEL_ORG_ID, VERCEL_PROJECT_IDsecretsvercel.ymlset: team therealngs-projects, project seedypod-demo (vercel project inspect seedypod-demo)
VERCEL_ENABLEDvariable = truevercel.ymlSettings → Variables; the workflow is skipped until set
BACKMERGE_DEPLOY_KEYsecretback-merge.ymlprivate half of a write deploy key on seedypod/core only (back-merge (GitHub Actions, Dev ruleset bypass)). Deploy keys are on the Dev ruleset’s bypass list, so the merge commit can go straight to dev; set up already. To rotate it, add a new deploy key and replace this secret

Coverage needs no secret: test.yml and rust.yml upload to Codecov with GitHub OIDC (use_oidc: true, id-token: write), and fork PRs fall back to Codecov’s tokenless upload. No CODECOV_TOKEN secret is needed.

Renovate runs as the Mend Renovate GitHub App on the seedypod org (no token; install it from github.com/apps/renovate). It reads renovate.json: minor/patch automerge after 3 days, Mondays, through GitHub auto-merge and the dev merge queue; majors and the core stack (react, router, hono, vite, rppal, tokio…) stay manual; cargo is enabled; vulnerability alerts get the security label.


Sources: sleepypod/core (conventions and ADR precedents)  · Architecture decision records

Imported from docs/DEPLOYMENT.md in seedypod/core. Edit it there, not here.

Last updated on