Deploy
Dedicated
On this page
What an installation is
An installation is a complete Valet in one dedicated AWS account, with its own network, database, storage and secrets. It shares nothing with other customers or with Valet's cloud. People build the same way they do in the cloud: they publish artifacts, apps and agents with the same CLI, MCP server and dashboard.
Two ways to run it
Valet runs it for you. Valet sets up a managed, dedicated installation and operates it, including upgrades and monitoring. It runs in an AWS account Valet keeps for you alone. Valet engineers have administrator access to that account to operate it, and each shell session they open into Valet's services is logged in the account.
Your team runs it. Valet engineers ship releases, and your operations team installs and upgrades the installation in your own AWS account, on its own schedule.
Either way, your administrators run your organization: members, connectors, resources and governance, through the dashboard, CLI and MCP server.
To talk about which fits your company, email support@valet.dev.
What runs in the account
VPC
- Used for
- A private network across two Availability Zones
Elastic Load Balancing
- Used for
- HTTPS for the dashboard, the API and the MCP server
CloudFront
- Used for
- Artifacts and apps, with a certificate for each organization
Route 53 and Certificate Manager
- Used for
- DNS and TLS certificates for the installation's domain
RDS for PostgreSQL
- Used for
- Valet's database, and optionally a server for app databases
S3
- Used for
- Published files, uploads and skills
EFS
- Used for
- The version history of every artifact, app and agent
Secrets Manager
- Used for
- Valet's secrets and encryption keys
ECS on Fargate
- Used for
- Valet's services, and an isolated task for each running agent, app process and build
CloudWatch Logs
- Used for
- Logs
Everything except the load balancer and the NAT gateway sits in private subnets with no public address.
What drives cost
An installation's AWS bill has a fixed part and a part that grows with use.
- Always on: Valet's services and database, the load balancer and the NAT gateway.
- Agents and apps: each running agent, and each running app process, is its own Fargate task, sized from 0.25 vCPU with 512 MB to 2 vCPU with 4 GB. An idle agent or app stops, and starts again on its next message or request, so a tool nobody is using costs little. A small pool of warm tasks keeps that start quick.
- Builds: an app build runs only while it builds.
- Storage and traffic: grow with what people publish and how often it's opened.
Model calls go to the providers the installation uses, with its own API keys; see Models. The account's Fargate vCPU quota caps how many agents, apps and builds run at once.
Security
- Two ways in. Only the load balancer and CloudFront face the internet, and both serve HTTPS only. No firewall or IP allowlist sits in front of them; Valet checks sign-in and access on every request.
- No long-lived AWS keys. Valet's services hold no AWS access keys. Each runs under its own IAM role, limited to the installation's own resources.
- No AWS permissions for your tools. Agent and app code runs with no AWS permissions at all.
- Private by default. Agents, apps, builds, databases and storage have no public address, and an app's database accepts connections only from inside the installation.
- Encrypted. Data is encrypted at rest in every store, and Valet encrypts secrets and credentials again before it writes them to its database. Connections to the databases use TLS.
See Security model for credentials, isolation and access.
Models
Valet works with any model served through an Anthropic-compatible or OpenAI-compatible API: Anthropic's and OpenAI's own models, other providers that offer a compatible API, or a model your company runs behind a compatible endpoint. Valet sets up the providers an installation uses.
Agents and apps call models through Valet's model proxy, which adds the provider's API key, so they never hold it. Prompts, responses and tool results go to the model's provider and nowhere else, and a model that runs inside your network keeps them there. Conversation history stays in the installation.
What leaves the installation
Outbound traffic leaves through one NAT gateway address, which a system you want the installation to reach can allowlist. Nothing filters it: agents, apps and builds can reach any internet address, so what they can reach inside your systems depends on the credentials they hold.
The installation connects to:
- Model providers, for model calls.
- WorkOS, for sign-in.
- Valet's catalog, when an organization is created or installs a catalog agent.
- Gravatar and Loops, for profile pictures and invitation emails. Gravatar receives a hash of a member's email address.
- The services organizations add: connectors, Slack, and log drains.
- Package registries, such as npm, PyPI and the Go module proxy, when apps build and agents install connectors.
- Optional services, only when turned on: Composio connectors, Firecrawl for drafting a design system from a website, Neon for app databases hosted outside the installation, and Valet's monitoring.
People's browsers also send the dashboard's product analytics and error reports to Valet, with the member's user ID and email.
Sign in and reach it
An installation has its own domain, <domain>. Everything is served
under it:
dashboard.<domain>
- Serves
- The dashboard
api.<domain>
- Serves
- The API, and the MCP server at
/mcp
gateway.<domain>
- Serves
- The console, webhook channels and agents' MCP channels
<org>.<domain>
- Serves
- The organization's front door and path-style artifact links
<name>.<org>.<domain>
- Serves
- Artifacts and apps
People sign in through WorkOS, which Valet sets up for the installation.
Dashboard. Open https://dashboard.<domain> and sign in.
CLI. Point the CLI at the installation before you log in, and keep these set for every command:
export VALET_API_URL=https://api.<domain>
export VALET_GATEWAY_URL=https://gateway.<domain>
export VALET_WORKOS_CLIENT_ID=<the installation's client ID>
export VALET_CONFIG_DIR=~/.config/valet-<name>Then run valet auth login.
Without VALET_WORKOS_CLIENT_ID, valet auth login signs you in to the
cloud. Without VALET_GATEWAY_URL, valet console talks to the cloud.
VALET_CONFIG_DIR keeps the installation's login apart from a cloud
one.
MCP. Add https://api.<domain>/mcp to your client as a custom
connector. The Valet plugin for Claude Code and Codex points at hosted
Valet, so add the server by its URL instead. MCP sign-in works once
Valet has set it up for the installation. See
MCP server.