Blossom Docs
Blossom

Reference

blossom app_plan:create

Save an App Plan and show its resources and capacity

Usage

blossom app_plan:create [--location LOCATION] [--data DATA] [--note NOTE] [--prepared-by PREPARED_BY]

Flags

Flag Description
--location Location id (defaults to profile or Account default)
--data, -d YAML or JSON data, a path to a data file, or an HTTP(S) URL
--note A note for whoever reviews the plan: why it exists, what to check, what an agent decided
--prepared-by The tool or agent that prepared the plan, shown beside your name, such as “Claude Code”

Examples:

cd path/to/the/app
blossom app_plan:create
blossom app_plan:init
blossom app_plan:create --data app_plan.yml
blossom app_plan:create --note "Derived from the Procfile; check the port" --prepared-by "Claude Code"
blossom app_plan:create -d '{"app_plan":{"quickstart":"ruby-sinatra"}}'
blossom app_plan:create -d '{"app_plan":{"app_name":"demo","environment_name":"production","clone_url":"https://github.com/blossom-examples/ruby-sinatra","services":[{"name":"web","command":"web","port":3000}]}}'

Without --data, reads the intent from the repository in the working directory, so cd into the repository first; there is no path or directory flag. It takes the source from the origin remote, the App name from the repository, and the Services from the Procfile, with web public on port 3000 and release hooks left out. A buildpack repository without a Procfile gets the bare web command, which runs the image’s default web process.

Saves the App Plan and prints what deploying it will create: the App (new or existing), the Environment, each Service with its command, port, whether it is public or private, and allocation, the region, and the capacity the region will need. Nothing is created until you deploy it, from the terminal or from the Web UI:

blossom app_plan:deploy --id app_plan-100

A plan is a reusable starter, not a managed resource: each deploy creates one more Environment and the plan stays for the next one. --note leaves a line for whoever reviews the plan, and --prepared-by names the tool or agent that prepared it beside your name.

app_plan.yml:

app_plan:
  app_name: demo
  environment_name: production
  repository_type: public
  clone_url: https://github.com/blossom-examples/ruby-sinatra
  services:
    - name: web
      command: web # or the exact command, e.g. bundle exec puma -C config/puma.rb
      port: 3000
      publicly_exposed: true
  # quickstart: ruby-sinatra   # prefill from the catalog instead
  location_id: location-100

A quickstart key from blossom quickstart:list prefills the source, the App name, and the Service command of that example App; anything you set alongside it wins.

Blossom detects how to build the source but never how to run it: every Service needs a command. With a buildpack build the bare word web runs the image’s Procfile web process. Select a saved Location with --location or app_plan.location_id; otherwise the profile or Account default applies. Use blossom location:list for Blossom Cloud and Blossom BYOC destinations. Prices vary by Location. Environments inherit their App’s Location.

Local files and inline data support $VAR and ${VAR} substitution from .env, BLOSSOM_VARS_FILE, and the process environment, so write a Service command that needs a literal $PORT as $$PORT. See blossom help:data.

After the first deploy, push variables and deploy again when they change:

blossom env_var:push --environment environment-100
blossom environment:deploy --id environment-100 --follow
On this page