deploys

Import a GitHub repository and deploy it

Changed on

Body: { installation_id, repo_id } (a repository a GitHub account linked to the workspace reads) or { repo_url } (a public repository, https://github.com/owner/name; deploys by hand only), plus name?, branch? (default: the repository’s default), root_dir?, framework? (auto, node, python, dockerfile, compose, static), port? (3000), health_path? (/), install_cmd?, build_cmd?, start_cmd?, auto_deploy?, env? and deploy? (false: import only). Detection when framework is auto: orgo.json, a compose file, a Dockerfile, package.json (npm, pnpm, yarn or bun by lockfile; Node.js from .nvmrc or engines, 22 by default), a Python project (uv; a Procfile web: line or a start command), index.html. The app must listen on 0.0.0.0:<port>; it gets PORT. env values are stored encrypted, never returned, and masked in build logs. The first deployment is queued and built once the computer runs; nothing wakes it. At most 10 deploys a computer, and each is one of its 20 apps. Or an Ingot repo: { source: "ingot", repo: "<workspace>/<name>", at? } (a repo of the central Ingot server: the id of a workspace the caller owns or is a member of, then the repo’s name; another, or another workspace than a workspace key’s own, is 403 INGOT_WORKSPACE_MISMATCH; at: the changeset a deploy builds when it names none, default the newest on main); no GitHub repository, deploys main by hand only, its files exported on the computer with ingot export (which Bops installs with its config) instead of a clone.

post/api/computers/{id}/deploy-projects

Request

  • Base URL
    https://www.orgo.ai
  • Auth
    HTTP bearer

Path parameters

idstring required

Computer id.

Request body

source'github_app' | 'public' | 'ingot'

Required for an Ingot repo; read from the other fields when left out.

repostring

source ingot: the Ingot repo, <workspace>/<name>: the workspace’s id (or local), then a name of at most 64 characters.

atstring

source ingot: the changeset a deploy builds when it names none (default: the newest on main).

installation_idinteger
repo_idinteger
repo_urlstring
namestring
branchstring
root_dirstring
framework'auto' | 'node' | 'python' | 'dockerfile' | 'compose' | 'static'
portinteger
health_pathstring
install_cmdstring nullable
build_cmdstring nullable
start_cmdstring nullable
auto_deployboolean
envobject
deployboolean

Example request

{
  "repo_url": "https://github.com/owner/name"
}

Response

Imported; its first deployment is in deployments.

idstring uuid required
namestring required

Also the name of the computer app that runs it.

source'github_app' | 'public' | 'ingot' required
repostring nullable required

Null for an Ingot repo.

repo_urlstring nullable
installation_idstring nullable
branchstring required

main for an Ingot repo.

ingot_repostring nullable

An Ingot repo: <workspace>/<name> on the central Ingot server.

ingot_atstring nullable

An Ingot repo’s: the changeset a deploy builds when it names none; null is the newest on main.

root_dirstring
framework'auto' | 'node' | 'python' | 'dockerfile' | 'compose' | 'static'
detected_frameworkstring nullable
install_cmdstring nullable
build_cmdstring nullable
start_cmdstring nullable
portinteger required
health_pathstring
auto_deployboolean
disabledstring nullable

Why pushes no longer deploy it.

urlstring nullable

Its public URL, made with its first live deploy where public URLs are on.

app_idstring nullable

Its app (GET /api/computers/{id}/services).

env_keysstring[]
created_atstring date-time
updated_atstring date-time

Example response

{
  "repo": "acme/web",
  "ingot_repo": "0b6f4c7e-2d1a-4c3b-9e8f-7a6b5c4d3e2f/notes"
}

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the non-success response with the status