Skip to content

CLI reference: Get started and look around

26 commands. Every command runs on your own computer; nothing is sent to a social network unless a publishing command is run by the owner with its live switches.

Read-only guide: look at your accounts file, database and queue and print the exact next command to run; runs nothing and never creates the database

Terminal window
reachweaver start [-h] [--json]
Option Description
--json Machine-readable guide

What to post next: at most 5 concrete steps (your open ideas by name with a ready share command, drafts waiting, posts due for their 7-day numbers, days since you last posted per network); read-only, runs nothing

Terminal window
reachweaver next [-h] [--json]
Option Description
--json Machine-readable view (schema reachweaver.next.v1)

Show the everyday commands; ‘help all’ lists every command by task and ‘help COMMAND’ shows one command’s options; offline, prints text only

Terminal window
reachweaver help [-h] [TOPIC]
Option Description
TOPIC ‘all’ for every command, or a command name

Read-only session start for an agent: version, paths, account readiness, pause, live gate, approval mode, post counts, posts waiting for the owner, next steps and owner-only commands, in one call; never creates the database

Terminal window
reachweaver context [-h] [--json]
Option Description
--json Compact machine-readable summary

Machine-readable command catalog generated from the parser: flags, choices, defaults, JSON support and owner-only/network/writes/read-only tags

Terminal window
reachweaver describe [-h] [--json] [COMMAND]
Option Description
COMMAND Describe one command, with the help of each flag
--json Machine-readable catalog

Guided account connection (experimental): a status table of your accounts, or –guide to walk through them one at a time with you present; takes no secret and never posts

Terminal window
reachweaver connect [-h] [--guide] [--account ACCOUNT] [--json]
Option Description
--guide Interactive walkthrough (needs a terminal): official sign-in steps per account, then an optional read-only identity check you confirm one account at a time
--account ACCOUNT Only this account id
--json Machine-readable status table (no walkthrough)

Add one account you own to accounts.json (public details only; asks for missing ones in a terminal); never asks for or stores a password or token

Offline. Appends one correctly shaped entry to config/accounts.json (or –accounts), checks it with the normal loader, refuses duplicates and example placeholders, applies the wrong-account (persona) guard and keeps the previous file as accounts.json.bak. It prints the environment variable NAMES to set yourself and points to ‘connect –guide’.

Terminal window
reachweaver account-add [-h] [--id ID] [--handle HANDLE] [--server SERVER]
[--field KEY=VALUE] [--persona ID]
[--env-prefix REACHWEAVER_NAME] [--dry-run]
PLATFORM
Option Description
PLATFORM One of bluesky, mastodon, telegram, linkedin, instagram, threads, tiktok, youtube, facebook One of: bluesky, mastodon, telegram, linkedin, instagram, threads, tiktok, youtube, facebook.
--id ID Account id (default my-PLATFORM, or my-PLATFORM-2 when taken)
--handle HANDLE Public username (Bluesky: the full handle such as name.bsky.social)
--server SERVER Mastodon server origin, e.g. https://mastodon.social
--field KEY=VALUE Another public field of this network (chat_id, bot_username, person_id, linkedin_version…); secret-named keys are refused; repeat
--persona ID Which of your personas this account is (work, family…); checked against your profile
--env-prefix REACHWEAVER_NAME Credential variable prefix (default: the example’s prefix for the first account of a network, else derived from the id)
--dry-run Print the entry and checks; write nothing

Remove one account entry from accounts.json (keeps accounts.json.bak); never touches credentials, the database, approvals or disconnect state

Offline. Removes one entry from config/accounts.json (or –accounts) after you confirm it in a terminal (elsewhere pass –yes). The previous file is kept as accounts.json.bak. Posts recorded for the account stay in the database (counted read-only); credential variables are yours to remove.

Terminal window
reachweaver account-remove [-h] [--yes] [--dry-run] ID
Option Description
ID The account id, as listed by doctor or connect
--yes Confirm without a prompt (needed outside a terminal)
--dry-run Show what would be removed; write nothing

Offline channel shortlist and setup coaching; creates no account

Offline shortlist of social channels for a region, goal, format and weekly time, plus optional account-setup steps you do yourself and a coaching prompt for a normal Claude chat. Contacts no site, reads no credential, never creates or connects an account (docs/ACCOUNT-ADVISOR.md).

Terminal window
reachweaver account-advisor [-h] [--region REGION]
[--goal {contributors,adoption,awareness,collaboration}]
[--format {mixed,short_video,long_video,images,articles,text,community}]
[--weekly-hours WEEKLY_HOURS] [--limit LIMIT]
[--existing EXISTING] [--brand BRAND] [--audience AUDIENCE]
[--language LANGUAGE] [--setup PLATFORM_ID] [--json]
Option Description
--region REGION Distribution registry market, e.g. global, india, china (default global)
--goal GOAL Audience objective (default awareness) One of: contributors, adoption, awareness, collaboration.
--format FORMAT Content you will make (default mixed) One of: mixed, short_video, long_video, images, articles, text, community.
--weekly-hours WEEKLY_HOURS Available weekly effort, 1..40 estimated hours (default 6)
--limit LIMIT Number of recommended new channels, 1..8 (default 4)
--existing EXISTING Platform ID you already use (your statement, not verified); repeat for each
--brand BRAND Public-safe brand name, not private data
--audience AUDIENCE Public-safe audience description
--language LANGUAGE Public content language, e.g. en or pt-BR
--setup PLATFORM_ID Print the official starting link, the steps you do yourself and a coaching prompt for a normal Claude chat that never opens or operates the site
--json Machine-readable recommendations and optional setup steps

