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

CapabilityReplacesCommandGuide
Database + vectorsSupabase, Neon, Pineconewrkr dbDatabase
Cache / queuesUpstashwrkr cacheCache
Object storageS3, R2, Supabase Storagewrkr storageStorage
Email (send + receive)Resend, SendGridwrkr emailEmail
App online + domainVercel, Netlify, a tunnelwrkr exposeIngress
Scheduled jobsVercel CroncrontabCron
Backups & restorewrkr db snapshot, automaticBackup

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 marked GENERATED-FROM-CLI, and stay in sync with the tool; for the live, authoritative surface on your own machine, run wrkr capabilities --json.

Guides