Skip to main content
When a Miteos agent builds a website, web app, or mobile app, you don’t need to copy the code, configure a deployment pipeline, or touch a terminal. Connect your hosting provider once, and agents can deploy their output directly — from a task prompt to a live URL in a single workflow. This page covers every deployment target, how to connect them, and how to trigger deployments both manually and automatically.

Supported Targets

TargetBest ForWhat Gets Deployed
VercelNext.js and React apps, server-side APIs, full-stack web appsNode.js projects, static exports, API routes
NetlifyStatic sites, JAMstack apps, form-handling sitesHTML/CSS/JS builds, Netlify Functions
Cloudflare PagesEdge-deployed sites, globally distributed CDN deliveryStatic sites, Cloudflare Workers
ExpoReact Native mobile apps for iOS and AndroidExpo managed workflow builds, OTA updates
App StoreNative iOS appsXcode-compatible builds (requires Apple Developer account)
App Store deployments require an active Apple Developer Program membership ($99/year) and a connected Apple Developer account in your Miteos integrations. Expo builds can be submitted to the App Store directly from Miteos once both are connected.

Setting Up a Deploy Target

Connect your hosting provider once — all future deployments from that workspace will use the saved connection.
1

Open Deploy Targets settings

Go to Settings → Integrations → Deploy Targets in your Miteos workspace at platform.miteos.com.
2

Connect your account

Click Add Target and choose your provider. Miteos will redirect you through the provider’s OAuth flow (Vercel, Netlify, Cloudflare) or prompt you for an API token (Expo, App Store Connect).
  • Vercel — Authorize via Vercel OAuth. Select the team and project scope.
  • Netlify — Authorize via Netlify OAuth. Grant access to your sites.
  • Cloudflare — Enter your Cloudflare API token with Pages edit permissions.
  • Expo — Enter your Expo access token from expo.dev.
  • App Store — Upload your App Store Connect API key (.p8 file) and enter your Issuer ID and Key ID.
3

Configure the connection

After authorizing, fill in the connection details:
  • Project / Site name — the Vercel project or Netlify site to deploy to (or leave blank to let agents create a new one)
  • Team — your Vercel or Netlify team slug (for team accounts)
  • Production branch — typically main; agents push to this branch to trigger a production deploy
Click Save. The target now appears in your deploy targets list with a green status indicator.

Auto-Deploy with Tasks

Set auto_deploy: true in your task configuration and the agent will deploy its output automatically when the task completes — no manual step needed.
import { Miteos } from '@miteos/sdk';

const client = new Miteos({ apiKey: 'mt_live_xxx' });

const task = await client.tasks.create({
  prompt: 'Build a pricing comparison landing page for our SaaS product',
  config: {
    max_agents: 3,
    autonomy_level: 80,
    auto_deploy: true,
    deploy_target: 'vercel',
  },
});

console.log(`Task created: ${task.id}`);
// When the task completes, the agent will automatically deploy to Vercel
// and the deployment URL will appear in task.deployments[0].url
Python equivalent:
from miteos import Miteos

client = Miteos(api_key="mt_live_xxx")

task = client.tasks.create(
    prompt="Build a pricing comparison landing page for our SaaS product",
    config={
        "max_agents": 3,
        "autonomy_level": 80,
        "auto_deploy": True,
        "deploy_target": "vercel",
    },
)

print(f"Task created: {task.id}")
Use auto_deploy with an autonomy_level of 70 or higher. At lower autonomy levels, agents will raise an approval request before deploying — which is fine, but defeats the purpose of full automation.

Manual Deployment from the War Room

If you didn’t set auto_deploy, or if you want to choose a different target after reviewing the agent’s output, you can trigger a deployment manually from the War Room.
1

Open the Deliverables panel

Once your task completes, click the Deliverables panel in the bottom-right of the War Room. Agent-built apps and sites appear as a deployable deliverable card with a Deploy button.
2

Select your deploy target

Click Deploy on the deliverable card. A modal appears listing your connected deploy targets. Select the target you want to deploy to.
3

Confirm and trigger

Review the deployment summary (project name, target, branch) and click Deploy Now. Miteos packages the workspace output, pushes it to your provider, and shows a live progress indicator. When deployment finishes, the live URL appears directly in the War Room.

Triggering Deployments via API

Trigger a deployment programmatically from any completed workspace:
curl -X POST https://api.miteos.com/v1/deployments \
  -H "Authorization: Bearer mt_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "ws_abc123",
    "target": "vercel",
    "config_id": "cfg_your_vercel_config"
  }'
Example response:
{
  "id": "dep_xyz789",
  "status": "building",
  "target": "vercel",
  "workspace_id": "ws_abc123",
  "created_at": "2025-06-15T10:30:00Z",
  "url": null
}
Poll for completion (or use webhooks — see below):
const deployment = await client.deployments.get('dep_xyz789');

if (deployment.status === 'live') {
  console.log(`🚀 Live at: ${deployment.url}`);
}

Deployment Webhooks

Instead of polling, register a webhook to receive deployment status events as they happen. Events:
EventWhen it fires
deployment.startedThe deployment job has been created and the build is beginning
deployment.liveThe build succeeded and the URL is live; includes url in the payload
deployment.failedThe build or publish step failed; includes error and logs_url in the payload
Register a webhook:
await client.webhooks.create({
  url: 'https://your-app.com/webhooks/miteos',
  events: ['deployment.started', 'deployment.live', 'deployment.failed'],
  secret: 'whsec_your_signing_secret',
});
Handle deployment events:
app.post('/webhooks/miteos', (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'deployment.live':
      console.log(`✅ Deployed: ${event.data.url}`);
      // Notify your team, update your database, etc.
      break;
    case 'deployment.failed':
      console.error(`❌ Deploy failed: ${event.data.error}`);
      // Alert your on-call engineer or retry
      break;
  }

  res.sendStatus(200);
});
For a full list of webhook event schemas and signature verification, see the Webhooks documentation.