跳到主内容
智客 ZICQ

技能库 智客分类:运维与云 cargo-hosting

Cargo Hosting

在网络上放一些来自Cargo(Cargo)的网页应用(默认输入, 检测出其他静态框架), 触发器 :\"为这个\"建造一个仪表板",\"主持这个应用","给我一个URL来分享\","把这个\","我需要一个网络hook端点\","让它活起来","促进制作\","为我的团队分配一个UI","给我的工人一个API标志","为工人设置一个秘密","错过CARGO_API_TOKEN\","我的应用不能叫我的工人","在当地运行工人","把它放到我自己的域上去","通过Google\使网站可以索引". 跳过何时:应用或工人应被宣布为承诺的工作空间代码——使用货物项目.

7534 安装量

官方网址:作者主页

技能介绍

先看中文介绍;官方 description 原文单独保留,不改写 SKILL.md。

做什么

在网络上放一些来自Cargo(Cargo)的网页应用(默认输入, 检测出其他静态框架), 触发器 :\"为这个\"建造一个仪表板",\"主持这个应用","给我一个URL来分享\","把这个\","我需要一个网络hook端点\","让它活起来","促进制作\","为我的团队分配一个UI","给我的工人一个API标志","为工人设置一个秘密","错过CARGO_API_TOKEN\","我的应用不能叫我的工人","在当地运行工人","把它放到我自己的域上去","通过Google\使网站可以索引". 跳过何时:应用或工人应被宣布为承诺的工作空间代码——使用货物项目.

何时用

官方 description 未单独写出 Use when。按规范,代理会在用户任务与这段 description 的关键词匹配时激活本技能。

代理如何加载

按 Agent Skills 渐进披露:启动时只加载 name 与 description(约 100 token);任务匹配后才读入整份 SKILL.md 正文;scripts/、references/、assets/ 仅在需要时再读。 本文件正文结构:Cargo CLI — Hosting、Bootstrap、The lifecycle、URLs、Apps、Discover。

文件分析

文件分析:除 SKILL.md 外,正文引用了 references/examples/apps.md、references/examples/workers.md、references/examples/deployments.md、references/response-shapes.md、references/troubleshooting.md、references/prerequisites.md,属于带资源的技能包,这些文件按需再读。

官方 description(原文)

Put something on the internet from Cargo — hosted web apps (Vite by default, other static frameworks detected) and serverless edge workers that answer HTTP requests, plus the deployments that build and promote them, the env vars and secrets a worker reads, running a worker locally, and custom domains and search indexing for public sites. Triggers: \"build me a dashboard for this\", \"host this app\", \"give me a URL to share\", \"deploy this\", \"I need a webhook endpoint\", \"make it live\", \"promote to production\", \"ship a UI for my team\", \"give my worker an API token\", \"set a secret on the worker\", \"Missing CARGO_API_TOKEN\", \"my app cannot call my worker\", \"run the worker locally\", \"put it on my own domain\", \"make the site indexable by Google\". Skip when: the app or worker should be declared as committed workspace code — use cargo-project.

Cargo CLI — HostingBootstrapThe lifecycleURLsAppsDiscoverScaffold locally (Vite + @cargo-ai/app-sdk)Create the slot (slug unique per workspace; `url` in the response is the live host)Print .env.local for local developmentUpdate / removeApp buildsApp env vars are public

兼容:Requires @cargo-ai/cli (npm). Sign in or create an account with `cargo-ai login --email` (emailed code, no browser), `--oauth`, or an API token

来源分类:skills.sh agent-skill

SKILL.md 与 Agent 调用

