Skip to content

CLI Command Reference

Introduction

Arvel ships an Artisan-style CLI (built on Typer). Run commands from your project root:

arvel <command> [arguments] [options]
arvel --help
arvel <command> --help

Note

Most commands need a project — they look for bootstrap/app.py in the current directory tree. The exceptions that run anywhere: about, key:generate, new, and any make:* command, plus --help / --version.

Some commands only register when their provider is installed: most queue:* commands need QueueServiceProvider (queue:restart is always available, but queue:clear and queue:prune-failed still need a booted app with the queue manager bound), auth:install needs AuthServiceProvider, and reverb:start needs the [broadcasting] extra.

Top-Level Commands

Command Description Key options
new NAME Scaffold a new project from the skeleton --no-install, --python, --kit (default api)
serve Run the app under uvicorn --host (127.0.0.1), --port (8000), --workers, --reload
about Print framework info
shell Interactive REPL with the app booted --dry-run
tinker Alias for shell (same as shell)
test [args...] Run pytest; extra args forwarded
down Enter maintenance mode --secret, --retry, --refresh, --render
up Exit maintenance mode
migrate Run pending migrations --dry-run
optimize Pre-compile config + view caches
optimize:clear Remove config + view caches

Note

optimize builds the config and view caches only. It prints that route/event caching is pending — there are no route:cache or event:cache commands yet.

make: Scaffolding

Every make:* command takes a class name and supports --force to overwrite.

Command Generates Extra options
make:controller HTTP controller --resource, --api (with --resource), --model (with --resource)
make:model ORM model --view, --materialized-view
make:migration Migration file --view, --materialized-view, --extension
make:request Typed FormRequest
make:resource JsonResource transformer
make:schema Pydantic Create/Update/Read schemas from a model
make:service Application service class
make:job Queued Job
make:event Event class
make:listener Event listener
make:notification Notification
make:mail Mailable
make:middleware HTTP middleware
make:policy Authorization policy
make:provider Service provider
make:seeder Database seeder
make:factory Model factory
make:test Feature test
make:command Console command
make:cast Custom column cast
make:observer Model observer
make:channel Broadcast channel auth callback
make:view Jinja template

migrate: Schema Migrations

Command Description Options
migrate:rollback Roll back the last batch
migrate:status Show migration status
migrate:reset Roll back every migration
migrate:refresh Reset, then re-run all --seed, --seeder
migrate:fresh Drop all tables, re-run all --seed, --seeder

Warning

migrate:fresh and migrate:refresh are destructive. In production they refuse to run unless ARVEL_ALLOW_DESTRUCTIVE=1 is set.

db: Database

Command Description Options
db:seed Run seeders --seeder (default DatabaseSeeder)
db:show Print connection + table summary
db:table TABLE Print a table's columns and indexes

model: Models

Command Description
model:show PATH Print model metadata (e.g. model:show app.models.User)
model:prune Delete stale rows for all Prunable models

config: Configuration

Command Description Options
config:show KEY Print a resolved dotted value (e.g. app.name)
config:publish Publish package config into the app --provider, --tag, --force
config:cache Serialize config to bootstrap/cache/config.json
config:clear Delete the cached config file

cache: Cache

Command Description Options
cache:clear Flush the cache --store / -s
cache:forget KEY Remove one key --store / -s

queue: Queues

Command Description Options
queue:work Start a worker --queue (default), --stop-when-empty
queue:size Count pending jobs --queue (default)
queue:failed List failed jobs --queue (filter)
queue:retry Re-dispatch a failed job uuid, or --all
queue:forget UUID Delete one failed job
queue:flush Delete all failed jobs
queue:prune-failed Delete failed jobs older than a threshold --hours (24)
queue:clear Remove pending jobs from a queue --queue (default), --connection
queue:restart Signal workers to restart gracefully

schedule: Task Scheduler

Command Description Options
schedule:work Run the scheduler loop (foreground) --once, --sleep (60), --max-failures
schedule:run Run due tasks once (alias for schedule:work --once)
schedule:list List registered tasks
schedule:interrupt Stop the scheduler at the next tick
schedule:pause Pause dispatching
schedule:continue Resume dispatching

route: Routing

Command Description Options
route:list List registered routes --filter (path substring), --json

view: Views

Command Description
view:cache Pre-compile Jinja templates
view:clear Clear the compiled view cache

storage: File Storage

Command Description Options
storage:link Symlink public/storagestorage/app/public; the framework then serves it at /storage --relative
storage:unlink Remove the symlink (idempotent)

After storage:link, restart the app: it mounts public/storage as static files at /storage, so linked files are retrievable with no reverse proxy. See Storage → Serving Local Files.

auth: Authentication

Command Description Options
auth:install Publish auth scaffolding (config, routes, views, migrations) --force
auth:clear-resets Delete expired password-reset tokens

key: Application Key

Command Description Options
key:generate Generate APP_KEY and write to .env --show, --force
key:rotate Re-encrypt encrypted columns with a new key --old-key, --new-key, --force

openapi: API Spec

Command Description Options
openapi:export Export the OpenAPI spec to a file --output / -o (docs/api/openapi.yaml), --format / -f (yaml|json), --stdout
openapi:validate Validate a spec against OpenAPI 3.x --spec (defaults to the live app spec)

channel: / event: / reverb: Events & Broadcasting

Command Description Options
channel:list List broadcast channels
event:list List events and their listeners
reverb:start Start the Reverb WebSocket server --host, --port

vendor: Package Assets

Command Description Options
vendor:publish Publish package files (migrations, config, assets) --provider, --tag, --force

Companion packages add their own vendor:publish tags — for example arvel vendor:publish --tag=arvel-image. See Companion packages.