Skip to content
Scalpels home

Scalpels is officially launching on October 31, 2026. Special early adopter pricing is available now.

← All documentation

Documentation

Crate

Getting started

Updated

This page takes you from an empty Scalpels team to a Composer project installing a private package from your own Crate.

Install Crate

Connect GitHub and Laravel Cloud to your Scalpels team, open Catalog, and install Crate. The general flow is described in Install a product. You are not asked to type any values.

For Crate, the install:

  • forks artisan-build/crate into your GitHub account and creates or reuses the Laravel Cloud application for it, on PHP 8.5;
  • provisions a Postgres database, a managed Laravel Valkey cache, a managed queue, an object storage bucket and the scheduler, and attaches them to the environment;
  • runs php artisan crate:install-satis as part of the build, so Satis is installed into the deploy artifact that every instance receives;
  • runs php artisan migrate --force after each deploy to create Crate's tables.

Each resource has a job. The database holds the list of served repositories, their encrypted source tokens and the build history. The cache provides shared locks that keep repository builds and recovery runs from overlapping across instances. The queue runs the Satis builds. The bucket holds the generated metadata and archives, which Crate streams back to Composer. The scheduler runs the daily rebuild and a once-a-minute job that re-dispatches builds requested by agents if they were lost.

Sign in

Crate's sign-in page is /bfc/login on your deployment's address. After signing in you land on a dashboard with a link to Settings, where you find Members, Sessions, Personal credentials and Installation credentials.

If the deployment page in Scalpels shows an Open Crate button, use it to sign in through Scalpels.

Otherwise, create the first Owner yourself. From a local checkout of your fork, with the Laravel Cloud CLI signed in and pointed at your application (cloud repo:config), run:

php artisan create-admin --environment=<environment-id>

The command asks for an email, name and password, creates the Owner in that Cloud environment, and prints Admin user <email> created. Sign in with those details. The Owner can then invite Admins and Members from Settings → Members.

Register your first package

Crate has no screen for adding repositories. Run Crate's Artisan commands in your Cloud environment, for example with the Cloud CLI:

cloud command:run <environment-id> --cmd="php artisan crate:repos:add acme/private-package https://github.com/acme/private-package.git --source-token=<read-only-token>" -n

Use the package name from the repository's composer.json. Leave out --source-token if the repository is public. Adding a repository queues a build for it straight away. See Serving packages for the details, including a warning about tokens in Laravel Cloud's command history.

Check progress with:

cloud command:run <environment-id> --cmd="php artisan crate:repos:list" -n

The repository's status moves from pending to building, then to active when the build succeeds.

Issue a credential and install the package

Open Settings → Personal credentials, choose crate.composer.consume / basic, give it a name and select Issue. Crate shows Save this credential now with a username and password once. Copy the password; you cannot see it again.

In any Composer project:

composer config repositories.crate composer https://crate.example.com
composer config --auth http-basic.crate.example.com token "<the password>"
composer require acme/private-package

Replace crate.example.com with your Crate's host. Composer stores the password in auth.json, which you must not commit.

For applications your team runs on Laravel Cloud or Forge, let Scalpels issue and write the credential instead. See Connecting your apps.