Prerequisites
This guide assumes you’ve been enabled for Turnkey Verifiable Cloud, and you’ve completed the steps to create an account and an organization as described in the account setup section.Installation
Install the TVC CLI in the Rust SDK to get started:Create your first verifiable app
Login
With your new organization ID ready, login through the CLI.You will be asked to paste in your organization ID, and prompted to add a new generated API key to your organization.
This step generates an operator P256 keypair locally for you. It is stored in
~/.config/turnkey/orgs/<name>/operator.json.
The public key will be used in the following steps.Create a new TVC app
Visit the TVC dashboard and click on “Create app”.
A modal should appear:
Name your app something identifiable; for this demo it can be


"TVC Hello World".
Paste in your operator public key from the TVC CLI login step, then click “Create new TVC App” to create your app.CLI steps (same functionality as dashboard)
CLI steps (same functionality as dashboard)
Create a local app template by runningThis step is purely local, and generates an editable json template for your app to be used during creation.
Your template will look something like this when first generated:Name your app something identifiable; for this demo it can be This creates your app, and saves its quorum key and manifest settings to the Turnkey Verifiable Cloud platform.
Check out your new app on the TVC dashboard.
"TVC Hello World".
Your manifest set is currently just the public key generated during login;
give it an easy to remember name, such as "TVC Manifest".Create your app in TVC by runningCreate new TVC deployment
Once your app is created, click into it on the dashboard. Click on “Create deployment”
to start a new deployment for your app.
This should open a modal with all your deployment settings:
If you do not have your own app, try our helloworld template:


- Container Image URL:
ghcr.io/tkhq/helloworld@sha256:f8132a6236609e4c67d9d29e5694989f18e528240844638e850897ee6319676d- If you are bringing private container images, TVC supports uploading pull secrets by encrypting them to a known public key. This will be used by TVC infrastructure to access your container images. Read more about pull secrets here.
- Executable Path:
/helloworld - Executable Args:
--host 0.0.0.0 --port 3000. These arguments are passed to the executable on startup. Here we are telling thehelloworldbinary to start on port 3000 - Public ingress port:
3000. This is the port that will be exposed to the outside world - Health check port:
3000. Ourhelloworldbinary answers healthchecks on/healthon the same port (3000) - Health check type:
HTTP. - Executable digest: the hash of the binary file inside the container. For our helloworld example this should be
cbe01169428f144086bfaef348bbf3db70f9217628996cafd2ecb85d5f2b47a1. You can compute it locally with:This digest will be to ensure TVC is running the code you expect.
CLI steps (same functionality as dashboard)
CLI steps (same functionality as dashboard)
Start with this local-only step, which generates a deployment template:The generated JSON file is named by its time of creation, but you can name it anything by specifying
a name after the Find the newly created deployment by clicking into your app on the TVC dashboard.
--output flag. Open it and fill in each field:-
appIdis populated with the last app you created. You may edit it to be the id of any app you’ve created in the past. -
qosVersion: use"v2026.2.6" -
pivotContainerImageUrl: link to a public image. For this demo, feel free to use -
pivotPath: location of your binary in the container. Use"/helloworld"for the demo app. -
pivotArgs: leave this empty unless you have arguments to pass to your application -
expectedPivotDigest: for the demo, use -
pivotContainerEncryptedPullSecret: your pull secret, if your container image isn’t public. Delete this field otherwise. -
publicIngressPort: 3000 -
healthCheckPort: 3000 -
healthCheckType:TVC_HEALTH_CHECK_TYPE_HTTPFor an arbitrary app, compute the expected digest with
Approve deployment
By design, your deployment is not live yet. TVC requires approvals by the manifest set to fully deploy your application.
Your app should be at the 
For this demo app, your manifest set is the public key you created at login. To approve your deployment, use the TVC CLI:You may find your operator ID by clicking into your app, then under Manifest Operators:
This command generates an approval from the public keys created in step 1.
If you didn’t change anything during the demo, that should be the only required approval from your manifest set.
Your app is now live on Turnkey Verifiable Cloud!Our infrastructure automatically provisions network ingress for your application. You can visit
Approve stage on the dashboard:

https://app-<YOUR_APP_UUID>.turnkey.cloud to interact with it. If you used our helloworld template, try visiting /time.