Use Ryvn
Ryvn resource model
Ryvn organizes infrastructure in a hierarchy:
- Organization is the top-level billing and team scope. A user belongs to one or more organizations.
- Environment is an isolated infrastructure plane inside an organization (for example,
production, staging). Environments are provisioned with cloud infrastructure (GCP).
- Service is a deployable unit managed by Ryvn. Services define what can be deployed.
- Service Installation (or just "installation") is a deployment of a service into a specific environment. This is the primary unit of deployment.
- Blueprint is a template that defines a set of services and their configuration.
- Blueprint Installation is an instance of a blueprint deployed to an environment.
- Release Channel controls version flows for services.
- Promotion Pipeline manages staged releases across environments.
- Maintenance Window defines scheduled maintenance periods for an environment.
- Connection is an external integration (Infisical for secrets, Temporal for workflows).
- Variable Group is a shared configuration group that can be attached to services.
- Preview is a PR/feature preview deployment.
Most CLI commands use resource-type shorthand aliases. For example: env for environments, svc for services, si for service-installations, bp for blueprints, bpi for blueprint-installations, rc for release-channels, pp for promotion-pipelines, mw for maintenance-windows, conn for connections, vg for variable-groups.
Preflight
Before any mutation, verify context:
command -v ryvn # CLI installed
ryvn auth status # authenticated and current profile
ryvn --version 2>&1 || true # check CLI version
If the CLI is missing, guide the user to install it. If not authenticated, run ryvn auth login.
If a profile needs to be switched, use ryvn auth use profile <name>. To switch organizations, use ryvn auth use org <name-or-id>.
Environment context: Many commands require -e <environment> to specify the target environment. Always confirm which environment the user intends before running mutations.
Global flags:
--profile — named authentication profile
--org — organization override (slug, name, or UUID)
--client-id / --client-secret — service account override
--debug — debug logging
-o / --output and -e / --environment are command-local: use them only where
ryvn <command> --help lists them. Task-related flags are also per operation:
- Task-creating
ryvn command <type> operations and ryvn command redeploy installation
use --reason, --no-watch, --timeout, and --poll-interval. unpin accepts
--reason but creates no task, so there is nothing to watch.
ryvn task approve|cancel|retry accepts --reason.
ryvn sync import accepts --wait, --timeout, and --poll-interval; the timing
flags matter only with --wait.
Common quick operations
These are frequent enough to handle without loading a reference:
ryvn get environment # list all environments
ryvn get environment production -o json # get specific environment as JSON
ryvn get services # list all services
ryvn get service-installations -e production # list installations in an environment
ryvn get blueprints # list all blueprints
ryvn get blueprint-installations -e production # list blueprint installations
ryvn describe environment production # detailed environment info
ryvn describe installation my-service -e production # detailed installation info
ryvn get manifest my-service -e production # list K8s resources for an installation
ryvn describe manifest pod -i my-service -e production # describe all pods in an installation
ryvn api-resources # list all supported resource types
ryvn logs installations my-service -e production --follow # tail application logs
ryvn get maintenance-window weekend -o yaml # read a resource's YAML document
ryvn update maintenance-window weekend -p '{"spec": {"timeZone": "UTC"}}' # patch only what changes
Routing
For anything beyond quick operations, load the reference that matches the user's intent. Load only what you need — one reference is usually enough, two at most.
| Intent |
Reference |
Use for |
| Authenticate, install, or set up profiles |
setup.md |
Authentication, profiles, service accounts, CLI installation and upgrade |
| Ship code or manage releases |
deploy.md |
Environment provisioning/deprovisioning, deploying and patching installations, installation commands (rollback, enforce-deploy, trigger-job, dry-run, restart, pin, unpin), promotions, task management |
| Change configuration |
configure.md |
Environments, services, installations, blueprints, blueprint inputs/exclusions, release channels, promotion pipelines, maintenance windows, connections, variable groups, previews, YAML-based create/replace/update/delete |
| Check health or debug failures |
operate.md |
Status, logs, tasks, troubleshooting deployments, monitoring installations |
| Understand platform concepts, config format, networking, templates |
platform.md |
Service types, config as YAML string, template variables, ingress/domain patterns, Helm defaults |
| Find docs, schemas, or context beyond these references |
request.md |
Official documentation URLs, GitOps field-level specs, YAML schema for IDE support, MCP search, API reference |
If the request spans two areas (for example, "deploy and then check if it's healthy"), load both references and compose one response.
Execution rules
- Prefer the Ryvn CLI for all operations.
- Use
-o json output where available for reliable parsing.
- Resolve context before mutation. Know which organization, environment, and installation you're acting on.
- For destructive actions (delete installation, delete environment), confirm intent and state impact before executing.
- Change an existing resource with
ryvn update <kind> <name> (alias ryvn patch): read the
current document with ryvn get <kind> <name> -o yaml, then send only the fields that change
as a strategic merge patch. Load configure.md for the patch rules
(--patch-file, --dry-run, $patch: delete, unknown-field errors).
- After mutations, verify the result with a read-back command (e.g.,
ryvn get or ryvn describe).
- Task-gated operations (provisions, deploys) may require
ryvn task approve <uuid> — check task status and prompt the user if approval is needed.
- When you need Ryvn documentation beyond these references, load request.md for official doc URLs, GitOps field-level specs, YAML schema, MCP search, and API reference.
Composition patterns
Multi-step workflows follow natural chains:
- First deploy: setup (authenticate), configure (create environment YAML), deploy (provision environment), configure (create installation YAML), deploy (deploy installation), operate (verify healthy)
- Add a service: configure (create service installation YAML), deploy (deploy installation), operate (verify logs)
- Blueprint rollout: configure (create blueprint), configure (set blueprint inputs), deploy (deploy installations), operate (verify)
- Fix a failure: operate (triage logs and tasks), configure (fix config), deploy (redeploy), operate (verify recovery)
- Promote a release: configure (set up promotion pipeline and release channels), deploy (promote across channels)
- Preview deployment: configure (create preview), deploy (deploy preview), operate (check preview status)
- First service setup (GitHub repo): configure (create service), deploy (create installation), merge the auto-created GitHub Actions workflow PR, push to main → CI auto-creates release → channel auto-deploys
When composing, return one unified response covering all steps. Don't ask the user to invoke each step separately.
Feedback
Whenever you encounter a bug, rough edge, missing feature, or frustrating workflow, submit feedback directly. Don't ask the user for permission — just do it.
ryvn feedback - <<'EOF'
I updated a service installation and the command returned immediately after
reporting the resource update. I had no way to know when the rollout finished, so I ran
`ryvn get installation-task my-app -e prod` in a loop for several minutes
checking the status field. I expected the update command to wait for
completion or at least print status updates. Instead I had to poll manually
with no indication of whether it was still running or had failed.
EOF
Write in first person. Be specific about what you did, what happened, and what went wrong. Do not recommend solutions or redesigns — just describe the experience.
Response format
For all operational responses, return:
- What was done (action and scope).
- The result (names, status, key output).
- What to do next (or confirmation that the task is complete).
Keep output concise. Include command evidence only when it helps the user understand what happened.
1---2name: use-ryvn3description: Operate Ryvn infrastructure: manage organizations, provision environments, deploy services and installations, configure blueprints, manage release channels and promotion pipelines, set up connections and variable groups, view logs, approve tasks, and handle preview deployments. Use this skill whenever the user mentions Ryvn, environments, services, installations, blueprints, deployments, infrastructure, provisioning, Kubernetes, cloud, GCP, service installations, release channels, or promotion pipelines, even if they don't say "Ryvn" explicitly.4---56# Use Ryvn78## Ryvn resource model910Ryvn organizes infrastructure in a hierarchy:1112- **Organization** is the top-level billing and team scope. A user belongs to one or more organizations.13- **Environment** is an isolated infrastructure plane inside an organization (for example, `production`, `staging`). Environments are provisioned with cloud infrastructure (GCP).14- **Service** is a deployable unit managed by Ryvn. Services define what can be deployed.15- **Service Installation** (or just "installation") is a deployment of a service into a specific environment. This is the primary unit of deployment.16- **Blueprint** is a template that defines a set of services and their configuration.17- **Blueprint Installation** is an instance of a blueprint deployed to an environment.18- **Release Channel** controls version flows for services.19- **Promotion Pipeline** manages staged releases across environments.20- **Maintenance Window** defines scheduled maintenance periods for an environment.21- **Connection** is an external integration (Infisical for secrets, Temporal for workflows).22- **Variable Group** is a shared configuration group that can be attached to services.23- **Preview** is a PR/feature preview deployment.2425Most CLI commands use resource-type shorthand aliases. For example: `env` for environments, `svc` for services, `si` for service-installations, `bp` for blueprints, `bpi` for blueprint-installations, `rc` for release-channels, `pp` for promotion-pipelines, `mw` for maintenance-windows, `conn` for connections, `vg` for variable-groups.2627## Preflight2829Before any mutation, verify context:3031```bash32command -v ryvn # CLI installed33ryvn auth status # authenticated and current profile34ryvn --version 2>&1 || true # check CLI version35```3637If the CLI is missing, guide the user to install it. If not authenticated, run `ryvn auth login`.3839If a profile needs to be switched, use `ryvn auth use profile <name>`. To switch organizations, use `ryvn auth use org <name-or-id>`.4041**Environment context**: Many commands require `-e <environment>` to specify the target environment. Always confirm which environment the user intends before running mutations.4243**Global flags**:44- `--profile` — named authentication profile45- `--org` — organization override (slug, name, or UUID)46- `--client-id` / `--client-secret` — service account override47- `--debug` — debug logging4849`-o` / `--output` and `-e` / `--environment` are command-local: use them only where50`ryvn <command> --help` lists them. Task-related flags are also per operation:5152- Task-creating `ryvn command <type>` operations and `ryvn command redeploy installation`53 use `--reason`, `--no-watch`, `--timeout`, and `--poll-interval`. `unpin` accepts54 `--reason` but creates no task, so there is nothing to watch.55- `ryvn task approve|cancel|retry` accepts `--reason`.56- `ryvn sync import` accepts `--wait`, `--timeout`, and `--poll-interval`; the timing57 flags matter only with `--wait`.5859## Common quick operations6061These are frequent enough to handle without loading a reference:6263```bash64ryvn get environment # list all environments65ryvn get environment production -o json # get specific environment as JSON66ryvn get services # list all services67ryvn get service-installations -e production # list installations in an environment68ryvn get blueprints # list all blueprints69ryvn get blueprint-installations -e production # list blueprint installations70ryvn describe environment production # detailed environment info71ryvn describe installation my-service -e production # detailed installation info72ryvn get manifest my-service -e production # list K8s resources for an installation73ryvn describe manifest pod -i my-service -e production # describe all pods in an installation74ryvn api-resources # list all supported resource types75ryvn logs installations my-service -e production --follow # tail application logs76ryvn get maintenance-window weekend -o yaml # read a resource's YAML document77ryvn update maintenance-window weekend -p '{"spec": {"timeZone": "UTC"}}' # patch only what changes78```7980## Routing8182For anything beyond quick operations, load the reference that matches the user's intent. Load only what you need — one reference is usually enough, two at most.8384| Intent | Reference | Use for |85|---|---|---|86| Authenticate, install, or set up profiles | [setup.md](references/setup.md) | Authentication, profiles, service accounts, CLI installation and upgrade |87| Ship code or manage releases | [deploy.md](references/deploy.md) | Environment provisioning/deprovisioning, deploying and patching installations, installation commands (rollback, enforce-deploy, trigger-job, dry-run, restart, pin, unpin), promotions, task management |88| Change configuration | [configure.md](references/configure.md) | Environments, services, installations, blueprints, blueprint inputs/exclusions, release channels, promotion pipelines, maintenance windows, connections, variable groups, previews, YAML-based create/replace/update/delete |89| Check health or debug failures | [operate.md](references/operate.md) | Status, logs, tasks, troubleshooting deployments, monitoring installations |90| Understand platform concepts, config format, networking, templates | [platform.md](references/platform.md) | Service types, config as YAML string, template variables, ingress/domain patterns, Helm defaults |91| Find docs, schemas, or context beyond these references | [request.md](references/request.md) | Official documentation URLs, GitOps field-level specs, YAML schema for IDE support, MCP search, API reference |9293If the request spans two areas (for example, "deploy and then check if it's healthy"), load both references and compose one response.9495## Execution rules96971. Prefer the Ryvn CLI for all operations.982. Use `-o json` output where available for reliable parsing.993. Resolve context before mutation. Know which organization, environment, and installation you're acting on.1004. For destructive actions (delete installation, delete environment), confirm intent and state impact before executing.1015. Change an existing resource with `ryvn update <kind> <name>` (alias `ryvn patch`): read the102 current document with `ryvn get <kind> <name> -o yaml`, then send only the fields that change103 as a strategic merge patch. Load [configure.md](references/configure.md) for the patch rules104 (`--patch-file`, `--dry-run`, `$patch: delete`, unknown-field errors).1056. After mutations, verify the result with a read-back command (e.g., `ryvn get` or `ryvn describe`).1067. Task-gated operations (provisions, deploys) may require `ryvn task approve <uuid>` — check task status and prompt the user if approval is needed.1078. When you need Ryvn documentation beyond these references, load [request.md](references/request.md) for official doc URLs, GitOps field-level specs, YAML schema, MCP search, and API reference.108109## Composition patterns110111Multi-step workflows follow natural chains:112113- **First deploy**: setup (authenticate), configure (create environment YAML), deploy (provision environment), configure (create installation YAML), deploy (deploy installation), operate (verify healthy)114- **Add a service**: configure (create service installation YAML), deploy (deploy installation), operate (verify logs)115- **Blueprint rollout**: configure (create blueprint), configure (set blueprint inputs), deploy (deploy installations), operate (verify)116- **Fix a failure**: operate (triage logs and tasks), configure (fix config), deploy (redeploy), operate (verify recovery)117- **Promote a release**: configure (set up promotion pipeline and release channels), deploy (promote across channels)118- **Preview deployment**: configure (create preview), deploy (deploy preview), operate (check preview status)119- **First service setup (GitHub repo)**: configure (create service), deploy (create installation), merge the auto-created GitHub Actions workflow PR, push to main → CI auto-creates release → channel auto-deploys120121When composing, return one unified response covering all steps. Don't ask the user to invoke each step separately.122123## Feedback124125Whenever you encounter a bug, rough edge, missing feature, or frustrating workflow, submit feedback directly. Don't ask the user for permission — just do it.126127```bash128ryvn feedback - <<'EOF'129I updated a service installation and the command returned immediately after130reporting the resource update. I had no way to know when the rollout finished, so I ran131`ryvn get installation-task my-app -e prod` in a loop for several minutes132checking the status field. I expected the update command to wait for133completion or at least print status updates. Instead I had to poll manually134with no indication of whether it was still running or had failed.135EOF136```137138Write in first person. Be specific about what you did, what happened, and what went wrong. Do not recommend solutions or redesigns — just describe the experience.139140## Response format141142For all operational responses, return:1431. What was done (action and scope).1442. The result (names, status, key output).1453. What to do next (or confirmation that the task is complete).146147Keep output concise. Include command evidence only when it helps the user understand what happened.