QM is currently only available on AWS. If you don’t see QM in the add-on list, please reach out via the support widget on the dashboard.
Install QM with an AI agent
The Porter MCP server can install and manage QM from an AI agent with the add-on tools. The quick install also adds theporter-qm skill, which takes a cluster to a signed-in QM install and works through failures along the way.
Ask your agent to set up QM on Porter. It collects the inputs in one round of questions and then runs the install. If the cluster doesn’t have sandboxes yet, it can enable them with enable_sandboxes.
How it works
The QM add-on deploys these services to your cluster:
Porter wires QM to the cluster for you: QM talks to the Sandbox API inside the cluster without an API token. Everything QM stores lives in your cloud account: its state in a Postgres database you provide, and its files in an optional S3 bucket.
Prerequisites
- An AWS cluster with sandboxes enabled
- A Postgres database reachable from the cluster
- Optional: an S3 bucket connected to the cluster
- Optional: public or private sandbox networking for published apps
Porter rejects a QM install on a cluster without sandboxes, since every agent runs in a sandbox.
Setup
1
Enable sandboxes
In the Porter Dashboard, navigate to the Sandbox tab for the AWS cluster where you want to run QM and click Enable sandboxes. See Sandboxes Getting Started for the CLI equivalent.
2
Create a Postgres datastore
Navigate to Add-ons and create a Postgres datastore in the same cluster. See Datastores for the available configurations. Use one database per QM install.You can also bring your own Postgres. QM needs a connection URL that is reachable from inside the cluster.
3
Create a bucket (optional)
Navigate to Add-ons, choose Object storage, then pick Create a new bucket or Register an existing bucket. Connect the bucket to the QM cluster.The bucket must be in the same AWS account as the cluster and must not be read-only. See Set up the bucket for the CLI equivalent.
4
Create the QM add-on
Navigate to Add-ons and select QM. Pick the cluster, give the add-on a name, then fill in the three steps below and click Deploy.
General
Sign-in
Password is the default. Porter fills in your email and generates a password. See Sign-in methods to switch to your identity provider or to email links.People
Administrators starts with your email. Administrators can invite other people from the QM admin console after first boot.Sign in to QM
Once the add-on is deployed, open the URL in the add-on header and sign in with the password account. QM doesn’t need a model provider to install. After the first sign-in, set the base model in the QM admin console. The add-on’s Integrations tab also takes fallback model API keys for agent turns.Sign-in methods
You can change the sign-in method at any time from the add-on’s Sign-in tab.Your identity provider
1
Register an app with your provider
Create an OpenID Connect web app with your identity provider. Set its redirect URI to your QM domain followed by
/auth/callback, for example https://qm.acme.com/auth/callback.2
Choose the provider
On the Sign-in tab, select Your identity provider, then pick the provider. Google fills in its endpoints, and Okta fills them in from your Okta domain. For Custom, copy the issuer and endpoint URLs from your provider’s
/.well-known/openid-configuration document.3
Enter the client ID and secret
Paste the client ID and secret from the app you registered, then click Deploy.
If sign-in fails with a redirect mismatch while the add-on reports healthy, the callback URL is missing from your provider’s allowed redirect URIs.
Private load balancer
You can serve QM from the cluster’s private load balancer so it’s only reachable from inside your VPC or networks peered to it, for example over Tailscale.1
Add the private load balancer to the cluster
Follow Private load balancer in the cluster settings, including the DNS provider Porter uses to issue certificates.
2
Turn on egress enforcement for sandboxes
In the Sandbox tab, open Settings and enable Enforce egress allowlists under Egress controls.Agents run in sandboxes, which can’t reach private addresses by default. With enforcement on, Porter lets every sandbox reach the QM domain. See Reaching QM from sandboxes.
3
Select the private load balancer
On the add-on’s General step, select Private LB under Load balancer. A private QM needs a custom domain, such as
qm.internal.acme.com.4
Create the DNS record
The form shows the private load balancer’s address and the record type to use. Create that record for the custom domain, then enter the domain and click Deploy.The private load balancer’s address only resolves to something reachable from inside your VPC. Point your own private DNS at it if your clients resolve through one.
Published apps
Agents can publish the apps they build. Each published app runs in its own sandbox, and where it’s served depends on the cluster’s sandbox networking:
Sandbox networking is optional. To give apps their own hostnames, open Settings in the Sandbox tab and follow Configure networking on the cluster through to the wildcard DNS record.

