Skip to main content
Your customers run your software inside their own cloud accounts. You have no SSH keys, no kubectl context, no AWS credentials. When something goes wrong (a pod crash-looping, a disk filling up, a backfill that needs kicking) you cannot just ssh in. Operations lets you submit vetted templates against a customer’s appliance. Execution requires the customer’s approval or a verified pre-approval covering the command. The command runs inside the appliance; its result record is encrypted before control-plane storage, while the key stays in the customer’s vault. You receive plaintext after authorized output release.

Define, request and authorize

You define a template and request one command against a customer appliance; customer-signed approval or verified pre-approval precedes execution.You define a template and request one command against a customer appliance; customer-signed approval or verified pre-approval precedes execution.You define a template and request one command against a customer appliance; customer-signed approval or verified pre-approval precedes execution.You define a template and request one command against a customer appliance; customer-signed approval or verified pre-approval precedes execution.

You define a template and request a command against one customer appliance. The customer authorizes execution through signed approval or a verified pre-approval; the appliance verifies it before dispatching an available worker. Support links belong to the support-request flow; plain CLI submission does not attach that request metadata. Arrows show the approved-case sequence; rejection and deadlines are covered in Running Commands.

Execute and release output

The customer appliance runs a command and encrypts its result with a customer-held key; output reaches you only after authorized release.The customer appliance runs a command and encrypts its result with a customer-held key; output reaches you only after authorized release.The customer appliance runs a command and encrypts its result with a customer-held key; output reaches you only after authorized release.The customer appliance runs a command and encrypts its result with a customer-held key; output reaches you only after authorized release.

The command runs inside the customer appliance, which captures stdout, stderr and exit code. The result record is encrypted before control-plane storage, and its key stays in the customer vault. Output reaches you after authorized release: CommandsOnly pre-approval still requires output review, while a verified FullyPreApprove grant covers release. Arrows show logical sequence, not network hops or new resource permissions.

The four entities

Operations works in terms of four objects. Knowing what each one is makes the rest of the docs much shorter. Templates and sources are write-once authoring artifacts. Ops commands are the per-execution objects. Pre-approvals are an optional optimization your customer can apply on top.

The four-step lifecycle

The approved path separates execution approval from output release. Running commands covers the full lifecycle, including pending decisions, rejection, cancellation and deadlines:
1

Review

For per-command review, your customer reads the template description, declared data-access tags, your reason, command body and variable values. They can approve, reject or leave the decision pending.
2

Approve

The appliance verifies approval and dispatches execution when a worker is available. A verified pre-approval covering the command can supply the decision without another per-command review.
3

Execute

The command runs inside the appliance and captures stdout, stderr and exit code. The normal result path signs and encrypts the result record with a per-command key held in the customer’s vault. Blob-backed output streams remain distinct from that record.
4

Release

For per-command release, your customer reviews the output in their environment and signs an Ed25519 release manifest. CommandsOnly pre-approval still requires this output review; verified FullyPreApprove coverage can authorize release without another per-command decision. The appliance supplies plaintext after authorized release, and your control plane forwards it to you.
Command approval and output release are authorized by signed manifests, and the normal execution path signs its result record. These signatures do not imply that every internal lifecycle update is individually signed. You can verify the audit chain with tensor9 ops command audit verify.

What your customer sees

For commands created through the support-request flow, your customer can use the /support/<token> link to their Customer Portal. The guided wizard lets them review and approve or reject the command, watch execution, and authorize output release. Plain CLI submission does not itself attach that support-request metadata. Your customer can also review and approve pending operations from the Operations section of their Customer Portal. Your customer’s portal session remains separate from yours. Your control plane can store the encrypted result record before release; plaintext becomes available to you after authorized release.
On your side, you can track the status of ops commands in the Vendor Portal under Operate → Commands, or via the CLI with tensor9 ops command retrieve.

Where to go next

A minimal end-to-end

To make the rest of the docs concrete, here is the shortest possible path from “no templates yet” to “you see released output”:
Each of those three commands is unpacked in detail on the corresponding subpage.