Skip to main content
Exo registers nine Artisan commands for managing installation, resources, users, licensing, and Exo Cloud connectivity.

exo:install

Install Exo and prepare Passport for API token creation.
The command publishes Exo configuration and migrations, prepares Passport configuration and migrations when needed, generates Passport encryption keys, runs migrations, updates your local User model for Passport tokens when possible, and creates the Passport personal access client required by exo:user.
Existing published files, Passport keys, and personal access clients are reused unless you pass --force. Existing Passport migrations are detected so OAuth tables are not duplicated.

exo:resource

Scaffold a new resource class.
Examples:
The file is created at the path defined by config('exo.resources_path') (default: app/Exo/Resources/).

exo:user

Create a new user with an optional Personal Access Token.
Examples:
The Personal Access Token is only displayed once. Copy and store it securely.
Your User model must use the Laravel\Passport\HasApiTokens trait and implement Laravel\Passport\Contracts\OAuthenticatable for token creation to work. exo:install updates the configured local app User model automatically when possible.

exo:login

Authenticate with Exo Cloud using OAuth.
Opens your browser for PKCE authorization. After authorizing, credentials are stored encrypted at storage/app/.exo-credentials. If PKCE isn’t available, falls back to device code flow.

exo:logout

Remove stored Exo Cloud credentials.
Deletes the encrypted credentials file.

exo:whoami

Check your current Exo Cloud identity.
Displays the name and email associated with your stored Exo Cloud credentials.

exo:schema

Generate a JSON schema describing your resources.
Creates an exo-schema.json file in your project root. The schema includes resource names, triggers, and field definitions inferred from your createRules. The generated schema also includes supported modules based on your Resource capabilities (create, update, delete, pulling).

exo:upload

Upload the generated schema to Exo Cloud.
Lists your Exo Cloud projects and uploads the schema to the one you select. If your account has one project, Exo selects it automatically. For CI or deploy scripts, pass --project= with the project token to skip the prompt. If a ZAPIER_DEPLOY_KEY is configured, it’s included for Zapier deployments.
You must run exo:login before using exo:upload, and exo:schema to generate the schema file.

exo:license-check

Check whether the current site has an attached production license in Exo Cloud.
Successful licensed responses update the local signed assertion cache. Explicit unlicensed responses clear the cache. Transient failures, such as network errors or failed cloud responses, preserve any existing cached assertion. Use --required in CI or production checks when an unlicensed site should fail the command.