Manage Val Town projects using the vt CLI. Use when working with Vals (Val Town serverless functions), syncing code to Val Town, creating HTTP endpoints, streaming logs, or managing Val Town branches...
The vt CLI manages Val Town projects locally. Key concepts:
index.http.tsx)| Task | Command |
|---|---|
| Create new val | vt create my-val |
| Clone existing | vt clone username/valName |
| Push changes | vt push |
| Pull updates | vt pull |
| Auto-sync | vt watch |
| View in browser | vt browse |
| Stream logs | vt tail |
| Check status | vt status |
| List your vals | vt list |
vt create my-api
cd my-api
# Edit files...
vt push
vt browse # Open in browser
vt clone username/valName
cd valName
# Edit files...
vt push
cd my-val
vt watch # Syncs on every file save
cd my-val
vt checkout -b my-feature
# Make changes...
vt push
vt checkout main
Val Town detects file types by naming patterns:
| Pattern | Val Type |
|---|---|
*.http.ts, *.http.tsx |
HTTP endpoint |
*.cron.ts |
Scheduled cron job |
*.email.ts |
Email handler |
Other .ts/.tsx files |
Script val |
Example: To create an HTTP API, name the file api.http.ts or index.http.tsx.
vt create my-val # New val in ./my-val
vt create my-val ./existing-folder # Upload existing files
vt create my-val --private # Private val
vt create my-val --org-name myorg # Under an organization
vt clone # Interactive selection
vt clone username/valName # By name
vt clone https://www.val.town/x/user/val # By URL
vt clone username/valName . # Into current directory
Fork someone else's val:
vt remix std/reactHonoStarter myWebsite
cd myWebsite
vt watch
vt branch # List branches
vt checkout main # Switch branch
vt checkout -b feature # Create new branch
vt branch -D feature # Delete branch
vt tail # Stream current val's logs
vt tail @user/valName # Stream specific val
vt tail --print-headers # Include HTTP headers
vt tail --reverse-logs # Latest first
vt config options # List options
vt config set dangerousOperations.confirmation false # Disable confirmations
vt config ignore # Edit global .vtignore
After cloning/creating, a val directory contains:
.vt/ - Metadata (like .git).vtignore - Files to exclude from syncdeno.json - Deno LSP configuration.ts, .tsx, etc.)vt push --dry-run to preview changes before pushingvt checkout --dry-run to preview branch switch effectsvt watch command enables live reloading with the browser companion extension