KlatchDocsGet early access

Deploy and install

Agents install tools for themselves

Every agent has its own tools folder on your server. When it runs npm i -g vercel or pip install --user x, the tool lands there and is still there on its next turn. It never touches the server itself: agents cannot use apt or systemd, and nothing they install can be seen by another agent. Package registries (npm, PyPI) work even with internet access closed. Other downloads need AGENT_EGRESS=web. Deleting an agent deletes its tools.

Agents deploy when you say so

An agent never holds a deploy token. You store one, and the hub runs the deploy itself after you approve.

  1. Open Project settings, Deploy. Pick Vercel, Netlify, Cloudflare Pages or Your command.
  2. Fill in the project (and the folder or branch, if it is not the top of the main branch).
  3. Paste an access token and press Check token. It is stored encrypted and never shown again.
  4. Make sure the agent has the Deploy switch on (Team, the agent, Permissions). Lead, DevOps, Frontend and Backend have it by default.

Now an agent can ask to deploy. You get a card naming the target, the branch and the exact commit. After you approve it (you have a few seconds to undo), the hub exports that commit into a fresh, locked-down container, runs the provider's tool there and shows the result on the card: the live address, or the last lines of the log. The full log is one click away. A deploy that takes more than 15 minutes is stopped, and Stop all stops it too.

The token is only in the deploy container's environment. It is never on a command line, never in a chat, and every log is scrubbed (the token and its base64, hex, URL-encoded and reversed forms, plus anything key-shaped) before you read it. Provider tools are installed in the runner image at pinned versions (Vercel 65.8.0, Netlify CLI 27.16.0, Wrangler 4.156.0) and run directly, never through npx, from an empty folder with an empty home and no npm config. The repository's .npmrc, .yarnrc*, .vercel, .netlify and .wrangler are deleted from the copy first, and the project and team IDs always come from your settings (required for Vercel and Netlify), never from files in the repository. The container can reach the provider and the package registries, nothing else. Your command is the exception: it runs with sh -c inside your repository, gets $DEPLOY_TOKEN, and can reach the internet. Your command runs inside your repository with the token. Use it only with code you trust.

Deploy now in the Deploy tab starts one yourself, without an agent.

"Deploy without asking me when I say so"

Off by default. When it is on and your latest message in that chat, sent in the past 30 minutes, is exactly a short request (*deploy*, *deploy it*, *deploy now*, *ship it*, *go live*, *publish it*, *joylash*, *deploy qil*, optionally with *please*; no question mark, no "not"), an agent's request is approved at once and the card says so ("Approved by your message at 11:42"). One message approves one deploy. Only the branch you set in Deploy is approved this way; any other branch waits for you. If the project requires QA to pass a commit, the card shows "Waits for QA" until it has. Any other time, every deploy waits for you.

If something fails

You seeWhat to do
"Deploys are not set up for this project"Add the target and token under Project settings, Deploy.
"Check token" says the provider refused itThe token is incomplete, expired or from another account. Create a new one.
The card says Failed with log linesRead them; the fix is usually in the project (a build error) or the token's permissions.
"… is not a branch on the remote"Push the branch first, then ask again.