---
title: Documentation
url: "/"
canonical_url: https://docs.blossom88.com/
markdown_url: https://docs.blossom88.com/index.md
summary: Blossom — Prompt and Deploy.
---

# Documentation

<section class="docs-splash">
  <div>
    <h1>Prompt and <span>Deploy</span></h1>
    <p class="docs-splash-tagline">Let Your Apps Blossom.</p>
    <p class="docs-lede">Give your AI agent a deployment prompt. Blossom deploys your App and keeps it running.</p>
    <div class="docs-hero-actions">
      <a href="/learn/prompt-and-deploy/" class="docs-button" data-tone="primary">Get Started</a>
      <a href="/docs/intro/how-it-works/" class="docs-button">See How It Works</a>
    </div>
    <div class="docs-prompt not-typography">
      <header><span>Prompt</span><span>Blossom + AI Agents</span></header>
      <p>Deploy this repository to Blossom as a production App.</p>
      <p>Detect its Services and data dependencies. Use recommended production defaults.</p>
    </div>
    <ol class="docs-splash-steps not-typography">
      <li><strong>Prompt</strong><span>Your AI agent</span></li>
      <li><strong>Deploy</strong><span>Health verified</span></li>
      <li><strong>Run</strong><span>Kept healthy</span></li>
    </ol>
  </div>
  <div class="docs-hero-mark">
    <img src="/assets/images/logos/blossom.png" alt="">
  </div>
</section>

<section class="docs-splash-section">
  <header>
    <h2>Everything Around Your App</h2>
    <p>Tell Blossom what you need. It keeps your Apps healthy.</p>
  </header>
  <div class="docs-card-grid" data-columns="3">
    
    <a href="/docs/capacity/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/></svg>Pay for What Runs</h3>
      <p>Usage-based, with a monthly budget you set. A change that would go over it waits, or choose a hard stop. Alerts warn you first.</p>
    </a>
    
    <a href="/docs/capacity/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4"/></svg>Automatic Capacity</h3>
      <p>Blossom adds the Capacity your Apps need and retires it when demand returns to zero.</p>
    </a>
    
    <a href="/docs/intro/how-it-works/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/></svg>Self-Healing Apps</h3>
      <p>Blossom remembers what should be running, watches what is, and brings the two back in line.</p>
    </a>
    
    <a href="/docs/apps/zero-downtime-deploy/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/></svg>Safe Rolling Releases</h3>
      <p>Health-aware rollouts keep the old Containers serving until their replacements are ready.</p>
    </a>
    
    <a href="/docs/build/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/></svg>Source to Release</h3>
      <p>Connect a repository once. Blossom builds each change and releases it through the same path.</p>
    </a>
    
    <a href="/docs/apps/preview-environments/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2"/></svg>Preview Environments</h3>
      <p>A temporary copy for each pull request or branch, with its own URL and database.</p>
    </a>
    
    <a href="/docs/apps/environment-access/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"/></svg>Environment Access</h3>
      <p>Keep a site to your team, share it with a link, or let tests in with a token.</p>
    </a>
    
    <a href="/docs/apps/jobs/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>Scheduled Jobs</h3>
      <p>Run commands on a schedule in your time zone, from the same release as your App.</p>
    </a>
    
    <a href="/docs/monitoring/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"/></svg>Observe Every App</h3>
      <p>Logs, metrics, Containers, health and Activity explain what's running and what changed.</p>
    </a>
    
    <a href="/docs/data/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"/></svg>Managed Data</h3>
      <p>Database and Cache instances on private endpoints, with backups and recovery handled for you.</p>
    </a>
    
    <a href="/docs/backups/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"/></svg>Backups and Recovery</h3>
      <p>Choose how long backups are kept and restore your data without managing snapshots.</p>
    </a>
    
    <a href="/docs/domains/" class="docs-card docs-feature">
      <h3><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/></svg>Domains and TLS</h3>
      <p>Generated URLs work at once. Add your own domain and Blossom keeps HTTPS current.</p>
    </a>
    
  </div>
</section>

