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