官方规范 ↗
name
cargo-hosting
description
Put something on the internet from Cargo — hosted web apps (Vite by default, other static frameworks detected) and serverless edge workers that answer HTTP requests, plus the deployments that build and promote them, the env vars and secrets a worker reads, running a worker locally, and custom domains and search indexing for public sites. Triggers: \"build me a dashboard for this\", \"host this app\", \"give me a URL to share\", \"deploy this\", \"I need a webhook endpoint\", \"make it live\", \"promote to production\", \"ship a UI for my team\", \"give my worker an API token\", \"set a secret on the worker\", \"Missing CARGO_API_TOKEN\", \"my app cannot call my worker\", \"run the worker locally\", \"put it on my own domain\", \"make the site indexable by Google\". Skip when: the app or worker should be declared as committed workspace code — use cargo-project.
compatibility
Requires @cargo-ai/cli (npm). Sign in or create an account with `cargo-ai login --email` (emailed code, no browser), `--oauth`, or an API token
  1. 发现技能客户端向 Agent 提供名称与描述目录。
  2. 匹配与调用用户指定或任务匹配后,载入 SKILL.md 指令。
  3. 按需加载按步骤读取参考文档、使用脚本与素材。
指令中引用的文件 · 7
  • references/examples/apps.md
  • references/examples/workers.md
  • references/examples/deployments.md
  • references/response-shapes.md
  • references/troubleshooting.md
  • references/prerequisites.md
  • references/polling.md

以下路径提取自原文;文件是否齐全请以来源仓库中的完整目录为准。

具体调用语法与可用工具以目标 Agent 客户端为准。 查看调用机制说明 ↗

安装这个技能

Skills CLI ↗

先选择目标 Agent 和安装范围,保留技能包的附属文件,安装后检查客户端能否发现该技能。

该技能引用了附属文件,请从来源获取完整目录;仅复制 SKILL.md 可能缺少依赖。

交给 Agent 安装

复制安装指令给支持 Agent Skills 的代理,确认其中的目标目录与客户端匹配。

把 Agent Skill「cargo-hosting」安装到我的项目:SKILL.md 原文与官方 description 见 https://zicq.com/zh/skills/skl-44d074979aae0fe1-Cargo-Hosting.html
请存为 .cursor/skills/cargo-hosting/SKILL.md 或 .claude/skills/cargo-hosting/SKILL.md,frontmatter 的 name 与 description 保持原样,不要改写。
该技能还带 scripts/、references/、assets/ 等文件,请从 https://github.com/getcargohq/cargo-skills 取完整目录,不要只建一个 SKILL.md。

GitHub 完整包 ↗

终端安装 · Skills CLI

需要 Node.js 与 npx。先查看仓库技能列表,确认实际名称。

npx skills add 'https://github.com/getcargohq/cargo-skills' --list

npx skills add 'https://github.com/getcargohq/cargo-skills' --skill 'cargo-hosting'

CLI 会交互选择目标 Agent,默认安装到项目;用户级安装使用 -g。先通过查看命令核对仓库内容,再用 npx skills list 检查已安装技能。

