pinecallDocs
Hosting / pinecall deploy

pinecall deploy

Run the project on Pinecall: a release it installs and starts, rolled back or removed.

Terminal
~/acme-support $ pinecall deploy --prod --note "reads the order's eta back"
acme-support: release 4 sent · 38 KB · 3b507661b052
acme-support: the box installs and starts it; the release before keeps answering meanwhile
acme-support: release 4 is live

The platform runs the project for you: the same pinecall start you would run on a server (Production, "(c)"), in a container of its own on Pinecall's machines, with nothing to keep up. The whole guide — preparing a project, secrets, limits, CI, every refusal — is deploying.md; what follows is the verb's reference. What it takes:

  • The project, packed. Every file the project's .gitignore files leave in — each read where it sits, with no git asked, so a folder that is no checkout packs the same — and never node_modules, .git, dist or any .env: the key in .env is yours, and the app gets one of its own. 10 MB packed at most, 100 MB unpacked, 5 000 files; a link or a path out of the folder is refused.
  • A lockfile, and @pinecall/agents in the dependencies. The platform installs from pnpm-lock.yaml (pnpm install --frozen-lockfile --prod), else package-lock.json (npm ci), else package.json, in five minutes at most; the version of @pinecall/agents the lockfile pins is the one that serves the agent, started by the platform's own pinecall.
  • The app's name: this folder's name, or --name. Lower-case words and dashes. The first upload makes the app — counted against the org's hosted_apps quota in that environment, and given a server's token of its own (hosted app <name> in the console's Tokens); every later upload is its next release, numbered, never edited.

Then the platform installs the release, starts pinecall start (--prod in production) with the org's secrets, its token and the gateway's address in the environment, and the verb follows it: live once the release's agents have registered, which is when the release before is told to drain — so a deploy cuts no call. A release that does not install, exits, or registers nothing in two minutes is failed, printed with its last lines, and the release before keeps answering; the verb exits 1. --no-follow returns once the upload is kept.

Every agent under agents/ runs in the one process, as pinecall start holds them at the root. The sandbox's platform unless --prod; each environment hosts its own apps.

pinecall deploy list every app of the org in the environment: live: release 3, a release on its way, or the one that failed and why
pinecall deploy releases one app's releases, newest first: when, how big, who, and the note
pinecall deploy rollback <n> release n's sources kept again as the next release, on the platform itself, and followed like any
pinecall deploy logs [--follow] the last lines of the app's process, fresh: asking is what makes the platform send them, a beat or two later, so the verb waits up to fifteen seconds for lines read after it asked (older ones are printed with how old they are). --follow keeps printing the lines that come, until Ctrl-C
pinecall deploy stop · start stopped, its process drains and nothing runs — its releases and token stay, and list says stopped; started, its newest release runs again
pinecall deploy rm the app no longer hosted: its releases go and its token is revoked

The process prints no console link: a hosted app's output is a log, and a one-use code in a log is a way in for whoever reads it (see start).