Skip to content
Back to skills

Deploy Node

ASecurity

Redirect. The k3s+ArgoCD node-app deploy playbook is RETIRED — node apps deploy to Akash via catalog placement. Routes deploy/provision/promote/health questions to the maintained skill that owns each, and to the Dolt roster for which nodes exist. Triggers: 'deploy a node', 'deploy to staging', 'provision a VM', 'check deployment status', 'promote image', 'Argo CD sync', 'which nodes exist'.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 9, 2026
devopsgonodegitapidevopsci/cd

Works with

  • api

Security analysis

A92/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned September 22, 2026

npx -y skills add cogni-dao/cogni --skill deploy-node --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Deploy Node?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Deploy Node
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cogni-dao-deploy-node/badge)](https://www.skillsdirectory.com/skills/cogni-dao-deploy-node)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: deploy-node
description: "Redirect. The k3s+ArgoCD node-app deploy playbook is RETIRED — node apps deploy to Akash via catalog placement. Routes deploy/provision/promote/health questions to the maintained skill that owns each, and to the Dolt roster for which nodes exist. Triggers: 'deploy a node', 'deploy to staging', 'provision a VM', 'check deployment status', 'promote image', 'Argo CD sync', 'which nodes exist'."
---

# Deploy Node — redirect

> This skill was a 344-line playbook for the **old k3s node-app stack** (`provision-test-vm.sh`,
> `staging-*` Argo apps, hardcoded VM IPs, `resy-test.cognidao.org`). **All of that is retired.**
> `deploy-operator` was purged for exactly this on 2026-08-05; this one survived and kept
> misdirecting agents. Purged now for the same reason.
>
> **`resy` never existed as a fleet node.** Any instruction naming it was hallucinated roster.

## The two facts that make the old content wrong

1. **Node apps deploy to Akash**, selected per environment by the catalog's `deployment_provider`
   (ci-cd.md Axiom 23 `AKASH_IS_NODE_APP_TARGET`). The k3s app lane is **deprecated for nodes** —
   never advise extending it, never "roll a node back to k3s" (that is a standing red line;
   `place_k3s` is not a mitigation, fix forward).
2. **k3s is still the STATE SUBSTRATE** and is NOT going away — postgres, doltgres, redis,
   temporal, LiteLLM, the shared scheduler-worker (Axiom 24 `CHERRY_IS_STATE_SUBSTRATE`).
   k3s knowledge is live and load-bearing for substrate work; it is only wrong as the _node-app_
   target.

## NEVER hardcode the roster — Dolt is the truth

Recall `operator-node-catalog`: **"The roster is LIVE STATE — read it, never hardcode."**

| want                                        | source                                                 |
| ------------------------------------------- | ------------------------------------------------------ |
| live registry (registered + owner, per env) | `GET /api/v1/nodes` — Postgres `nodes` SSOT            |
| per-env deploy state                        | `GET /api/v1/nodes/{id}/deploy-state`                  |
| git-declared in-repo shape                  | `infra/catalog/*.yaml` `type:node` (`CATALOG_IS_SSOT`) |
| **actually serving**                        | `curl https://<host>/version` from OUTSIDE the cluster |

**URL rule** (`verify-buildsha.sh`): operator = the bare env domain; every other node =
`<node>-<envprefix>.<base>`. prod `cognidao.org` / `<node>.cognidao.org`; preview
`preview.cognidao.org` / `<node>-preview…`; candidate-a `test.cognidao.org` / `<node>-test…`.

A hardcoded node list or host in any skill, workflow or script is drift waiting to happen —
that is how `resy` outlived the node by months.

## Where the current knowledge lives

| You want to…                                                                   | Skill                     |
| ------------------------------------------------------------------------------ | ------------------------- |
| Akash runtime, placement, leases, ComputeWorkload, why a node won't come up    | **`akash-node-expert`**   |
| CI/CD pipeline, deploy branches, image promotion, freeze policy, VM SSH policy | **`devops-expert`**       |
| Provision / reprovision an env (VM→k3s→OpenBao→Compose→edge→DNS→AppSets)       | **`provision-env`**       |
| Promote a SHA to preview/production, or diagnose a stuck promote               | **`promote`**             |
| Prove a flighted PR on candidate-a                                             | **`validate-candidate`**  |
| Secrets: OpenBao vs GitHub-env, ESO, split-brain                               | **`cicd-secrets-expert`** |
| RBAC / node access grants                                                      | **`rbac-expert`**         |
| Turn an env on/off for a node                                                  | **`manage-node-envs`**    |

## The invariant worth carrying over

**`/version.buildSha` read from outside the cluster is the only proof a deploy landed.**
A green workflow, a Healthy Argo app, and a 200 from `/readyz` can all be true while users are
served the previous build. Absence of a failure signal is not proof of health
(Dolt: `unexecuted-lane-untested`).

**And absent placement is a HARD FAILURE, never a k3s fallback** (`NO_SILENT_DEFAULT`,
story.5040) — a node row missing `deployment_provider` / `compute_api` / `lease_generation` for
an env it declares must halt with the missing cell named.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.