# Agent Lab Docs > Agent Lab is Crescendo Lab's enterprise AI agent platform. These docs explain how to deploy web pages and container apps on Agent Lab, manage versions and addresses, and set up scheduled jobs. --- title: Deploy overview description: Upload files or source code. Agent Lab builds them into a version, gives it an address and runs it. Every version is kept. url: https://agentlab.cresclab.com/docs/en/deploy language: en updated: 2026-10-06 --- # Deploy overview Upload files or source code. Agent Lab builds them into a version, gives it an address and runs it. Every version is kept. ## What you can deploy - [Static site](https://agentlab.cresclab.com/docs/en/deploy/static-site.md): Built HTML, CSS and JavaScript, such as the contents of `dist/`. No server needed. - [Container app](https://agentlab.cresclab.com/docs/en/deploy/container-app.md): Source code with a Dockerfile, for webhooks, APIs, and code that uses a secret or calls other services. - [Deploy with an AI tool](https://agentlab.cresclab.com/docs/en/deploy/ai-agent.md): Let Claude Code or Codex create the app, upload and go live for you over MCP. ## How it works 1. **Create an app** Pick a name and an address label. The label becomes part of the app's address. 2. **Upload** What you upload decides what the app is: an `index.html` at the top makes a web page, a `Dockerfile` makes a service. 3. **Build and check** The platform builds a new version and scans the files for secrets, personal data and scripts loaded from elsewhere. A container app's image is also scanned for vulnerable packages. Every version gets its own preview address. 4. **Go live** An app's first version goes live on its own. After that, you choose when a version goes live. 5. **Roll back** If a new version has a problem, put the previous one live again. Nothing is rebuilt. ## Key concepts | Term | Meaning | | ---------------- | ---------------------------------------------------------------------------------- | | App | A site or service you deploy, with its own address, versions and settings. | | Version | What one upload built. Versions are never overwritten. | | Public address | The address visitors open. It shows the live version. | | Internal address | An address only your organization's services can call. | | Branch | Another environment of the same app, with its own settings, secrets and databases. | The [glossary](https://agentlab.cresclab.com/docs/en/deploy/glossary.md) lists these terms in every language. ## Web page or service? > [!WARNING] If anything runs on a server, deploy a container app > That includes receiving a webhook or a form, using an API key, and calling another service from the server. An API key in a web page can be read by every visitor. --- title: Deploy a static site description: Deploy built web pages as a site with an HTTPS address. url: https://agentlab.cresclab.com/docs/en/deploy/static-site language: en updated: 2026-10-06 --- # Deploy a static site Deploy built web pages as a site with an HTTPS address. ## Before you begin - Your built files, such as the `dist/` folder that `npm run build` creates. - Permission to create apps. Only administrators can create apps. If you upload a zip, create it from inside the folder so that `index.html` is at the top of the zip: ```bash cd dist zip -r ../site.zip . ``` > [!WARNING] Common mistake > Zipping the `dist` folder itself puts the page at `dist/index.html`. Without an `index.html` at the top, the version is refused. ## 1. Create an app 1. **Open Deploy › Apps** Select **Create app**. 2. **Enter a name and an address label** Use lowercase letters, numbers and hyphens, for example `launch-page`. > [!NOTE] Address labels are never reused > Even after the app is deleted, no other organization gets its address. Check the spelling before you create the app. ## 2. Upload **Console** On the app's **Deploy** tab, drop a folder, a `.zip` or an `index.html` on the upload area (or choose one), then select **Upload and build**. The platform builds a new version and, before it can go live, scans the files for secrets and personal data. **AI tool** In an AI tool connected to Agent Lab MCP, type: ```prompt Deploy dist/ to the Agent Lab app launch-page. Show me the preview address first, and wait for my OK before going live. ``` See [Deploy with an AI tool](https://agentlab.cresclab.com/docs/en/deploy/ai-agent.md) to set it up. ## 3. Go live An app's first version goes live on its own once it builds. Visitors see it at the public address: ```text https://launch-page--acme.hosting.agentlab.run ``` Later versions don't go live on their own. Open a version's preview address to check it, then select **Go live** on the **Deploy** tab. ## Next steps - [Versions, going live and rolling back](https://agentlab.cresclab.com/docs/en/deploy/versions.md) - [Addresses and access](https://agentlab.cresclab.com/docs/en/deploy/addresses.md): to show the site to a few people only, make the app private with a password. --- title: Deploy an app from a Dockerfile description: Deploy a long-running service, such as a webhook, an API or a tool for agents, from source code with a Dockerfile. url: https://agentlab.cresclab.com/docs/en/deploy/container-app language: en updated: 2026-10-06 --- # Deploy an app from a Dockerfile Deploy a long-running service, such as a webhook, an API or a tool for agents, from source code with a Dockerfile. ## Before you begin - A program that answers HTTP requests. - A `Dockerfile` at the top of the project. ## 1. Write the Dockerfile This Node.js example listens on `$PORT`, exposes exactly one port, and runs as a non-root user: ```dockerfile Dockerfile FROM node:22-slim WORKDIR /app COPY package*.json ./ RUN npm ci --omit=dev COPY . . USER node EXPOSE 8080 CMD ["node", "server.js"] ``` ```js server.js import { createServer } from "node:http"; const port = Number(process.env.PORT ?? 8080); createServer((req, res) => { res.writeHead(200, { "content-type": "application/json" }); res.end(JSON.stringify({ ok: true, path: req.url })); }).listen(port); ``` The image must meet these rules. The [container runtime contract](https://agentlab.cresclab.com/docs/en/deploy/runtime-contract.md) has the full list. - A `CMD` or `ENTRYPOINT` starts the server. - The server answers HTTP on `$PORT`. - The image is built for `linux/amd64`. - The filesystem is read-only apart from `/tmp`. ## 2. Upload the source On the app's **Deploy** tab, drop the source folder or its `.zip` on the upload area, then select **Upload and build**. The `Dockerfile` must be at the top. If you make the zip yourself, leave out `node_modules`, `.git` and `.env`: ```bash zip -r ../app.zip . -x 'node_modules/*' '.git/*' '.env*' ``` The platform builds the image, scans it for vulnerabilities and secrets, and checks it against the runtime contract. Anything the platform adapted shows as a notice on the version page, for example "The image runs as root, so it runs as uid 10001." > [!NOTE] Already have an image? > Push it to your organization's image registry, then choose **An image** under **Deploy a new version from** to make a version from it. ## 3. Go live and check the runtime An app's first version goes live on its own once it builds. Later versions go live when you select **Go live** on the **Deploy** tab. The **Runtime** tab shows which version is serving and how many instances are ready. > [!WARNING] The version never becomes ready > The usual cause is the port: the server isn't listening on the port the platform gave it. See [Troubleshoot failed deployments](https://agentlab.cresclab.com/docs/en/deploy/troubleshooting.md#not-ready). ## 4. Add secrets Enter API keys and other secret values in the app's **Settings**. Your code reads them as environment variables. Saved settings apply when you restart the service, and the old instances keep serving until the new ones are ready. See [App settings](https://agentlab.cresclab.com/docs/en/deploy/app-settings.md#secrets). > [!WARNING] Keep secrets out of your source > If the scan finds a key in the image, take it out of the source, set it as a secret of the app instead, and rotate the key. --- title: Deploy with an AI tool description: Let Claude Code, Codex or another MCP client create the app, upload and go live for you. You sign in once in your browser. url: https://agentlab.cresclab.com/docs/en/deploy/ai-agent language: en updated: 2026-10-06 --- # Deploy with an AI tool Let Claude Code, Codex or another MCP client create the app, upload and go live for you. You sign in once in your browser. ## 1. Connect Agent Lab MCP Run the command for your tool in a terminal. Replace `acme` with your organization's name; the console's **MCP** page shows the command with it filled in. **Claude Code** ```bash claude mcp add --transport http agentlab-acme https://api.agentlab.cresclab.com/v1/mcp ``` **Codex** ```bash codex mcp add agentlab-acme --url https://api.agentlab.cresclab.com/v1/mcp codex mcp login agentlab-acme ``` **Other MCP clients** Add an HTTP MCP server at: ```text https://api.agentlab.cresclab.com/v1/mcp ``` A sign-in page opens in your browser. Sign in and choose your organization to finish. > [!NOTE] No password, token or API key > Authorization happens in the browser. The connection can do what you can do in the console, and nothing more. ## 2. Ask it to deploy In your project folder, ask the tool to read the deploy guide and follow it: ```prompt Read https://app.agentlab.cresclab.com/agent/deploy.md and follow it to deploy this folder to the Agent Lab organization acme. ``` To have it look something up in these docs, give it a page's Markdown address or the index at `https://agentlab.cresclab.com/docs/en/llms.txt`. The MCP server also has a `docs_read` tool that returns the same pages. ## 3. What it does 1. **Finds or creates the app** It confirms the address label with you first, because labels can't be reused. 2. **Uploads** It uploads the zip straight to the address the platform gives it. Your files don't pass through the conversation. 3. **Waits for the build** It checks the version's status until the build succeeds or fails. 4. **Asks before going live** It tells you which version will go live and waits for your OK. > [!NOTE] You still enter secrets yourself > The tool tells you where to enter a secret. It won't ask you to paste one into the conversation. See [MCP tools](https://agentlab.cresclab.com/docs/en/deploy/mcp-tools.md) for every tool. --- title: Versions, going live and rolling back description: Every upload creates a new version. Versions are never overwritten, and any version that built can go live, newer or older. url: https://agentlab.cresclab.com/docs/en/deploy/versions language: en updated: 2026-10-06 --- # Versions, going live and rolling back Every upload creates a new version. Versions are never overwritten, and any version that built can go live, newer or older. ## Build stages After an upload, a version moves through these stages. Its row on the **Deploy** tab shows the current one. | Stage | What the platform is doing | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | Queued | Waiting for a build machine. The row shows how many builds are ahead. | | Building | Building the web page or the container image. | | Scanning | Checking for secrets, personal data and scripts loaded from elsewhere. A container image is also scanned for vulnerabilities and secrets. | | Reviewing | Collecting the scan results. | | Awaiting confirmation | A check set to "asks first" found something. After reading the findings, you can publish anyway. | | Succeeded | The version can go live. | | Failed | The content was refused or the platform failed. See [Troubleshoot failed deployments](https://agentlab.cresclab.com/docs/en/deploy/troubleshooting.md). | Each check in a version's results says how it is handled: "blocks the deploy", "asks first" or "not run". ## Go live An app's first version goes live on its own once it builds. For later versions, select **Go live** on the version's row on the **Deploy** tab. Visitors see the new version within a minute. Before going live, open the version's preview address to check it. Every version keeps its own preview address, whichever version is live. ## Roll back If a new version has a problem, find an earlier version in the list and select **Roll back to this**. It's the same action as going live: nothing is uploaded or rebuilt. > [!NOTE] Internal calls move too > Other apps that call this app's internal address reach the live version. Going live or rolling back changes where those calls land. ## Branches When an app has more than one branch, every action applies to the branch you are on. The upload button reads "Upload and go live on ‹branch›", and going live affects only that branch. Each branch has its own settings and secrets. Before a version goes live on a branch, the platform compares the branch's variable and secret names and tells you about any that are missing. --- title: Addresses and access description: Every app has a public address, a preview address per version and an internal address. You can leave it public or protect it with a password. url: https://agentlab.cresclab.com/docs/en/deploy/addresses language: en updated: 2026-10-06 --- # Addresses and access Every app has a public address, a preview address per version and an internal address. You can leave it public or protect it with a password. ## The three addresses An address is made of the address label and your organization's name. All of them use HTTPS. | Address | Who can open it | Example | | ----------------------- | --------------------------------------------------------- | ------------------------------------------------------- | | Public address | Anyone; a password if the app is private | `https://order-api--acme.hosting.agentlab.run` | | Version preview address | Anyone with the address; a password if the app is private | One per version, shown next to it | | Internal address | Only your organization's apps; a browser can't open it | `https://order-api--acme.internal-hosting.agentlab.run` | ## Address labels You choose the address label when you create the app. It uses lowercase letters, numbers and hyphens. Once used, a label stays with your organization, and nobody else gets it even after the app is permanently deleted. ## Public or private Choose the app's access in its **Settings**: | Option | Effect | | ------- | ------------------------------------------------------------------------------------------------------------- | | Public | Anyone with the address can view it. | | Private | Every address of the app (the public address and each version's preview address) shows a password page first. | The console generates the password and shows it once. If it's lost, generate a new one. > [!NOTE] Private apps are served without the CDN > That's fine for a handful of reviewers, but not for heavy traffic. ## Calling another app Apps in the same organization call each other at their internal addresses: - Only your organization's apps can call it, from inside the platform. Other organizations, builds and the internet can't. - The certificate is publicly trusted, so a default HTTP client works. - A call reaches the live version. - The internal address has no password page. Protect sensitive endpoints in your code. A request that arrives on the internal address carries an `X-Franky-Caller-App` header with the address label of the app that sent it. Trust it only when `Host` is the internal domain: ```js server.js const internal = req.headers.host?.endsWith(".internal-hosting.agentlab.run"); const caller = internal ? req.headers["x-franky-caller-app"] : undefined; if (req.url.startsWith("/admin") && caller !== "billing-worker") { res.writeHead(403).end(); return; } ``` --- title: App settings description: Use the app's Settings to change the port, secrets and access, or to pause or remove the app. url: https://agentlab.cresclab.com/docs/en/deploy/app-settings language: en updated: 2026-10-06 --- # App settings Use the app's Settings to change the port, secrets and access, or to pause or remove the app. ## Port The platform picks a container app's port in this order and passes it to your program in the `PORT` environment variable: 1. The value in **Settings › Runtime settings › Port**, if set. 2. Otherwise, the one TCP port the image `EXPOSE`s. 3. Otherwise, `8080`. ## Secrets Secrets are confidential values such as API keys and tokens. You enter them in the console, and your code reads them as environment variables. Each branch has its own secrets. > [!WARNING] Enter secrets only in the console > Don't put them in a file or a command, and don't paste them into a conversation with an AI tool. ## Apply settings Saving runtime settings doesn't change what is running. The overview says the settings have changed; select **Restart service** to apply them. The old instances keep serving until the new ones are ready. ## Pause, remove and delete | Action | What happens | Can it be undone? | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | Pause app | The app goes offline and visitors see a neutral page. Everything is kept, and no new version can be deployed while it's paused. | Yes. Select **Resume app**. | | Remove app | The app goes offline now and a seven-day grace period starts. | Restore it within seven days. After that, its versions are deleted. | | Delete permanently | Every version and address is deleted now. You type the app's name to confirm. | No. The address is never given to anyone else. | --- title: Container runtime contract description: The rules a container app's image must follow. Where the platform can adapt an image, it does, and leaves a notice on the version page. url: https://agentlab.cresclab.com/docs/en/deploy/runtime-contract language: en updated: 2026-10-06 --- # Container runtime contract The rules a container app's image must follow. Where the platform can adapt an image, it does, and leaves a notice on the version page. ## Rules | Item | Requirement | If not met | | ----------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | Start command | A `CMD` or `ENTRYPOINT`. | The version is refused. | | Port | Serve HTTP on `$PORT`. | Chosen from setting → `EXPOSE` → 8080; see [App settings](https://agentlab.cresclab.com/docs/en/deploy/app-settings.md#port). | | Platform | `linux/amd64`. | A push for another platform is refused. | | User | A non-root `USER` is recommended. | Root or no `USER` runs as uid 10001, group 0. A `USER` the image doesn't have is refused. | | Filesystem | Read-only apart from `/tmp`. | Writes elsewhere fail. | | Cloud credentials | None are provided. | Use the app's secrets to reach outside services. | When an image runs as uid 10001, the files it reads must be readable by group 0. ## Notices What the platform adapted shows as notices on the version page and the image's **Check** tab. AI tools read the same codes from the deploy status. | Code | Meaning | What to do | | --------------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `imageUserForced` | The image runs as root, so it runs as uid 10001. | Nothing. To clear the notice, set a non-root `USER` in the Dockerfile. | | `imagePortFromExpose` | The app listens on the one port the image exposes. | Nothing. | | `imagePortsAmbiguous` | The image exposes several ports and none is 8080, so it runs on 8080, which is probably not where the server listens. | Choose the right port in **Settings › Runtime settings › Port** and restart the service, or `EXPOSE` only that port in the Dockerfile. | ## Images that write files at start-up Some images write outside `/tmp` when they start. `nginx:alpine`, for example, writes to `/var/cache/nginx` and fails on a read-only filesystem. Use an image that doesn't need to write, or move its writes to `/tmp`: ```dockerfile Dockerfile FROM nginxinc/nginx-unprivileged:alpine COPY dist/ /usr/share/nginx/html/ ``` > [!TIP] Only serving static files? > [Deploy a static site](https://agentlab.cresclab.com/docs/en/deploy/static-site.md) instead. You don't need to run nginx yourself. --- title: Scheduled jobs description: A scheduled job makes one HTTP call to one of your organization's apps on a clock, like Google Cloud Scheduler. url: https://agentlab.cresclab.com/docs/en/deploy/scheduled-jobs language: en updated: 2026-10-06 --- # Scheduled jobs A scheduled job makes one HTTP call to one of your organization's apps on a clock, like Google Cloud Scheduler. ## What a job is made of The call reaches whichever version is live at that moment. | Field | Description | | --------- | ----------------------------------------------------------------------------------------------------------------- | | App | The container app to call. | | Path | Appended to the app's address. Starts with `/`; a query string is allowed. For example `/tasks/daily`. | | Method | `GET`, `POST`, `PUT`, `PATCH` or `DELETE`; `POST` by default. A body is sent only with `POST`, `PUT` and `PATCH`. | | Schedule | A five-field cron expression: minute, hour, day of month, month, day of week. At most once a minute. | | Time zone | `Asia/Taipei` by default. | Some cron expressions: | Expression | Runs | | -------------- | ---------------------------------- | | `0 9 * * *` | Every day at 09:00 | | `*/15 * * * *` | Every 15 minutes | | `0 8 * * 1` | Every Monday at 08:00 | | `0 0 1 * *` | At 00:00 on the 1st of every month | ## Create a job 1. **Add an endpoint to your app** For example `POST /tasks/daily`, with the recurring work in it. Deploy it and go live. 2. **Create the job** Open **Deploy › Scheduled jobs**, choose the app, and enter the path and schedule. 3. **Run it once by hand** Use **Run now**, then check the response code and log in the run history. ## Check that a call came from the schedule By default a call carries no proof of where it came from. Choose one of these: - Set your own header on the job, such as `X-Cron-Secret`, store the value as a secret of the app, and compare the two in your code. - Turn on the signed token. The call then carries `Authorization: Bearer `; verify it against `https://api.agentlab.cresclab.com/.well-known/jwks.json` with `aud` = `franky:app:`. ## How runs behave | Item | Behavior | | -------- | ------------------------------------------------------------------------------------------ | | Overlap | Runs never overlap. A run that comes due while the previous one is still going is skipped. | | Delivery | At least once, so a run can arrive twice. De-duplicate on the `X-Franky-Run-Id` header. | | Retries | 0 by default, at most 5. | | Deadline | 15 seconds to 30 minutes; 3 minutes by default. | ```js server.js const runId = req.headers["x-franky-run-id"]; if (await alreadyHandled(runId)) { res.writeHead(200).end(); return; } ``` --- title: Troubleshoot failed deployments description: When a version fails, read the reason on its page. If the content was refused, fix it and upload again; if the platform failed, retry. url: https://agentlab.cresclab.com/docs/en/deploy/troubleshooting language: en updated: 2026-10-06 --- # Troubleshoot failed deployments When a version fails, read the reason on its page. If the content was refused, fix it and upload again; if the platform failed, retry. ## The content was refused | What you see | Cause | Fix | | ------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | | No `index.html` found | The folder was zipped instead of its contents. | Zip from inside the folder so `index.html` is at the top. | | A secret in the files | The upload contains something that looks like an API key or token. | Remove it, rotate the key, enter it in the app's **Settings**, and upload again. | | The image has no `CMD` | The Dockerfile has no start command. | Add a `CMD` or `ENTRYPOINT`. | | The `USER` doesn't exist | The Dockerfile names a user the image doesn't have. | Use a numeric uid or a user the image has, such as `node`. | | Push refused, not amd64 | The image was built as arm64 on an Apple silicon Mac. | Rebuild with `docker build --platform linux/amd64`. | | Critical vulnerabilities | A package in the image has a known critical vulnerability. | Upgrade the package to the version the finding names, or move to a newer base image that has it. | ## Awaiting confirmation When a check set to "asks first" finds something, the version stops at **Awaiting confirmation**. After reading the findings, you can publish anyway. High vulnerabilities are handled this way; the fix is the same as for critical ones, and upgrading is what clears the warning. ## The version never becomes ready If the build succeeded and the version is live but the **Runtime** tab never shows ready instances, the server is usually not listening on the port the platform gave it. 1. Check the version page for an `imagePortsAmbiguous` notice. 2. Make the server listen on the `PORT` environment variable, or enter the port it listens on in **Settings › Runtime settings › Port**. 3. Select **Restart service**. ## It keeps restarting The usual cause is a program writing outside `/tmp` on the read-only filesystem. Move the writes to `/tmp`; see the [container runtime contract](https://agentlab.cresclab.com/docs/en/deploy/runtime-contract.md#writable-paths). ## The platform failed When the platform itself caused the failure, retry the same version. You don't need to change or upload anything. ## Still stuck - On the **Runtime** tab, check the instances and read the recent logs. - On the image's **Check** tab, read the notices the platform left. - Ask an AI tool connected to Agent Lab MCP to read the deploy status for you. It sees the same codes as this page. --- title: MCP tools description: The deploy tools on the Agent Lab MCP server. An AI tool can do what you can do in the console, and nothing more. url: https://agentlab.cresclab.com/docs/en/deploy/mcp-tools language: en updated: 2026-10-06 --- # MCP tools The deploy tools on the Agent Lab MCP server. An AI tool can do what you can do in the console, and nothing more. ## Endpoint ```text https://api.agentlab.cresclab.com/v1/mcp ``` See [Deploy with an AI tool](https://agentlab.cresclab.com/docs/en/deploy/ai-agent.md#connect) to connect. Every tool takes an `organization` argument; the server says its value when the client connects. ## Apps and versions | Tool | What it does | | ----------------------- | --------------------------------------------------------------------- | | `sites_list` | Lists apps with their addresses and internal addresses. | | `sites_create` | Creates an app. The address label can't be reused. | | `sites_deploy` | Starts a new version and returns an upload address and token. | | `sites_deploy_finalize` | After the upload finishes, sends the version to be built. | | `sites_deploy_status` | A version's stage, failure reason, port and notices. | | `sites_deploy_retry` | Retries a version the platform failed, without a new upload. | | `sites_promote` | Makes a version live. Also used to roll back. | | `sites_runtime_status` | Which version is serving and how many instances are ready. | | `sites_restart` | Applies saved settings without downtime. | | `sites_files` | A version's file list: paths, sizes and hashes, never the contents. | | `sites_lifecycle` | Pauses, resumes, removes or restores an app, in every branch at once. | | `sites_purge` | Deletes an app permanently. This can't be undone. | ## Scheduled jobs | Tool | What it does | | ------------------------------------------------ | ----------------------------------------------------------------------------- | | `scheduled_jobs_list`, `scheduled_jobs_get` | Lists jobs, or reads one. | | `scheduled_jobs_create`, `scheduled_jobs_update` | Creates or changes a job. An update replaces the whole job, so read it first. | | `scheduled_jobs_run` | Runs a job now. | | `scheduled_jobs_runs` | Run history, and one run's log. | | `scheduled_jobs_lifecycle` | Pauses, resumes or deletes a job. | ## Branches and docs | Tool | What it does | | ------------------- | ------------------------------------------------------------------ | | `environments_list` | Lists the organization's branches. | | `docs_read` | Reads these docs as Markdown. Without a page it returns the index. | > [!NOTE] Name the branch when there is more than one > When the organization has more than one branch, every call must name one; otherwise it's refused with `environmentRequired`. ## Docs links in answers When a deploy is refused, the failure in `sites_deploy_status` carries `help`, the Markdown address of [Troubleshoot failed deployments](https://agentlab.cresclab.com/docs/en/deploy/troubleshooting.md). Image notices carry `noticesHelp`, pointing at the [container runtime contract](https://agentlab.cresclab.com/docs/en/deploy/runtime-contract.md#notices). --- title: Glossary description: The terms these docs use in each of their four languages. They follow the console first, then the localized docs of Google Cloud, Cloudflare and Vercel. url: https://agentlab.cresclab.com/docs/en/deploy/glossary language: en updated: 2026-10-06 --- # Glossary The terms these docs use in each of their four languages. They follow the console first, then the localized docs of Google Cloud, Cloudflare and Vercel. ## Terms | English | 正體中文 | 日本語 | ไทย | 參考 / Reference | | -------------------- | ------------ | ------------------ | ---------------------- | ---------------------------------------------- | | Deploy | 部署 | デプロイ | ดีพลอย | Google Cloud, Cloudflare, Vercel | | App | App | アプリ | แอป | Cloudflare Workers & Pages | | Version | 版本 | バージョン | เวอร์ชัน | Cloudflare Versions (Cloud Run: revision) | | Go live | 上線 | 公開 | เผยแพร่ | Vercel: Promote to Production | | Roll back | 回到先前版本 | ロールバック | ย้อนกลับ | Cloudflare Rollbacks, Vercel Instant Rollback | | Production | 正式環境 | 本番環境 | โปรดักชัน | Vercel, Cloudflare | | Preview address | 版本預覽網址 | プレビューアドレス | ที่อยู่พรีวิว | Cloudflare Preview URLs | | Public address | 對外網址 | 公開アドレス | ที่อยู่สาธารณะ | Agent Lab console | | Internal address | 內網網址 | 内部アドレス | ที่อยู่ภายใน | Agent Lab console | | Address label | 網址標籤 | アドレスラベル | ป้ายกำกับที่อยู่ | Agent Lab console | | Branch | 分支 | ブランチ | สาขา | Cloudflare Pages branches, Vercel Environments | | Build | 建置 | ビルド | บิลด์ | Google Cloud Build | | Container image | 容器映像檔 | コンテナイメージ | อิมเมจคอนเทนเนอร์ | Google Cloud Artifact Registry | | Image registry | 映像檔登錄檔 | イメージレジストリ | รีจิสทรีอิมเมจ | Google Cloud Artifact Registry | | Port | 通訊埠 | ポート | พอร์ต | Google Cloud | | Instance | 執行個體 | インスタンス | อินสแตนซ์ | Google Cloud Run | | Environment variable | 環境變數 | 環境変数 | ตัวแปรสภาพแวดล้อม | Google Cloud, Vercel, Cloudflare | | Secret | 密鑰 | シークレット | ความลับ | Google Secret Manager, Cloudflare Secrets | | Access | 存取權 | アクセス | การเข้าถึง | Google Cloud IAM | | Logs | 記錄 | ログ | บันทึก | Google Cloud Logging | | Scheduled job | 排程工作 | スケジュールジョブ | งานตามกำหนดเวลา | Google Cloud Scheduler | | Cron expression | cron 運算式 | cron 式 | นิพจน์ cron | Cloudflare Cron Triggers | | Time zone | 時區 | タイムゾーン | เขตเวลา | Google Cloud | | Restart | 重新啟動 | 再起動 | รีสตาร์ต | Google Cloud | | Pause / Resume | 暫停 / 恢復 | 一時停止 / 再開 | หยุดชั่วคราว / เปิดต่อ | Agent Lab console | | Remove / Restore | 移除 / 還原 | 削除 / 復元 | ลบออก / กู้คืน | Agent Lab console | | Delete permanently | 永久刪除 | 完全に削除 | ลบถาวร | Agent Lab console | | Notice | 提示 | お知らせ | ประกาศ | Agent Lab console | ## How the terms were chosen - Where the console already has a word, the docs use it, so the page and the screen match. - Where it doesn't, the docs use the word Google Cloud's localized docs use. - Loanwords stay where the industry uses them, such as デプロイ in Japanese and ดีพลอย in Thai. - Things are named as people see them on screen: branch, not the internal name environment.