Skip to content

basemodo deploy

Deploy a folder and print its URL once it is live.

Terminal window
basemodo deploy [OPTIONS] [PATH]

Packs the folder (leaving out .git and what .gitignore, .ignore, .basemodoignore and .dockerignore exclude), uploads it, and Basemodo detects how to build and run it (or reads basemodo.toml), builds it and starts it; the command waits until the App answers HTTP at its URL. The App is created the first time. A Deploy that fails leaves the previous one live. With --repository there is no folder: the App is linked to that GitHub repository and its branch's latest commit is deployed.

Arguments

  • PATH: The folder to deploy. Default: the current one.
  • --name <NAME>: The App to deploy to. Default: name in basemodo.toml, else the folder's name (with --repository, the repository's name).
  • --repository <OWNER/REPO>: A GitHub repository to deploy instead of a folder, as owner/repo: the App is linked to it and its branch's latest commit is deployed now, and again on every push. Basemodo's GitHub App must be able to read it.
  • --branch <BRANCH>: With --repository: the branch to deploy. Default: the one the App is linked to, else the repository's default branch.
  • --subdir <SUBDIR>: With --repository: the folder of the repository that holds the App (apps/web). Default: the one the App is linked to, else the whole repository.
  • --workspace <WORKSPACE>: The Workspace whose App this is, by name: deploy to its App of that name, creating it the first time (which takes an Admin of the Workspace). Default: your own App of that name, else the one App of that name a Workspace of yours owns, else a new App of your own.
  • --link: In a clone of a GitHub repository: link the App to it (this branch and folder) without asking, so every push deploys it.
  • --no-link: Do not offer to link the App to the folder's GitHub repository.

Like every command, it also takes the global options --json and --api-url.

Examples

Deploy the folder you are in:

Terminal window
basemodo deploy

Deploy another folder, as an App of another name:

Terminal window
basemodo deploy ./site --name team-lunch

Deploy and keep the result for a script:

Terminal window
basemodo deploy --json > deploy.json

Deploy a GitHub repository's latest commit, without a clone (pushes deploy too):

Terminal window
basemodo deploy --repository ana/lunch-rota

Output

With --json, it prints {"url", "app", "deploy"}, the live Deploy with what was detected; progress events on stderr (upload, detect, queued, build, start, ready). A failed Deploy is an error with "deploy" and the build "log".

From an agent

The local MCP serves it as the tool deploy. It changes things, so an agent's client may ask you before it runs. Its arguments are the command's, named as JSON keys: path (text), name (text), repository (text), branch (text), subdir (text), workspace (text), link (flag), no_link (flag). It answers what the command prints with --json.

Explained in