Infrastructure & Targets
Everything about the systems SnapFlow manages: a live map of what exists, which providers are connected, deploy boundaries, and the credential vault.
Overview
Infrastructure & Targets (route /infra) is the single place to see everything about the systems SnapFlow manages: a visual map of what's actually out there, which providers are connected, the deploy "boundaries" (environments) and how much autonomy each grants, and the credential vault for services SnapFlow installs on your behalf. Four tabs: Topology, Connections, Boundaries, Secrets.
Topology
Two stacked panels. First, an Infrastructure Overview band (once you have any resources): a colored state banner β Healthy Needs attention Critical β a numeric score, and count tiles for resources, repos, workflows, environments, and connected clouds. Below that, an issues list: each row has a severity tag, title, description, a suggested fix, and β where SnapFlow can act on it directly β a button that either navigates you to the fix or dispatches the fix as a new mission.
Second, the Infra Mind-Map β an interactive, deliberately static (non-drifting) diagram: "Your Infrastructure" at the root, branching into provider clusters (AWS, GCP, Azure, Kubernetes, DigitalOcean, GitHub, Servers), then services, then individual resources. A toolbar lets you search resources, filter by provider, toggle "β οΈ Issues only", and "β» Rescan" everything connected. Click any node to open its detail panel. Empty state: "No infrastructure discovered yet" with a "Run discovery" button.
The node detail panel
Click any node to slide open its property page. The panel is deep-linkable β the URL gains ?inspect=infra:<resource id>, so you can share a link straight to one resource, and the browser back button closes it.
It shows everything discovery captured about that resource, grouped so a long list stays readable: Security first (encryption, versioning, public-access settings, permissions), then Network, Configuration, Timestamps, and anything else. Click any value to copy it. Below that: relationships (what it belongs to, what belongs to it), any issues affecting it, and its tags.
Acting on a resource
Each node offers the operations you would perform on it in your provider's own console β start, stop, resize and tag an instance; block public access or enable versioning on a bucket; restrict a firewall rule; restart a container or service; run, enable or disable a workflow. A repository additionally offers "Deploy to cloudβ¦": pick AWS, GCP, Azure or DigitalOcean and SnapFlow works out how the repo builds, provisions what it needs there, deploys it, and verifies the result responds.
Clicking an action does not reach into your account directly. It composes the request and runs it as an ordinary mission β so it is planned, risk-classified, gated for approval where that applies, executed in an isolated container, verified, and settled under the same "only pay for what works" rule as anything else you ask for. You can watch it in Mission Control like any other run.
Destructive actions β terminating an instance, emptying or deleting a bucket, deleting a role, network or environment β are separated into their own Danger zone block at the bottom of the panel and marked Destructive. Before one can be dispatched you must type the resource's name to confirm. That is on top of, never instead of, the normal approval gate: a delete is always treated as critical, so it stops for a human decision in every permission mode.
An action never fans out across your estate. The request names only the selected resource, so "delete bucket" means that bucket β this is why the panel is the only place these operations are offered.
Connections
Connect and manage every cloud and CI/CD integration β AWS, GCP, Azure, Kubernetes, GitHub, DigitalOcean, and locally-enrolled servers.
Only agency founders can connect or disconnect providers. Everyone else sees a notice: "Only founders can connect or disconnect providers."
Connecting GitHub
Clicking Connect first shows a permissions preview modal, then either Proceed (installs SnapFlow's shared GitHub App) or Create your own app (choose specific permission scopes and create a dedicated app). Once connected, a panel shows repository access scope β No repositories All repositories Selected repositories β a "Manage on GitHub β" link, granted permission scopes, and a "Sync permissions" button.
Connecting AWS, GCP, or Azure
A chooser modal offers two paths:
| Path | What it means |
|---|---|
| OIDC / Federated trust β Recommended | One click deploys a trust role (e.g. a CloudFormation stack for AWS); no access keys are ever stored. An expandable "Why OIDC?" note explains the tradeoff. |
| Legacy: Access Keys / Service Account Key / Client Secret | A plain credential form, explicitly labeled "Legacy." |
AWS specifically adds a "What should SnapFlow be able to do?" permission-scope picker β a toggle list of service categories (compute, storage, database, etc). Read-only access is always included; anything you check additionally grants provisioning/change rights in that area. Reconnecting an already-linked AWS account updates the existing role in place rather than creating a new one.
Kubernetes diagnostics
Once connected, click "Open diagnostics" for a modal with four modes β Overview, Rollout, Traffic, RBAC β fields for namespace/deployment/service/service-account, and a Run button that returns findings, a risk level (low/medium/high), and recommended next steps.
Other providers & servers
Providers without a dedicated flow use a generic credential form (text/password/textarea fields), saved either directly or as a reference to an existing environment variable or Vault path. Locally-enrolled/on-prem servers get their own section near the top of the page. Anything without connect support yet appears, dimmed, under "Coming soon."
At the bottom, a collapsible Agent readiness strip shows how many of the fleet's capabilities are fully operational vs. blocked given your current connections β expand it to see, per capability, which providers back it and, if blocked, which one it's still waiting on.
Boundaries
Environments define how much autonomy agents get in a given part of your infrastructure β every environment decides its own approval policy, and a production environment always requires approval for something.
Click "+ New environment":
| Field | What it means |
|---|---|
| Name | e.g. "staging". |
| Provider | AWS, GCP, or Azure. |
| Approval policy | "Auto β gate only flagged steps", "Gate every mutation", or "Gate every step (reads too)". |
| OIDC role suffix (optional) | Free text. |
| This is a production environment | Checkbox. A production environment can't use the "Auto" policy β SnapFlow blocks Create and explains why until you pick a stricter policy. |
| Auto-revert on a critical incident after deploy | Checkbox, on by default for production environments. |
Each environment in the list shows its policy as a status chip (Auto Gate mutations Gate all), a "prod" tag if production, a "default" tag on the one un-deletable default environment, and its provider/policy/OIDC role/auto-revert details.
"Change-as-PR"
When configured, a mission that provisions resources also opens a pull request in the repo you specify, with Terraform import blocks β so every change is a reviewable artifact your own team owns, not just something SnapFlow did quietly. Requires a connected GitHub integration. Fields: Owner, Repository, Base branch (default "main"), Path prefix (optional). Buttons: Connect repo / Update repo, and Disconnect once set up.
Secrets
This vault is for credentials of services SnapFlow itself installs and runs for you β for example a database it stands up. Credentials for connecting your own AWS/GCP/Azure/GitHub accounts live under the Connections tab instead.
REDIS_PASSWORDGeneratedDATADOG_API_KEYHost-scopedAgents reference these secrets by name β the values are injected into the command at run time and never appear in a prompt, a task payload, or the flight log.
Service setup (recommended)
Pick your install preferences for a catalog of installable services; SnapFlow generates the required passwords itself, stores them encrypted, and injects them when the install runs β nobody types them and no model ever sees them. Click Configure on a service, fill in its settings, review the box listing exactly which credential slots will be generated vs. already present, then Save & generate credentials.
Bring your own credential
For values SnapFlow can't generate itself β an existing service account, a license key:
| Field | What it means |
|---|---|
| Name | Forced to UPPER_SNAKE_CASE β this becomes the variable name agents reference. |
| Value | Password-masked. Leave blank to have SnapFlow generate a strong value instead. |
| Description | Free text, for your own reference. |
Once saved, a credential's value is never displayed again β not even to you. "Stored encrypted and write-only: it is never displayed again, including to you."
Every stored credential shows a masked preview, a "Generated" or "Host-scoped" tag, when it was last used (or "never used"), and a Delete button. This entire tab is founder-only.
SnapFlow