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 rollingdev-latestprerelease (dev-release.yml).scripts/install --branch devinstalls it.main→release.ymlcross-buildshaldfor armv6 and aarch64, builds core, andsemantic-releasepublishesvX.Y.Zwith the tarball and both binaries attached.scripts/install(no args) installs the latest release.- Feature branches →
build.ymltarball artifact, installable vianightly.linkwithscripts/install --branch <name>. - Local →
scripts/deploy user@hostbuilds 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
| Name | Kind | Used by | How to get it |
|---|---|---|---|
VERCEL_TOKEN | secret | vercel.yml | vercel.com/account/settings/tokens → Create, scoped to therealng’s projects |
VERCEL_ORG_ID, VERCEL_PROJECT_ID | secrets | vercel.yml | set: team therealngs-projects, project seedypod-demo (vercel project inspect seedypod-demo) |
VERCEL_ENABLED | variable = true | vercel.yml | Settings → Variables; the workflow is skipped until set |
BACKMERGE_DEPLOY_KEY | secret | back-merge.yml | private 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.