vel Commands

> Complete reference for the per-project `vel` CLI — serve, build, migrations, queues, code generation, maintenance, and keys.

vel is the per-project binary. It’s created in your project root when you scaffold an app with velocity new. Run ./vel <command> — or alias vel to ./vel in your shell — from the project directory.

For the installer CLI (velocity new, velocity self-update, etc.), see Installer Commands.

Server

vel serve

Start the development server with live reload.

vel serve [flags]
FlagShortDefaultDescription
--port-p4000HTTP port
--env-edevelopmentEnvironment name (sets APP_ENV)
--no-watchoffDisable file-watching / auto-rebuild
--tags(none)Build tags passed to go build
vel serve
vel serve --port 3000
vel serve --env staging --no-watch
vel serve --tags="integration"

On start:

  1. Vite dev server launches on :5173 (full-stack projects only).
  2. The Go app compiles to .vel/tmp/server.
  3. .go files are watched; a change rebuilds and restarts.

vel build

Compile a production binary.

vel build [flags]
FlagShortDefaultDescription
--output-o./dist/appOutput path
--os(host)Target GOOS
--arch(host)Target GOARCH
--tags(none)Go build tags
vel build
vel build --output ./bin/myapp
vel build --os linux --arch amd64

Database

vel migrate

Run all pending migrations.

vel migrate [--pretend]

--pretend prints the SQL that would run without executing it — useful for reviewing migration output before committing.

vel migrate:fresh

Drop all tables, then run every migration from scratch.

vel migrate:fresh
Destructive — deletes all data. Development / testing only.

vel migrate:rollback

Roll back the most recent batch of migrations.

vel migrate:rollback [--step N]
FlagShortDefaultDescription
--step-s1Number of batches to roll back

vel migrate:status

Show which migrations have run.

vel migrate:status

vel db:wipe

Drop every table in the current database without running migrations.

vel db:wipe
Destructive. No confirmation prompt. Use only when you know the database is disposable.

Queue and Scheduler

vel queue:work

Start a worker that processes queued jobs.

vel queue:work [--queue NAME] [--tries N] [--timeout S]
FlagShortDefaultDescription
--queue-qdefaultQueue to consume from
--tries(driver)Max attempts per job before marking failed
--timeout(driver)Per-job timeout in seconds
vel queue:work
vel queue:work --queue emails --tries 3 --timeout 60

vel schedule:work

Run the scheduler loop — picks up scheduled jobs defined via v.Schedule(...) and dispatches them when due.

vel schedule:work

Typically run under a process supervisor (systemd, Docker, etc.) rather than manually.

Cache

vel cache:clear

Flush the configured cache store.

vel cache:clear

Maintenance Mode

vel down

Put the app into maintenance mode. All requests return 503 except those bearing the bypass secret.

vel down [--secret TOKEN] [--retry N]
FlagDefaultDescription
--secret(none)Token clients can use at ?__maintenance=TOKEN to bypass
--retry(none)Value for the Retry-After response header (seconds)
vel down --secret "abc123" --retry 60

vel up

Exit maintenance mode.

vel up

Keys

vel key:generate

Generate a fresh 32-byte encryption key and write it to .env under CRYPTO_KEY (falls back to APP_KEY if that’s what the project uses).

vel key:generate

Routes

vel route:list

Print every registered route with method, path, name, and middleware.

vel route:list

Rebuilds the bootstrap lifecycle internally before printing — the output always reflects the current v.Routes(...) definition.

Code Generation

All make:* commands scaffold a file into the conventional location for that type. Names are converted to the right case for the artifact (snake_case for migration files, PascalCase for types).

vel make:handler

vel make:handler <name> [--resource] [--api]
FlagShortDefaultDescription
--resource-roffScaffold CRUD methods (Index/Show/Store/Update/Destroy)
--apioffJSON responses instead of view rendering

Output: internal/handlers/<name>.go.

vel make:handler User
vel make:handler Post --resource
vel make:handler Admin/Dashboard
vel make:handler Product --api --resource

vel make:model

vel make:model <name> [--uuid] [--soft-deletes] [--migration]
FlagShortDefaultDescription
--uuidoffUse UUID primary key
--soft-deletesoffAdd deleted_at column and scope
--migration-moffAlso scaffold the migration

Output: internal/models/<name>.go.

vel make:migration

vel make:migration <name> [--create TABLE] [--table TABLE] [--uuid] [--soft-deletes]
FlagAcceptsDescription
--create=VALUE or spaceGenerate a “create” migration for the given table
--table=VALUE or spaceGenerate an “alter” migration for the given table
--uuidflagUse UUID primary key in the create template
--soft-deletesflagInclude deleted_at in the create template

Output: database/migrations/<timestamp>_<name>.go.

vel make:migration create_posts --create=posts
vel make:migration add_slug_to_posts --table=posts

Other make commands

All take a name argument and scaffold a file into the conventional directory.

CommandOutput path
vel make:middlewareinternal/middleware/<name>.go
vel make:eventinternal/events/<name>.go
vel make:listenerinternal/listeners/<name>.go
vel make:jobinternal/jobs/<name>.go
vel make:mailinternal/mail/<name>.go
vel make:notificationinternal/notifications/<name>.go
vel make:resourceinternal/resources/<name>.go
vel make:policyinternal/policies/<name>.go
vel make:providerinternal/providers/<name>.go
vel make:commandinternal/commands/<name>.go
vel make:middleware RateLimit
vel make:listener SendWelcomeEmail
vel make:policy PostPolicy

Help

vel help
vel --help
vel -h

Prints a grouped list of every command.