Your private profile: personas (work, family…), a username per network and the details sign-up forms ask for; local file, no network

Create, show (e-mail, phone and birth date partly hidden), check and edit config/profile.json. It never holds passwords, tokens, codes or identity documents (docs/PERSONAS-AND-ACCOUNT-KIT.md).

Terminal window
reachweaver profile [-h] [--init] [--persona ID] [--show] [--check] [--set PATH=VALUE]
[--handle PLATFORM:PERSONA=NAME[:STATUS]]
Option Description
--init Create a new private profile (mode 600); refuses to overwrite
--persona ID With –init: a persona to create; repeat (default: work)
--show Print the profile as JSON with e-mail, phone and birth date partly hidden
--check Validate the file, its permissions and its agreement with accounts.json; exit 1 on a finding
--set PATH=VALUE Set person.FIELD, personas.ID.FIELD, personas.ID.bio.LANG or preferences.default_persona; empty VALUE clears it; repeat
--handle PLATFORM:PERSONA=NAME[:STATUS] Record the username of a persona on a network (status planned, claimed or unavailable; default claimed); your statement, never verified; repeat

Which account and username to use for a persona on a network; says which account to switch to

Read-only and offline: looks up accounts.json and the profile. Exit 0 when a username is known, 1 when it is missing or the two files disagree.

Terminal window
reachweaver account-route [-h] --platform PLATFORM [--persona ID] [--json]
Option Description
--platform PLATFORM Network, for example instagram or weibo
--persona ID Persona id (default: preferences.default_persona in the profile)
--json Machine-readable result

Prepare sign-up details for accounts you create yourself: one plan, one approval; creates no account

Offline. Builds one plan for the named platforms and one persona from your profile (only the details each form may ask for, in the platform’s interface language) and prints it with personal values partly hidden. One approval of the plan hash writes the packets to a NEW private folder. It opens no site, fills no form and never sees a password, CAPTCHA or code (docs/PERSONAS-AND-ACCOUNT-KIT.md).

Terminal window
reachweaver account-kit [-h] [--platform ID] [--persona ID] [--questions]
[--out NEW_DIR] [--approve-plan SHA256] [--json]
Option Description
--platform ID Network to prepare; repeat or comma-separate (see account-advisor for the ids)
--persona ID Persona id (default: preferences.default_persona in the profile)
--questions Print only what is still missing from the profile
--out NEW_DIR Write the packets here (a folder that does not exist yet); needs –approve-plan
--approve-plan SHA256 The first 12+ characters of the plan sha256 you reviewed: your single approval for every platform in the plan
--json Machine-readable plan (personal values partly hidden)

Print the installed ReachWeaver version; –verbose adds the install kind; offline

Terminal window
reachweaver version [-h] [--verbose] [--json]
Option Description
--verbose Also print the install kind and skill folder
--json Machine-readable result (always has the install kind)

Initialize local database (not an online account)

Terminal window
reachweaver init [-h]

No options.

Inspect account configuration and missing credentials without calling APIs

Terminal window
reachweaver doctor [-h] [--json]
Option Description
--json Machine-readable checks (credential variable names only)

Offline readiness per configured account: adapters, credentials (names), budgets, provider cooldowns, queue, pause; exit 1 when blocked; never contacts providers

Terminal window
reachweaver health [-h] [--json] [--stale-minutes STALE_MINUTES]
Option Description
--json Full machine-readable report, including the dead-letter view
--stale-minutes STALE_MINUTES Mark sending claims older than this threshold as stale (5..10080)

Read-only: what lives in this folder (config, database, approval ledger, archive), what does not (credentials, the installed skill), and whether copying it to another computer will work

Terminal window
reachweaver workspace [-h] [--json] [--init [DIR] | --gather | --repair] [--apply]
[--with-examples]
Option Description
--json Machine-readable report
--init DIR Create the one-folder layout (config/, state/, media/, logs/, marker, README) in DIR (default: here); never overwrites or moves existing files
--gather Copy attachments of unsent posts that live outside media/ into media/ and point the records at the copies (hash-verified); dry run unless –apply
--repair After copying the workspace to a new computer: find attachments of unsent posts again in media/ by size and SHA-256 and fix the recorded paths; dry run unless –apply
--apply With –gather or –repair: write the change
--with-examples With –init: seed config/accounts.json with the four example placeholder accounts (the old default). Without it the file starts empty, or, in a terminal, with placeholders for the networks you name

