Walkthrough
This page plays one demo workflow through from start to finish — generating it from its agent skill, publishing it, running it, approving the request it raises, and confirming the result — without signing out once. You sign in as root and use impersonation to act as each demo account in turn, so the whole tour fits in one browser tab.
Pick a provider here. Every provider-specific block on this page follows the choice.
- AWS
- Google Cloud
- Azure
You will launch an EC2 instance from the Demo AWS EC2 Launch skill.
You will rolling-restart a workload on a GKE cluster from the Demo GKE Pod Restart skill.
You will rotate a secret in an Azure Key Vault from the Demo Azure Key Vault Secret Rotation skill.
Before you start
- The backend is running with demo data enabled.
- You know the
rootpassword —ROOT_PASSWORD, or the line the backend logged once at startup when it was left unset (Seeded users). - The provider can really be reached:
- AWS
- Google Cloud
- Azure
The demo-aws-credentials secret holds a real access key: either DEMO_AWS_ACCESS_KEY_ID / DEMO_AWS_SECRET_ACCESS_KEY were set before the first start, or you edit the secret under Secrets. The run launches a real EC2 instance, which costs money until you terminate it.
The key's IAM user needs a policy that lets it resolve the AMI, look up the network and key pair, and launch the instance. This is enough:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ResolveAmi",
"Effect": "Allow",
"Action": "ssm:GetParameter",
"Resource": "arn:aws:ssm:*::parameter/aws/service/*"
},
{
"Sid": "LookupAndLaunch",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeKeyPairs",
"ec2:DescribeInstances",
"ec2:RunInstances",
"ec2:CreateTags"
],
"Resource": "*"
}
]
}
The first statement reads only the public parameters AWS publishes the latest AMI ids under, not your account's own parameters. The policy does not let the key terminate the instance — do that yourself in the AWS console.
The demo-gcp-credentials secret holds a Google Cloud credential whose identity can reach a GKE cluster: either DEMO_GCP_CREDENTIALS_JSON was set before the first start, or you edit the secret under Secrets. Have a project, a cluster, its region, and a workload you may restart ready — the run really rolling-restarts it.
The demo-azure-credentials secret holds a real service principal: either DEMO_AZURE_TENANT_ID / DEMO_AZURE_CLIENT_ID / DEMO_AZURE_CLIENT_SECRET were set before the first start, or you edit the secret under Secrets. The principal needs a role on a vault that lets it list and write secrets. Prefer a custom role with only the Microsoft.KeyVault/vaults/secrets/readMetadata/action and Microsoft.KeyVault/vaults/secrets/setSecret/action data actions over the built-in Key Vault Secrets Officer role, which can also read every secret's value: the agent then cannot read a value even if it is talked into trying. On a vault that uses access policies instead, grant only the List and Set secret permissions. Have that vault and a secret in it you may rotate ready — the run really writes a new version of the secret, and anything that reads its current version picks up the new value.
No account to spare? The seeded tool mocks let the same workflow play through without reaching a provider. That path runs the workflow while it is still a draft, so it skips the publish step below.
The cast
| Step | AWS | Google Cloud | Azure | Role |
|---|---|---|---|---|
| Generate the workflow | demo-aws-developer | demo-gcp-developer | demo-azure-developer | developer |
| Publish it | demo-aws-reviewer | demo-gcp-reviewer | demo-azure-reviewer | reviewer |
| Run it, and confirm the result | demo-aws-requester | demo-gcp-requester | demo-azure-requester | requester |
| Approve the request | demo-approver-1 | demo-approver-1 | demo-approver-1 | approver |
Every step below starts with Impersonate on the Users list and ends with Stop on the "Acting as" chip in the header. The stop is not optional: while you act as one of these accounts you are held to that account's roles, and none of them may impersonate, so Impersonate is not offered again until you have stopped. From a chat screen, the A2Flow logo in the app bar takes you back to the welcome page and its sidebar.
1. Sign in as root
- On the sign-in page, enter
rootas the Username, leave Tenant blank —rootis a platform administrator and belongs to no tenant — and enter the password. Press Sign in. - You land on the welcome page. The tenant selector in the app bar reads Default, the tenant the demo data lives in. Pick it if something else is selected.
2. Act as the developer and generate the workflow
- Open Users in the admin sidebar and press Impersonate on the developer's row. Confirm with Impersonate in the Impersonate User dialog. You are back on the welcome page, and the header chip reads "Acting as
demo-…-developer". - Open Agent Skills. Only this provider's skill is listed — the others are hidden by their access-control tags. Wait until its Status reads
ready, refreshing the list while it still saysCloning; Generate workflow stays disabled until then.
Open Knowledge Bases and click AWS EC2 Pricing. Its one source, ec2-on-demand-pricing.pdf, reads Not read. Click Read and wait until its status reads Ready. The LLM is turning the price sheet into pages, which appear under Pages; it takes a minute or two (Knowledge Bases). In the next step, also click Select knowledge bases… in the Generate Workflow dialog and choose AWS EC2 Pricing, so the run's agent can look prices up.
- Press Generate workflow on the row. Leave Workflow Name as it is, paste the prompt below into Prompt, and press Generate.
- AWS
- Google Cloud
- Azure
Ask the requester for the parameters they want and the date and time to launch, get approval from the Demo Approvers group, then launch an EC2 instance at that time.
Have them choose the instance type from:
- t4g.nano
- t4g.micro
- t4g.small
- t4g.medium
- t3.micro
- t3a.micro
- c6g.medium
- m6g.medium
- t2.micro
- t4g.large
Have them choose the region from:
- us-east-1
- us-east-2
- us-west-2
For the AMI, use the latest Amazon Linux 2023 image in the requested region.
Use the default VPC, subnet, and security group.
Do not create a key pair.
Resolve the AMI, VPC, and subnet IDs before requesting approval.
Do not launch the instance before the requested time.
Answer questions about what an instance costs from the AWS EC2 Pricing knowledge base, and include the requested instance's monthly cost from it in the approval request.
Replace the three placeholders with your own project, cluster, and region.
Restart a workload on the <your cluster name> cluster in the <your project name> project after approval from Demo Approvers.
The cluster location is the <cluster region> region. Have the requester choose the workload's namespace from a list fetched from the live cluster.
Replace the placeholder with your vault's name.
Rotate a secret in the <your vault name> Key Vault after approval from Demo Approvers.
List the vault's secrets and have the requester choose the one to rotate.
Generate the new value with the Secret Value Generator, and never show it in the chat.
- You land on the new workflow's detail page with the status
generating. The page refreshes itself; in a minute or two the status becomesdraftand the bell shows a "draft ready" notification. Open its Task Templates to see the steps the design agent wrote — gathering the parameters, asking for approval, doing the work, and reporting back (Generating a workflow). - Press Stop on the "Acting as" chip.
3. Act as the reviewer and publish
- On Users, press Impersonate on the reviewer's row and confirm.
- Open Workflows and click the workflow's name. Look over its task templates; a reviewer may also Open design session to read the design conversation, but not steer it.
- Press Publish. The status becomes
published: the design is frozen, and arequestermay now run it (Publishing). - Stop.
4. Act as the requester and run it
- On Users, press Impersonate on the requester's row and confirm.
- Open Workflows and press Run on the workflow. The Run Workflow dialog offers no mocks — the workflow is published, so this is a real request. Press Run.
- The workflow session opens and the agent starts on the first task, asking for what the prompt left to the requester. A question with a fixed set of answers is a choice inside the message; otherwise a row of suggested replies appears above the input.
- AWS
- Google Cloud
- Azure
Not sure which instance type to pick? Ask, for example "What does t4g.medium cost per month in us-east-2, compared with t3.micro?" The agent looks the prices up in the AWS EC2 Pricing knowledge base and names the page it used.
Choose an instance type from the ten in the prompt and a region from the three, give a launch time a few minutes from now so the tour does not stall, and answer whatever else it asks, such as a name for the instance. The agent then looks up the latest Amazon Linux 2023 image in that region and the default VPC and subnet, summarizes the configuration and the launch time, and sends it off for approval.
Choose a namespace from the list the agent fetched from the cluster, and name the Deployment or StatefulSet to restart. The agent looks the workload up, confirms its kind, summarizes the target, and sends it off for approval.
Before the agent lists the vault's secrets, the run waits for you: a note above the chat input says the task will ask you questions. Press Resume. The Azure MCP Server then asks you to confirm: a card titled "Azure MCP Server asks for confirmation" appears in the chat. Choose Approve and press Accept (Confirmations from an MCP server). Then choose the secret to rotate from the list the agent fetched. The agent summarizes the vault and the secret and sends them off for approval.
- The request is addressed to the Demo Approvers group, and under it the chat reads "Waiting for a decision from the approver group." — the requester cannot decide it. The run now waits.
- Stop.
5. Act as the approver and approve
- On Users, press Impersonate on
demo-approver-1and confirm.demo-approver-2would do just as well: the first decision settles a group request. - The bell in the toolbar shows one unread notification, the approval request. Click it to open the run's chat. Approvals in the sidebar, then Open Workflow Session on the row, leads to the same place.
- Read the request. Below the agent's summary, This authorizes lists the calls the decision would permit and the bounds on their inputs (What a request authorizes):
- AWS
- Google Cloud
- Azure
The call on the AWS MCP Server that launches the instance. Check it, and the launch time and monthly cost in the summary, against what the requester chose — the image, VPC, and subnet look-ups are not listed, since they ran before the request and needed no approval.
The patch_k8s_resource call on the GKE MCP Server, pointed at the namespace and workload the requester chose.
The keyvault_secret_create call on the Azure MCP Server, pointed at the vault and secret the requester chose. The new value is not in the request: the agent generates it only after you approve.
- Want to know more before deciding? Type a question in the chat and send it. On the AWS tab, for example, ask "What would this instance cost per month if it ran only on weekdays during business hours?" The session is waiting for your decision, so a Consultation tab opens and the agent answers there, from the request's context and the linked knowledge bases (Consultations). The requester can join that conversation too. When you are done, click the Main tab to return to the request.
- Leave a Comment if you like and press Approve. The decision closes the consultation, if you opened one. The run resumes in the same chat and the agent does the work, then asks the requester to confirm the outcome. That question is the requester's to answer: for you the input is read-only, with "Waiting for the initiator to respond." beneath it.
- AWS
- Google Cloud
- Azure
If the launch time has not come yet, the agent leaves the launch waiting, says in one line when it will continue, and pauses. The session resumes on its own at that time — nobody needs to keep the chat open — and the agent launches the instance (The workflow session screen).
The agent restarts the workload right away.
The write asks the requester for a confirmation, so the run waits for them to come back to the chat before it starts — the session shows Waiting for initiator, and the requester is notified.
- Stop.
6. Back as the requester: confirm the result
- On Users, press Impersonate on the requester's row again and confirm.
- Open Workflow Executions and press Open Workflow Session on the run.
- The agent has reported what it did and is waiting for you:
- AWS
- Google Cloud
- Azure
The instance id and its state, once the launch time you gave has passed. Check the instance in the AWS console if you like, then confirm in the chat.
How many pods were replaced, once the rollout it watched has finished. Confirm in the chat.
First the run waits for you before the write: press Resume in the note above the chat input. The agent generates a new value and starts the write, and the Azure MCP Server's confirmation card appears: choose Approve and press Accept. The agent then reports when the new version was created — never the value itself. The Azure MCP Server does not report a version id, so check the secret's versions in the Azure portal if you want it, then confirm in the chat.
- The agent closes with its summary, the last task completes, the run turns
completed, and the bell shows a completion notification. - Stop.
Afterwards
- AWS
- Google Cloud
- Azure
The instance keeps running, and costs money, until you terminate it in the AWS console.
Nothing to clean up: the workload is back at its replica count with fresh pods.
The previous version of the secret is still enabled. Once everything that reads the secret uses the new value, disable the old version in the Azure portal. The new value passed through the agent's conversation on its way to Key Vault (Demo data), so treat this run's chat as you would the secret.
Two records the tour left behind are worth a look:
| Where | What it shows |
|---|---|
| Audit Logs → Impersonations | Every session you just opened: who acted as whom, and when. Each write above is attributed to the impersonated account, so this trail is what answers "who was really behind it" (Audit trail) |
| The run's Tool Invocations page | Each tool call the run made and the certificate it presented — the approval you granted is what unlocked the one that did the work (Tool Invocations) |