Skip to content

Deployment Profiles

Desktop and mobile builds are universal. They do not need customer-specific endpoint binaries. A deployment profile tells the client which customer ThinkWork deployment to use before OAuth starts.

A v1 deployment profile is JSON with these required fields:

{
"schemaVersion": 1,
"deploymentId": "thinkwork-tei-e2e",
"displayName": "ThinkWork",
"stage": "tei-e2e",
"region": "us-east-1",
"accountId": "637423202447",
"releaseVersion": "v0.1.0-canary.148",
"releaseManifestUrl": "https://github.com/thinkwork-ai/thinkwork/releases/download/v0.1.0-canary.148/thinkwork-release.json",
"releaseManifestSha256": "5b154f800b8754d00d0b252772005bd02fc1dbbf6096036597efd700d4d6df93",
"controller": {
"stateMachineArn": "arn:aws:states:us-east-1:637423202447:stateMachine:thinkwork-tei-e2e-deployment-orchestrator",
"stateMachineName": "thinkwork-tei-e2e-deployment-orchestrator",
"codebuildProjectName": "thinkwork-tei-e2e-deployment-runner",
"evidenceBucketName": "thinkwork-tei-e2e-637423202447-deploy-evidence",
"ssmPrefix": "/thinkwork/tei-e2e/deployment",
"verifiedAt": "2026-06-10T05:39:47.478811+00:00"
},
"issuedAt": "2026-06-10T05:39:47.478830+00:00",
"spacesUrl": "https://d1eqjv7ijcmtqz.cloudfront.net",
"apiUrl": "https://8puq24dl63.execute-api.us-east-1.amazonaws.com/",
"graphqlHttpUrl": "https://8puq24dl63.execute-api.us-east-1.amazonaws.com/graphql",
"appsyncHttpUrl": "https://zp7lxyesvnci7gnhfkqbiye3nm.appsync-api.us-east-1.amazonaws.com/graphql",
"appsyncWsUrl": "wss://zp7lxyesvnci7gnhfkqbiye3nm.appsync-realtime-api.us-east-1.amazonaws.com/graphql",
"cognitoDomain": "https://thinkwork-tei-e2e.auth.us-east-1.amazoncognito.com",
"cognitoUserPoolId": "us-east-1_YlRAfXsE9",
"cognitoClientId": "5151h0qb3felu6vf4v3l33mvs3",
"signature": null
}

Production profiles should be signed by a trusted ThinkWork deployment profile key. Unsigned profiles are for development fallback only.

The accountId, release fields, and controller object are optional for older profiles but expected after customer authority transfer. They tell operators which release manifest was installed and which customer-owned Step Functions controller owns future update and teardown operations.

  1. Export the profile from Spaces

    Open the deployment profile panel on the customer deployment and copy the JSON or profile link.

  2. Import on desktop

    Open the desktop sign-in screen and paste the profile JSON, select a profile file, or open a profile deep link.

  3. Import on mobile

    Open the mobile sign-in screen and paste the profile JSON or link. A QR code can point at the same profile link.

  4. Verify before OAuth

    The sign-in screen shows display name, stage, region, and trust status. Incomplete config blocks sign-in before OAuth begins.

Sign out before replacing or removing a deployment profile. Changing the active profile clears deployment-scoped auth/session/client caches so the next OAuth flow starts against the selected customer deployment.

Malformed replacements do not clear the previous valid profile.

Profile stateClient behavior
Trusted signatureAllow sign-in and show signing key/trust label.
Unsigned development profileAllow only in development fallback builds.
Missing required fieldBlock sign-in and show missing configuration.
Invalid URL or non-TLS endpointBlock sign-in.
Unknown signing keyBlock production sign-in.
Signature mismatchBlock production sign-in.
  • Confirm schemaVersion is 1.
  • Confirm Cognito domain, client id, user pool id, AppSync HTTP URL, AppSync WS URL, API URL, and Spaces URL are present.
  • Confirm URLs are HTTPS/WSS, except explicit localhost development fallback.
  • Confirm the displayed deployment is the customer deployment the user expects.
  • Ask the user to sign out before changing profiles.