Serve a read-only dashboard of your local state on 127.0.0.1 (queue, post review sheets, readiness, accounts, channel research); cannot approve, schedule, pause or publish, and never creates the database

Terminal window
reachweaver ui [-h] [--port PORT] [--open] [--optout OPTOUT]
Option Description
--port PORT Loopback port (default: a free one)
--open Open the tokenised URL in your default browser
--optout OPTOUT Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present); queued posts mentioning it are counted, never named

Open the dashboard and the post composer together on 127.0.0.1, linked to each other (write a post, then see how it did); each keeps its own token and guards, nothing is sent; Ctrl+C stops both

Terminal window
reachweaver studio [-h] [--open] [--port PORT] [--composer-port COMPOSER_PORT]
[--optout OPTOUT]
Option Description
--open Open your browser: on the dashboard, or on the composer when you have no posts yet
--port PORT Dashboard loopback port (default: a free one)
--composer-port COMPOSER_PORT Composer loopback port (default: a free one)
--optout OPTOUT Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present); queued posts mentioning it are counted, never named

List posts and statuses

Terminal window
reachweaver list [-h]
[--status {draft,approved,scheduled,sending,published,needs_review,cancelled,published_manual}]
[--json]
Option Description
--status STATUS Filter by status One of: draft, approved, scheduled, sending, published, needs_review, cancelled, published_manual.
--json Machine-readable array of rows

Show exact post text and account metadata for human review; offline

Terminal window
reachweaver show [-h] post_id
Option Description
post_id

Read-only: what was posted, when, where, with which metadata and files (text, account, approver, link, audit timeline, file paths and hashes), table/json/markdown/csv

Terminal window
reachweaver journal [-h] [--post-id POST_ID] [--status STATUS] [--all-statuses]
[--platform PLATFORM] [--account ACCOUNT] [--since DATE]
[--until DATE] [--limit N] [--no-by-hand]
[--format {table,json,markdown,csv}] [--out FILE] [--verify-files]
Option Description
--post-id POST_ID Only this post
--status STATUS Include this status; repeatable (default: published, sending, needs_review) One of: draft, approved, scheduled, sending, published, needs_review, cancelled, published_manual.
--all-statuses Include drafts, approved and scheduled posts too
--platform PLATFORM Only this platform
--account ACCOUNT Only this account id
--since DATE From this date (YYYY-MM-DD, UTC) or ISO 8601 time with a timezone
--until DATE Up to this date (YYYY-MM-DD, UTC, end of day) or ISO 8601 time
--limit N Newest N entries (1..5000, default 100)
--no-by-hand Leave out material recorded with mark-shared
--format FORMAT One of: table, json, markdown, csv.
--out FILE Write to this NEW owner-only (0600) file instead of stdout
--verify-files Also hash each recorded file that is still on disk and say whether it matches the record

Offline platform capability/API-approval registry; never grants permission

Terminal window
reachweaver capabilities [-h] [--platform PLATFORM] [--json]
[--max-age-days MAX_AGE_DAYS]
Option Description
--platform PLATFORM Show one platform, e.g. x, reddit or pinterest
--json Machine-readable full registry entries
--max-age-days MAX_AGE_DAYS Warn when verified_date is older than N days (default 120)

Offline age of every dated platform fact in the bundled research registries: fresh/aging (>60 days)/stale (>120 days)/undated; exit 0

Terminal window
reachweaver registry-age [-h]
[--registry {capabilities,distribution,discovery,profile-audit,signup,ai-search,ai-disclosure,social-web,platform-risk}]
[--platform PLATFORM] [--all] [--as-of YYYY-MM-DD] [--json]
Option Description
--registry REGISTRY Only this registry (default: all nine) One of: capabilities, distribution, discovery, profile-audit, signup, ai-search, ai-disclosure, social-web, platform-risk.
--platform PLATFORM Only this platform id, e.g. x or facebook (facebook_pages matches facebook)
--all List fresh facts too (default: aging, stale and undated only)
--as-of YYYY-MM-DD Evaluate at this date instead of today (reproducible output)
--json Machine-readable report

Print a shell completion script for commands, options and fixed choices (bash, or zsh via bashcompinit); reads no database and runs nothing

Terminal window
reachweaver completion [-h] {bash,zsh}
Option Description
shell One of: bash, zsh.

Experimental: a local MCP server on stdin/stdout for MCP clients other than Claude Code (Claude Desktop…); only read-only tools, no approve or publish tool; runs until its input closes (docs/MCP-SERVER.md)

Terminal window
reachweaver mcp-serve [-h] [--allow-drafts] [--root DIR] [--max-output-bytes N]
[--max-calls-per-minute N]
Option Description
--allow-drafts Also offer a draft tool (writes local drafts only; each still needs your own approval)
--root DIR File arguments must resolve inside this folder (default: the workspace, else the current folder)
--max-output-bytes N Refuse a tool result larger than N bytes (default 262144)
--max-calls-per-minute N Rate limit for tool calls (default 60)