阅读排版
--- name: cargo-hosting description: "Put something on the internet from Cargo — hosted web apps (Vite by default, other static frameworks detected) and serverless edge workers that answer HTTP requests, plus the deployments that build and promote them, the env vars and secrets a worker reads, running a worker locally, and custom domains and search indexing for public sites. Triggers: \"build me a dashboard for this\", \"host this app\", \"give me a URL to share\", \"deploy this\", \"I need a webhook endpoint\", \"make it live\", \"promote to production\", \"ship a UI for my team\", \"give my worker an API token\", \"set a secret on the worker\", \"Missing CARGO_API_TOKEN\", \"my app cannot call my worker\", \"run the worker locally\", \"put it on my own domain\", \"make the site indexable by Google\". Skip when: the app or worker should be declared as committed workspace code — use cargo-project." version: "1.1.1" compatibility: Requires @cargo-ai/cli (npm). Sign in or create an account with `cargo-ai login --email` (emailed code, no browser), `--oauth`, or an API token homepage: https://github.com/getcargohq/cargo-skills metadata: author: getcargo openclaw: requires: bins: - cargo-ai install: - kind: node package: "@cargo-ai/cli@latest" bins: - cargo-ai homepage: https://github.com/getcargohq/cargo-skills --- # Cargo CLI — Hosting **Cargo Hosting** runs two kinds of workspace-scoped resources, plus the deployments that ship them: - **App** — a static front end (a Vite single-page app by default; Next.js static export, Astro, SvelteKit, Nuxt, Gatsby and Create React App are detected too) served on its own subdomain (see [URLs](#urls)). The templates are built on `@cargo-ai/app-sdk` (Vite + refine + shadcn primitives, with `getCargoEnv()` / `useCargoApi()` wired to the workspace). - **Worker** — a serverless HTTP handler that runs on the edge (`fetch(request, env)`), built on `@cargo-ai/worker-sdk` (auto OpenAPI 3.1 spec at `/openapi.json`, Swagger UI at `/docs`). - **Deployment** — one build+upload of a local source directory to an app or worker. A deployment is **not live until it's promoted**. > For organizing apps/workers into **folders**, use [`cargo-workspace-management`](../cargo-workspace-management/SKILL.md) (`folder …`). The `--folder-uuid` flags here consume those folder UUIDs. > See `references/examples/apps.md`, `references/examples/workers.md`, and `references/examples/deployments.md` for end-to-end walkthroughs. > See `references/response-shapes.md` for JSON response structures. > See `references/troubleshooting.md` for common errors and how to fix them. ## Bootstrap Already signed in (`cargo-ai whoami` returns a workspace)? Skip to the next section. ```bash npm install -g @cargo-ai/cli # no global install? prefix every command with `npx @cargo-ai/cli` cargo-ai login --email [email protected] # emailed code, no browser; creates the account on first use # alternatives: --oauth (browser) · --token (CI) cargo-ai whoami # confirm the active workspace before any write ``` Every command prints JSON to stdout; failures exit non-zero with `{"errorMessage": "..."}`. Anything that creates a run or a batch is async — pass `--wait-until-finished` or poll the matching `get`. When the full skill bundle is installed, [`../cargo/references/prerequisites.md`](../cargo/references/prerequisites.md) adds the CLI version pin, token scopes, and the admin-only surface. ## The lifecycle Apps and workers follow the same shape — **scaffold → create slot → deploy → promote**: ``` init (local scaffold) → create (slot + slug) → deployment create (build+upload) → deployment promote (go live) ``` 1. **Scaffold** a local project from a template — `hosting app init ` / `hosting worker init `. 2. **Create the slot** in the workspace — `hosting app create --name --slug` → `appUuid` (or `workerUuid`). The `--slug` becomes part of the subdomain and must be unique within the workspace. 3. **(optional) Wire local dev** — for an app, `hosting app env ` prints the `.env.local` lines a local copy needs (Cargo OAuth + workspace + app UUID + API URL). For a worker, `npm run dev` in the scaffold (see [Run a worker locally](#run-a-worker-locally)). A worker that calls the Cargo API also needs a `CARGO_API_TOKEN` secret before its first deploy (see [Worker env vars and secrets](#worker-env-vars-and-secrets)). 4. **Deploy** — `hosting deployment create --app-uuid --source ` uploads the source. The backend then builds it in a sandbox: for an app, `npm ci --ignore-scripts` followed by the app's own `build` script, or the framework's default build if there is none (see [App builds](#app-builds)); for a worker, it bundles the entrypoint. Returns a `deploymentUuid`. 5. **Promote** — `hosting deployment promote --uuid ` points the live URL at that build. Deploys build asynchronously — **poll `hosting deployment get `** until the status is terminal before promoting (see [Async polling](#async-polling)). ## URLs The live host is **`-`** under the hosting root domain, and apps and workers have **different root domains** — in production `https://-.app.getcargo.run` for an app, `https://-.worker.getcargo.run` for a worker. The workspace suffix is what makes the host globally unique, which is why a slug only has to be unique inside your workspace. Don't build the URL by hand. Read `url` from `create` or `get` — the root domain differs per environment. Each deployment also gets a preview host, `https://deployment-.`, before it is promoted. Because the roots differ, **an app calling a worker is always a cross-origin request.** No option serves them on the same origin, so the worker has to answer CORS. See the app + worker pattern in [`references/examples/workers.md`](references/examples/workers.md#calling-a-worker-from-an-app). ## Apps ```bash # Discover cargo-ai hosting app list # all apps (filter with --folder-uuid ) cargo-ai hosting app get # one app's details + URL # Scaffold locally (Vite + @cargo-ai/app-sdk) cargo-ai hosting app init ./my-app --list-templates # see available templates, then: cargo-ai hosting app init ./my-app --template blank --name "My App" # Create the slot (slug unique per workspace; `url` in the response is the live host) cargo-ai hosting app create --name "My App" --slug my-app --folder-uuid # Print .env.local for local development cargo-ai hosting app env cargo-ai hosting app env --api-url https://api.getcargo.io # Update / remove cargo-ai hosting app update --uuid --name "Renamed" cargo-ai hosting app update --uuid --folder-uuid null # move to workspace root cargo-ai hosting app remove # also removes its deployments ``` Templates: `blank` (minimal starting point), `territories-overview` (read-only territories grid demoing `useCargoApi()` + react-query), and `public-site` (a public, indexable site that prerenders every route from its own build script and ships `robots.txt` + `sitemap.xml`). Run `app init --list-templates` for the current list. ### App builds **If `package.json` declares a `build` script, Cargo runs it, and that script owns the whole build.** Cargo runs nothing before or after it, so the script must produce the client bundle as well as anything extra, such as prerendered HTML. Without a `build` script, the detected framework's default command runs: | Framework (detected from dependencies) | Default build | Output dir | Public env prefix | |---|---|---|---| | Vite, and anything undetected | `vite build` | `dist` | `VITE_` | | Next.js (static export) | `next build` | `out` | `NEXT_PUBLIC_` | | Astro | `astro build` | `dist` | `PUBLIC_` | | SvelteKit | `svelte-kit build` | `build` | `PUBLIC_` | | Nuxt | `nuxt generate` | `.output/public` | `NUXT_PUBLIC_` | | Gatsby | `gatsby build` | `public` | `GATSBY_` | | Create React App | `react-scripts build` | `build` | `REACT_APP_` | - **Output must land in that framework's output directory and contain an `index.html`**, or the build fails. Unknown paths fall back to that shell. - **Whatever the build script does now runs on every deploy.** That includes a `tsc` pass, a different `--mode`, and `prebuild`/`postbuild` hooks. A script that fails there fails the deploy. The live deployment keeps serving, because promotion only follows a successful build. - **A `build` script Cargo can't use falls back silently.** That covers an unparseable `package.json`, an empty script, or a non-string entry. The deploy still goes green, and only the build log says why, so check it when a prerender step seems to have been skipped. - **Platform values are injected under every public prefix.** A Vite app reads `VITE_CARGO_API_URL` and a Next.js app reads `NEXT_PUBLIC_CARGO_API_URL`. When a `build` script is used, they are also passed as real process env vars, so a plain-Node prerender step sees them. User env values are redacted from build logs. ### App env vars are public An app reads only env vars whose key starts with a **public prefix**: `VITE_`, `NEXT_PUBLIC_`, `PUBLIC_`, `NUXT_PUBLIC_`, `GATSBY_` or `REACT_APP_`. Any of these prefixes works whatever the framework. They come from workspace env vars and from app-level entries (`POST /v1/hosting/env-vars` with `"kind":"app"`, or CDK `defineApp({ env })`). Every one of them is compiled into a bundle anyone can download. For that reason: - **App env vars cannot be secret.** The API rejects `isSecret: true` with `secretNotSupportedForApp`, CDK `defineApp` throws on a `secret()` value, and secret workspace entries never reach an app build. Credentials belong in a worker that the app calls. - Keys matching a platform key under any prefix (`*_CARGO_API_URL`, `*_CARGO_WORKSPACE_UUID`, `*_APP_BASE_PATH`, …) are reserved. - Values are baked in at build time, so a change needs a new deploy + promote. ### Custom domains and search indexing **Cargo-owned hosts are `noindex`.** The default `*.app.getcargo.run` host and every `deployment-` preview answer with `X-Robots-Tag: noindex`, so **an app only becomes indexable on a custom domain**. No CLI command attaches one at CLI 1.0.96, so use the API: ```bash CARGO_API_BASE=$(cargo-ai whoami | jq -r '.baseUrl') # https://api.getcargo.io in production curl -X POST "$CARGO_API_BASE/v1/hosting/custom-domains" \ -H "authorization: Bearer $CARGO_API_TOKEN" -H "content-type: application/json" \ -d '{"kind":"app","appUuid":"","hostname":"www.example.com"}' # → DNS records to add: certificate validation records + a cnameTarget for the hostname curl -X POST "$CARGO_API_BASE/v1/hosting/custom-domains//refresh-status" \ -H "authorization: Bearer $CARGO_API_TOKEN" # repeat until status is "active" ``` - The hostname needs **at least three labels**, so attach `www.example.com`, not `example.com`. - Workers take custom domains too (`"kind":"worker","workerUuid":…`). Separate hostnames are still separate origins, so app → worker CORS still applies. - **Indexing also needs real HTML per URL.** Prerender in the `build` script (the `public-site` template shows how). Link prerendered routes as `.html` paths: `/about.html` serves the prerendered file, while `/about` falls back to the SPA shell. Ship `public/robots.txt` + `public/sitemap.xml`, and put a title, description, canonical and Open Graph tags in each prerendered head. - **A hosted app never returns a 404.** An unknown path serves the SPA shell with a `200`, so a client-side not-found view should set `` itself. - **Apps built on `CargoRefineApp` require a Cargo login** and cannot be indexed. A public site renders its own tree. - Nothing is submitted to search engines for you. Submit the sitemap in Search Console. ## Workers Same command shape as apps — substitute `worker` for `app`: ```bash cargo-ai hosting worker list # filter with --folder-uuid cargo-ai hosting worker get # Scaffold (edge fetch(request, env) handler on @cargo-ai/worker-sdk) cargo-ai hosting worker init ./my-worker --list-templates cargo-ai hosting worker init ./my-worker --template blank --name "My Worker" cargo-ai hosting worker create --name "My Worker" --slug my-worker --folder-uuid cargo-ai hosting worker update --uuid --name "Renamed" cargo-ai hosting worker remove # also removes its deployments ``` Templates: `blank` (auto OpenAPI spec + Swagger UI) and `custom-integration` (a Cargo Custom Integration — manifest / actions / extractors / autocompletes / dynamic schemas). **Entrypoint.** The build bundles the first of `src/index.ts`, `src/index.js`, `index.ts`, `index.js` that exists, and fails if there is none. `.mjs`, `.mts` and `.cjs` entrypoints are not picked up, so rename them to `.js`/`.ts`; ES module syntax works in `.js` because the scaffold's `package.json` sets `"type": "module"`. ### Worker env vars and secrets A worker reads configuration from `c.env.KEY` (Hono context) or the `env` argument to `fetch(request, env)`. Three sources feed it: | Source | Set with | Reaches | |---|---|---| | **Platform bindings** | automatic | `CARGO_API_URL`, `CARGO_WORKSPACE_UUID`, `CARGO_WORKER_UUID` | | **Workspace env vars** | `cargo-ai workspaceManagement envVar create --key K [--secret]` | every worker in the workspace (apps get only the non-secret, public-prefixed ones) | | **Worker env vars** | `defineWorker({ env })` in CDK, or `POST /v1/hosting/env-vars` (no `hosting` CLI command at CLI 1.0.96) | that worker only, and a worker entry overrides a workspace entry with the same key | **`CARGO_API_TOKEN` is not injected.** `createCargoApi(c.env)` throws `Missing CARGO_API_TOKEN…` until you provide one. Mint a workspace API token and store it as a secret before the first deploy: ```bash cargo-ai workspaceManagement token create --name "worker: my-worker" # value shown ONCE export CARGO_API_TOKEN= cargo-ai workspaceManagement envVar create --key CARGO_API_TOKEN --secret \ --description "Cargo API token for hosted workers" # --value omitted → read from $CARGO_API_TOKEN ``` A workspace entry gives *every* worker that token. If only one worker should hold it, set it on that worker instead: - **CDK:** `defineWorker("my-worker", { path, env: { CARGO_API_TOKEN: secret("CARGO_API_TOKEN") } })`. - **API:** `POST /v1/hosting/env-vars` with `{"kind":"worker","workerUuid":"","key":"CARGO_API_TOKEN","value":"…","isSecret":true}`. From TypeScript that is `api.hosting.envVars.create(…)` in `@cargo-ai/api`, and `list` takes `{ workerUuid }`. **Values are captured at deploy time, not read live.** Bindings are attached when a deployment is promoted, and non-secret values are also compiled into the bundle as `process.env.KEY`. After adding or changing a variable, **run `deployment create` and `promote` again**. The running worker keeps the old values until then. **Secrets never enter the bundle.** A secret binds as an encrypted runtime value. Only non-secret values are compiled in, and bundles can be downloaded from the per-deployment preview host, so anything sensitive must be `--secret` / `isSecret: true`. ### Run a worker locally Both templates ship a `dev.ts` harness: `npm run dev` serves `src/index.ts` under Node with hot reload on `http://localhost:8787` (override with `PORT`). `dev.ts` is never deployed. - **No platform bindings exist locally**, so `c.env` is empty. `createCargoApi` falls back to `process.env`, so export `CARGO_API_TOKEN` (and `CARGO_API_URL` for a non-production API) in the shell before `npm run dev`. Your own variables need the same fallback in your code. - **`manifest.json` `outboundAllowlist` and cron triggers are not enforced locally.** Test them on a deployment. A project scaffolded before `dev.ts` existed can copy it from a fresh `hosting worker init`, along with the `dev` script and the `@hono/node-server` + `tsx` dev dependencies. ### Worker logs and errors `createWorker()` captures `console.log/info/warn/error/debug` during each request Cargo dispatches and ships them to the worker's logs (at most 50 lines per request). An **uncaught** error is logged with its stack and answered with a bare `500`. **A caught error leaves no trace.** If a route catches an exception and returns its own sanitized response, such as `502 "The data provider is unavailable"`, the log gets only the HTTP line. **Log the error before you sanitize it:** ```ts try { return c.json(await loadData(createCargoApi(c.env))); } catch (err) { console.error(err); // stack goes to the logs; the response stays clean return c.json({ error: "The data provider is unavailable." }, 502); } ``` At CLI 1.0.96 the logs are readable in the web app or through the API: `POST /v1/hosting/logs/list` with `{"workerUuid":"","levels":["error"],"limit":50}`, or `api.hosting.log.list(…)` from TypeScript. It also filters on `runUuid`, `search`, and `occurredAfter`/`occurredBefore`. The CLI has no logs command yet. ## Deployments A deployment belongs to exactly one app **or** one worker (`--app-uuid` and `--worker-uuid` are mutually exclusive). ```bash # List / inspect cargo-ai hosting deployment list --app-uuid # or --worker-uuid cargo-ai hosting deployment get # status + metadata cargo-ai hosting deployment get-promoted --app-uuid # what's currently live # Build & upload a local source directory (point at the package root, NOT dist/) cargo-ai hosting deployment create --app-uuid --source ./my-app cargo-ai hosting deployment create --worker-uuid --source ./my-worker # default ignores: node_modules,dist,build,.git,.next — override with --ignore "a,b,c" # Go live cargo-ai hosting deployment promote --uuid ``` ## Critical rules - **`--slug` is unique per workspace**, and the live host is `-.`, with a different root for apps and workers. Use the `url` from `get` rather than composing it (see [URLs](#urls)). A duplicate slug fails at `create` with `duplicateSlug`. - **An app calling a worker is cross-origin.** The worker must send CORS headers for the app's origin. No same-origin mount exists. - **`CARGO_API_TOKEN` is yours to provide.** It is never injected, and `createCargoApi` throws without it. Set it as a secret (workspace or worker env var) **before** the deploy that needs it. - **Env var changes need a new deploy + promote.** Values are bound at promote and non-secrets are compiled into the bundle, so editing a variable changes nothing until the next deployment is live. - **Log before you sanitize.** Only uncaught errors reach the logs with a stack. A `catch` that returns a friendly message must `console.error(err)` first, or the cause is gone. - **Deploying ≠ going live.** `deployment create` builds and uploads; the URL only changes when you `deployment promote` that deployment. Use `deployment get-promoted` to see what's live now. - **`--source` is the package root, not `dist/`.** The build runs in a Cargo sandbox: `npm ci --ignore-scripts` then the app's `build` script (or the framework default) for apps, entrypoint bundling for workers. Shipping a pre-built `dist/` will not work. - **App env vars are public and never secret.** They are compiled into the bundle, and `isSecret` is rejected. Put credentials in a worker. - **Cargo-owned hosts are `noindex`.** A public site needs a custom domain (API only at 1.0.96) and prerendered HTML to be indexed. - **Builds are async** — poll `deployment get` until terminal before promoting (see below). - **`--app-uuid` / `--worker-uuid` are mutually exclusive** on `deployment create`, `deployment list`, and `deployment get-promoted`. Pass exactly one. - **`remove` cascades** — removing an app or worker also removes all of its deployments. - **`update --folder-uuid null`** (literal string `null`) moves a resource back to the workspace root. - **Hosting consumes credits monthly per resource.** Each app/worker carries a `chargedUntil` that an hourly sweep advances a month at a time, so a live app or worker bills hosting credits on an ongoing basis — `remove` resources you no longer serve. Track consumption via [`cargo-billing`](../cargo-billing/SKILL.md). ## Async polling `deployment create` kicks off a sandboxed build. The deployment's `status` moves `pending → building → success` (or `error` / `cancelled`). Poll until terminal, then promote the `success` one: ```bash cargo-ai hosting deployment get # poll ~2–5s until status is terminal ``` Terminal statuses are `success`, `error`, and `cancelled` — only promote a `success` deployment. On `error`, read the deployment's `errorMessage` (and `buildLogS3Filename`) to diagnose the build. For the general polling pattern (intervals, retries), see [`../cargo-orchestration/references/polling.md`](../cargo-orchestration/references/polling.md). ## Help Every command supports `--help`: ```bash cargo-ai hosting app create --help cargo-ai hosting deployment create --help ```

相关技能

运维与云

Docker Essentials

用于容器管理,图像操作,调试的基本道克命令和工作流程.

运维与云

Find Skills

从开放的代理技能生态系统中发现并安装技能. 使用时:(1)用户问"我如何做X",X可能拥有现有技能,(2)用户说"为X找到技能"或"是否为X有技能",(3)用户问"你能否做X",X是专门能力,(4)用户想扩展代理能力,(5)用户想搜索工具,模板,或工作流程,(6)用户提到他们希望…

运维与云

Azure Diagnostics

Azure上使用AppLens,AzureMonitor,资源健康,安全分型的调试Azure生产问题. 当:调试生产问题,故障解答应用服务,应用服务高CPU,应用服务部署失败,故障解答容器应用,故障解答功能,故障解答AKS,VM RDP,Linux SSH,VM黑屏幕,无法连接到…

运维与云

Azure Prepare

准备 azd 用于部署的Azure项目:为Azure开发者CLI(azd)工作流程生成azure.yaml,基础设施(Bicep/Terraform)和多克文件. 仅当用户明确想要使用 azd 作为部署工具时使用, 或项目已经有一个 azure 。 雅姆尔文件。 不使用: 非az…