Skip to content

Getting started

The one-liner

bash <(curl -fsSL https://aibp.drupalstarforge.ai/install.sh)

This downloads the released installer script and runs it with bash. Nothing is installed by the download itself; the script asks before it changes anything, and --yolo answers every prompt with the default:

bash <(curl -fsSL https://aibp.drupalstarforge.ai/install.sh) --yolo

The URL redirects to https://project.pages.drupalcode.org/one_line_installer/drupalaibp, the script published on GitLab Pages. Publishing happens only when a release tag is cut, so this always serves the latest release. To try unreleased work from the development branch, use the raw branch URL instead:

bash <(curl -fsSL https://git.drupalcode.org/project/one_line_installer/-/raw/2.0.x/drupalaibp)

What it does to your machine

The installer touches the host as little as possible:

  1. bash 4 (macOS only). macOS ships bash 3.2. On an old bash the script installs a side-by-side bash via Homebrew (installing Homebrew first if absent) and re-executes itself under it. The system bash is never touched.
  2. Docker. If no Docker provider is present, it installs one: Docker Desktop guidance on macOS, Docker Engine via the distribution's package manager on Linux (this is where sudo is needed).
  3. DDEV. If ddev is not on your PATH, it runs DDEV's official install script, which also sets up mkcert so https://*.ddev.site certificates are trusted.

Everything else runs inside the DDEV web container: Composer, Drush, npm, and the coding-agent CLIs. Nothing else lands on the host.

The build

All questions come first: project name, install profile (Drupal CMS, standard, minimal, or a drupal.org site template), coding agents, agent skills, the command denylist, extra Drupal installations, any custom questions from a config, and the optional GitHub setup. After the last answer the build runs unattended:

  1. Creates the project directory and the DDEV configuration.
  2. Stages the coding-agent add-ons and starts DDEV once.
  3. Scaffolds the site with composer create-project and runs drush site:install (Drupal builds).
  4. Installs the dev defaults for Drupal builds: drupal/core-dev, drupal/ai_best_practices, and a starter phpunit.xml.
  5. Applies config provisioning (Composer repositories and packages, modules, recipes, DDEV add-ons) and the chosen extras.
  6. Installs the agent skills, writes the command denylist and the managed block in AGENTS.md.
  7. Exports Drupal configuration to config/sync, opens the site in your browser, and pushes to GitHub if you opted in.
  8. Hands the shell over to the chosen coding agent, if any.

You end up with a site at https://<name>.ddev.site (admin/admin) and, if you chose an agent, a prompt inside it. Start the agent again any time with ddev claude, ddev codex, or ddev opencode.

Config-driven builds

A .drupalaibp/ directory with one or more *.json configs pre-configures the entire build. The installer picks it up automatically from the directory you launch in, or you point at a source explicitly:

drupalaibp https://git.drupalcode.org/project/foo      # a git repo with .drupalaibp/
drupalaibp ./team-config                               # a local directory
drupalaibp my-config                                   # a saved config

See the config reference for the schema and the examples for two complete configs.

Management mode

Running the installer inside a directory that is already a DDEV project opens a management menu instead of building. It adds or removes the tooling the installer manages: AI Best Practices, coding agents and their denylist, agent skills, DDEV add-ons, and GitHub setup (add only). Management mode is interactive and refuses --yolo.

Next steps