Prerequisites
- A Keystone v3 address and catalog endpoints (Nova, Neutron, Cinder, Glance, Placement) with public hostnames that are reachable from the internet, because commands run in the CloudThinker cloud. Use
https:httpworks but sends the password unencrypted. Behind a firewall, allow CloudThinker’s egress IPs. These docs don’t publish CloudThinker’s egress IP list: ask your CloudThinker contact, or contact us. If the catalog lists internal hostnames, see the endpoint overrides in Connection details. - A Keystone user that signs in with a password alone. Application credentials and federated sign-in are not supported, and the user must not have multi-factor rules enforced in Keystone.
- A dedicated Keystone user with a role on the project you want inspected. See Required permissions.
- The project name, the domain names of the user and the project, and the region.
- Cloud admin rights, or an admin who can create a user and assign it a role.
Setup
Find your sign-in values
OS_* names as the CloudThinker form. The RC file prompts for the password when you source it and doesn’t store it. If you use clouds.yaml, the same values sit under auth:, and the region is region_name.Create or choose a Keystone user
reader role on the project. As a cloud admin, replace <domain> and <project> with your values (Default is the domain on most clouds):openstack role assignment list --user cloudthinker --names shows reader on your project. You can widen the role later if you want agents to make changes.Check access from outside your network
OS_USERNAME to cloudthinker (and OS_USER_DOMAIN_NAME if that user lives in another domain), then on a machine outside your network source the copy, enter the cloudthinker password at the prompt, and run:token issue prints a token with an expires time, and server list prints your servers (or an empty table) without a timeout. CloudThinker runs the same openstack token issue to test the connection, so if it fails here, it fails in CloudThinker too.Add the connection in CloudThinker
Connection details
http or https URL.
To check whether you need them, run openstack catalog list and confirm that every public URL resolves from outside your network. Set an override only for a service whose URL doesn’t.
Required permissions
Keystone ships three default roles:admin, member, and reader. OpenStack describes reader as read-only access within a project, and member includes reader.
member also lets agents create servers, networks, and volumes, which goes past the changes agents make. For least privilege, create a custom role and allow only these policies:
Agent capabilities
volumes unattached and older than 90 days.
Reads run without asking. Every change goes through Approvals first.
Every change an agent makes goes through your workspace’s Approvals first. On the default Auto · Rules + AI · Ask me mode, AI judgment can let a safe change run without asking — and an Allow Rule can too, once CloudThinker turns on Rule enforcement for your workspace. Choose Manual to approve every change yourself.
Verify the connection
Example prompts
Troubleshooting
Failed to connect to OpenStack
Failed to connect to OpenStack
openstack token issue with the same values from outside your network, as in step 3, and read its error:401orThe request you have made requires authentication: check the user name, password, project name, both domain names, and that the user has a role on the project.- A timeout or
Unable to establish connection: the address isn’t reachable from the internet. - An SSL or certificate error: the certificate isn’t trusted. Select Skip SSL verification for a lab cloud only.
OS_AUTH_URL must be a Keystone v3 URL
OS_AUTH_URL must be a Keystone v3 URL
/v3, or it contains credentials, a query string, or a fragment. Copy OS_AUTH_URL from your openrc file.OS_REGION_NAME must contain only letters, digits, '_', '-' (max 64 chars)
OS_REGION_NAME must contain only letters, digits, '_', '-' (max 64 chars)
An endpoint override must be an http(s) URL with a host
An endpoint override must be an http(s) URL with a host
https://image.example.com, or clear the field.Invalid OpenStack connection configuration
Invalid OpenStack connection configuration
Connection 'openstack' already exists. Only one instance is allowed.
Connection 'openstack' already exists. Only one instance is allowed.
403 Forbidden on a question across projects
403 Forbidden on a question across projects
admin role. Ask about your own project instead. See the warning in Required permissions before you grant admin.Security
- Least privilege — grant only the permissions the agents need for your use case; start read-only and widen later.
- Read-only by default — use read-only credentials unless you want agents to make changes through this connection.
- Rotate credentials — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.
- Revoke on offboarding — remove the credential at the provider when you delete a connection or a teammate leaves.
- Use an https address: CloudThinker accepts an
httpKeystone address, but your password then travels unencrypted. - Keep certificate checks on: reserve Skip SSL verification for lab clouds with self-signed certificates.
- Revoke at the source: disable the Keystone user, or remove its role assignment on the project.
- Plan for password changes: a new password breaks the connection until you enter it in CloudThinker. A workspace holds one OpenStack connection, so there’s no in-place swap while it’s healthy: once the connection shows Error, enter the new password with Replace credentials. To change it before then, disconnect and connect again, which reruns Discovery, puts Allow writes back to on, and means checking that Rules still name the connection. See Rotate a credential. If your Keystone enforces password expiry, exempt this user.