@oneup_today/cli
v0.5.0
Published
Official CLI for OneUp Today. Run AI Reddit/X outreach campaigns, publish posts, read leads and conversations, and send drafts from your terminal. Built to be AI-agent friendly.
Maintainers
Readme
OneUp Today CLI
Run your OneUp Today AI outreach from the terminal: list and create campaigns, read leads and conversations, draft and send messages, and check send readiness, without opening the dashboard.
Built to be AI-agent friendly: every command supports --json, so agents in Cursor, Claude Code, Codex, or a shell script can drive OneUp directly.
The CLI is a thin, ergonomic wrapper over the same backend that powers the OneUp Claude MCP connector. Tool-calling agents can use the MCP connector; everything else can shell out to
oneup. They share one API key and one backend.
Install
# Zero-install
npx @oneup_today/cli <command>
# Or globally
npm install -g @oneup_today/cli
oneup <command>Requires Node.js 18+.
Authenticate
oneup login # opens your API-key page, paste the key
oneup auth status # show current auth
oneup logoutThe key is stored at ~/.config/oneup/config.json (chmod 600). For CI / agents, set
ONEUP_API_KEY in the environment instead (it overrides the stored config). Point at a
different backend with ONEUP_API_URL or --api-url.
Examples
oneup campaigns list --status scheduled
oneup campaigns get <campaign_id>
oneup campaigns create --product <id> --name "Launch" --subreddits saas,startups --theme "Indie founders"
oneup campaigns run <campaign_id>
oneup leads list --status qualified --json | jq '.leads[].username'
oneup conversations list <campaign_id> --filter unread
oneup drafts send <campaign_id> <conversation_id> --dm "Hey, saw your post..."
# Publish a standalone post (queued for your extension to submit)
oneup post --platform x --text "Shipping the OneUp CLI: run outreach from your shell"
oneup post --platform reddit --title "Post title" --subreddit sideproject --text "post body"
oneup readiness # is real Reddit sending possible right now?
# Schedule a post for later, or set up a recurring one (paid)
oneup post --platform x --text "Shipping the CLI" --at "2026-07-09 09:00" --tz Asia/Kolkata
oneup schedule create --source commits --repos owner/app --at 18:00 --tz Asia/Kolkata
oneup log "shipped the media-attachment flag" # feeds a --source log scheduleCommands
| Group | Commands |
|---|---|
| auth | login, logout, auth status, whoami |
| campaigns | list, get, create, update, run, pause, resume, activity |
| runs | list, get |
| leads | list, get, status |
| conversations | list, get |
| drafts / dm | drafts send, dm draft |
| post | post (standalone, --media, --at/--in to schedule), post repost, post quote, post followup, post from-commits, post from-changes |
| upload | upload <file> (media library, prints s3_key) |
| schedule / log | schedule create\|list\|get\|pause\|resume\|delete\|run\|reschedule, log <note> (paid) |
| socials / products | socials list, products list |
| search-terms | add, remove |
| readiness | readiness |
| agents | agents-init, tools |
Run oneup <command> --help for flags. Add --json to any command for machine-readable output.
For AI agents
Run oneup agents-init in your repo to drop an AGENTS.md command reference so your coding
agent knows it can drive OneUp. See AGENTS.md for the full agent guide: the command
map, output shapes, when to confirm before writing, and the oneup post queue behavior (posts are
queued for your browser extension to submit, not published instantly).
Notes
- All data is scoped to the authenticated account (and its company). You only ever see your own campaigns, leads, and conversations.
- Real Reddit sends need a fresh send token and a warm discovery pool. If
oneup readinesssays it is not ready, runs and sends DRAFT only until you open the OneUp Chrome extension signed in to Reddit.
License
MIT
