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/storage → storage/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 .