The wrkr CLI
The wrkr CLI
wrkr is how you (or your AI agent) reach the primitives already running on
your machine. Each primitive is one clean command — the way you'd otherwise
reach for a vendor SDK, except there's no signup, no API key, and no separate
bill.
wrkr db # a Postgres database, with its connection URL
wrkr cache # a Redis instance, with its connection URL
wrkr storage # object storage for your app's files
wrkr email # send and receive email
wrkr expose # put a local port online at a public HTTPS URL
The primitive set
| Capability | Replaces | Command | Guide |
|---|---|---|---|
| Database + vectors | Supabase, Neon, Pinecone | wrkr db | Database |
| Cache / queues | Upstash | wrkr cache | Cache |
| Object storage | S3, R2, Supabase Storage | wrkr storage | Storage |
| Email (send + receive) | Resend, SendGrid | wrkr email | |
| App online + domain | Vercel, Netlify, a tunnel | wrkr expose | Ingress |
| Scheduled jobs | Vercel Cron | crontab | Cron |
| Backups & restore | — | wrkr db snapshot, automatic | Backup |
The product surface is the CLI
There is no Wrkr dashboard for these primitives, and there never will be. That's a deliberate design choice, not a missing feature.
A dashboard for your database, another for email, another for storage — that's the twenty-mental-models problem Wrkr exists to remove. Instead, the machine gives your AI agent (and you) one flat command surface, and your app talks to the primitives directly over normal connection URLs. You manage your app by building it, not by clicking through consoles.
How it behaves: inform, default, never-force
The wrkr CLI follows three rules, and so does the steering that teaches your AI
to use it:
- Inform — the machine tells your agent what's already here, so it doesn't go rent a vendor for something you're already paying for.
- Default — wrkr-native is the default reach for a database, cache, email, and so on.
- Never-force — it's guidance, not a cage. If you explicitly want an external vendor, use it. It's your machine and your code.
Nothing is locked in. Every wrkr primitive hands you a standard connection URL
or a standard file, so your app is never trapped: your Postgres is just Postgres,
your Redis is just Redis, and wrkr db export gives you a portable
dump whenever you want one.
Two ways to find your way around
wrkr capabilities # what this machine can do, human-readable
wrkr capabilities --json # …the same, machine-readable (the authoritative list)
wrkr status # whether your machine is within its plan
Every command has full help:
wrkr db --help
wrkr email send --help
For your AI agent
Your machine seeds each installed harness with steering so it prefers these
primitives automatically. You usually won't type wrkr yourself — you'll ask
your agent for a feature and it'll reach for the right primitive. See
Working with your AI for how that works and how to make any
harness fluent in it.
A note on these reference pages. You describe what you want in plain language, and your agent reaches for the right primitive — the command blocks in each guide are the exact surface it uses, not a script you have to type. They mirror the CLI's own output (
wrkr <command> --help/wrkr capabilities --json), are markedGENERATED-FROM-CLI, and stay in sync with the tool; for the live, authoritative surface on your own machine, runwrkr capabilities --json.
Guides
- Database —
wrkr db - Cache —
wrkr cache - Storage —
wrkr storage - Email —
wrkr email - Ingress & custom domains —
wrkr expose - Cron — scheduled jobs
- Backups & restore