This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
gamertan 9d9fc83dd0 feat: publish Tend v0.2 Preview 2 source
Export the reviewed allowlisted snapshot from private source commit 8aab3db43f35e6a49aa497f45d73701b13fc9f32 and tree 992132ea4703437dc13ffdbb04a077816c02caf9. This includes routed singleton continuity, deployment evidence, strict schema-2 configuration, restricted transport, and the independently compilable public-tree guard.

AI-Assisted: OpenAI Codex
Signed-off-by: Cole Speelman <crspeelman@gmail.com>
2026-08-18 06:40:58 -04:00

Gamertan Tend

Tend is an opinionated release and deployment tool for small Go services on Linux, systemd, and Caddy. It packages a clean pushed commit, records exact build provenance, activates a health-checked candidate, and keeps rollback state explicit.

The v0.2 development line supports two quiet deployment shapes:

  • Caddy-switched blue/green services.
  • A singleton service with an isolated transient candidate check.

It does not manage databases, migrations, containers, Kubernetes, or arbitrary shell hooks. Application-specific data activation remains application-specific.

Commands

tend check    --config tend.json
tend package  --config tend.json --version v0.2.0-preview.2 --out dist
tend push     --target tend-deploy@host --known-hosts FILE --service NAME --artifact FILE --sha256 HEX --approve-sha256 HEX
tend receive  --policy /etc/tend/receive-policy.json
tend check-server --policy /etc/tend/receive-policy.json
tend deploy   --config /etc/tend/services/example-site.json --artifact FILE --sha256 HEX --approve-sha256 HEX
tend status   --config /etc/tend/services/example-site.json
tend rollback --config /etc/tend/services/example-site.json
tend prune    --config /etc/tend/services/example-site.json --keep 3 [--apply]

push transfers one approved artifact through a pinned OpenSSH connection. A forced, no-shell receiver maps the service name to one root-owned configuration; it accepts no remote path, environment value, URL, or shell fragment. Production hosts receive binaries and evidence, never source or Go dependencies.

Schema 2 keeps all services under /etc/tend/services/, references a distinct root-owned 0600 environment file for each service, and serializes activation through /run/lock/tend-deploy.lock. Builds and transfers remain parallel; only the short Caddy/service activation phase is host-wide. Tend is still a single command, not a daemon.

Each service also keeps a bounded JSONL deployment-event stream and explicit desired, candidate, active, previous, and last-attempt release identities. The stream contains only fixed provenance and lifecycle fields; Observatory may ingest it later, but an event-write failure never blocks deployment or rollback. After Caddy reload, Tend repeatedly probes the configured canonical HTTPS origins for the activation window. Blue/green deployments simultaneously keep checking the previous slot, restoring the prior handler and inactive-slot state if routed traffic or continuity fails.

Dry-run and digest approval are intentional friction. See the schema-2 migration guide and the two-service walkthrough.

Run ./scripts/verify.sh on Linux. That required release lane exercises tests, the race detector, vet, deterministic builds, schema-2 examples, and the dependency-free module graph. Tend supports Linux hosts with systemd and Caddy; WSL may be used as a Linux development environment, but native Windows is not a supported execution, deployment, or release-gate platform.

The v0.1 public preview and immutable v0.2.0-preview.1 each completed maintenance releases and explicit rollback/reactivation for both Gamertan and the Sandwich Hime website using one reviewed candidate. See the dated dogfood evidence for exact scope and limitations.

The additive v0.2.0-preview.2 candidate keeps that transport and activation contract while adding bounded deployment-event JSONL, routed-origin continuity, rollback annotations, and the operational findings recorded through real dogfooding. Preview 1 remains unchanged. Preview 2 will not be tagged until one identical binary has deployed, rolled back, and reactivated Gamertan, the Sandwich Hime website, and Gamertan Observatory. Operational friction discovered while applying the same contract to new services is tracked separately in the dogfood friction ledger. The ledger preserves the fail-closed behavior and records candidate product improvements instead of normalizing application-specific deployment workarounds. The canonical public repository begins with a sanitized root snapshot rather than the private development history.

Licensing

Tend and its release machinery are AGPL-3.0-only. Reusable example configuration and service templates under examples/ are 0BSD.

S
Description
Archived final public CLI preview: v0.2.0-preview.2. Published licences and artifacts remain available.
https://gamertan.com/ Readme AGPL-3.0
174 KiB
Languages
Go 96.8%
Shell 3.2%