<section class="docs-splash-section">
  <header>
    <h2>Any <span>Language</span></h2>
    <p>Ruby to Python, Node.js to Java. Start from a working example.</p>
  </header>
  <div class="docs-logo-grid">
    
    <a href="/docs/quickstarts/ruby-rails/">
      <img src="/assets/images/frameworks/ruby-rails.svg" alt="">
      <strong>Ruby</strong>
      <span>Rails, Sinatra</span>
    </a>
    
    <a href="/docs/quickstarts/nodejs-express/">
      <img src="/assets/images/frameworks/nodejs-nextjs.svg" alt="">
      <strong>Node.js</strong>
      <span>Express, Next.js</span>
    </a>
    
    <a href="/docs/quickstarts/python-django/">
      <img src="/assets/images/frameworks/python-django.svg" alt="">
      <strong>Python</strong>
      <span>Django, FastAPI, Flask</span>
    </a>
    
    <a href="/docs/quickstarts/java-spring-boot/">
      <img src="/assets/images/frameworks/java-spring-boot.svg" alt="">
      <strong>Java</strong>
      <span>Spring Boot, Javalin</span>
    </a>
    
    <a href="/docs/quickstarts/dotnet-aspnet-razorpages/">
      <img src="/assets/images/frameworks/dotnet-aspnet-razorpages.svg" alt="">
      <strong>.NET</strong>
      <span>Razor Pages, Minimal API</span>
    </a>
    
    <a href="/docs/quickstarts/php-laravel/">
      <img src="/assets/images/frameworks/php-laravel.svg" alt="">
      <strong>PHP</strong>
      <span>Laravel, Slim</span>
    </a>
    
    <a href="/docs/quickstarts/go-gin/">
      <img src="/assets/images/frameworks/go-gin.svg" alt="">
      <strong>Go</strong>
      <span>Gin</span>
    </a>
    
    <a href="/docs/quickstarts/scala-http4s/">
      <img src="/assets/images/frameworks/scala-http4s.svg" alt="">
      <strong>Scala</strong>
      <span>Http4s</span>
    </a>
    
  </div>
  <p class="docs-splash-more"><a href="/docs/quickstarts/" class="docs-button">Explore Quickstarts</a></p>
</section>

<section class="docs-splash-section">
  <header>
    <h2>Blossom Cloud or <span>Your Cloud</span></h2>
    <p>Run in Blossom Cloud's regions, or connect your own account. Apps work the same way.</p>
  </header>
  <div class="docs-logo-grid" data-kind="clouds">
    
    <a href="/docs/locations/cloud-providers/aws/"><img src="/assets/images/providers/aws.svg" alt="AWS"></a>
    
    <a href="/docs/locations/cloud-providers/azure/"><img src="/assets/images/providers/azure.svg" alt="Azure"></a>
    
    <a href="/docs/locations/cloud-providers/gcp/"><img src="/assets/images/providers/gcp.svg" alt="Google Cloud"></a>
    
    <a href="/docs/locations/cloud-providers/digitalocean/"><img src="/assets/images/providers/digitalocean.svg" alt="DigitalOcean"></a>
    
    <a href="/docs/locations/cloud-providers/hetzner/"><img src="/assets/images/providers/hetzner.svg" alt="Hetzner"></a>
    
    <a href="/docs/locations/cloud-providers/vultr/"><img src="/assets/images/providers/vultr.svg" alt="Vultr"></a>
    
    <a href="/docs/locations/cloud-providers/linode/"><img src="/assets/images/providers/linode.svg" alt="Linode"></a>
    
  </div>
  <p class="docs-splash-more"><a href="/docs/locations/" class="docs-button">Where Apps Run</a></p>
</section>

<section class="docs-splash-section">
  <header>
    <h2>From Prompt to <span>Production</span></h2>
    <p>Ask your agent, deploy, and see it running.</p>
  </header>
  <div class="docs-card-grid" data-columns="3">
    
    <a href="/learn/prompt-and-deploy/" class="docs-card docs-step">
      <span class="docs-step-number">1</span>
      <h3>Prompt</h3>
      <p>Tell your agent to deploy, or open New App. Blossom reads the repository and you name what runs.</p>
      <ul><li>Your source or image</li><li>Services and data</li><li>Within your monthly budget</li></ul>
    </a>
    
    <a href="/learn/prompt-and-deploy/" class="docs-card docs-step">
      <span class="docs-step-number">2</span>
      <h3>Deploy</h3>
      <p>Blossom builds the image, releases it, and checks health before it takes traffic.</p>
      <ul><li>Buildpacks or your Dockerfile</li><li>Health-aware releases</li><li>Previews for pull requests</li></ul>
    </a>
    
    <a href="/docs/monitoring/" class="docs-card docs-step">
      <span class="docs-step-number">3</span>
      <h3>Keep Running</h3>
      <p>Blossom watches the App, restarts what fails, and shows you what happened.</p>
      <ul><li>Self-healing</li><li>Logs and metrics</li><li>Activity</li></ul>
    </a>
    
  </div>
  <p class="docs-splash-more"><a href="/learn/prompt-and-deploy/" class="docs-button" data-tone="primary">Get Started</a></p>
</section>
