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.
reachweaver start
Section titled “reachweaver start”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
reachweaver start [-h] [--json]| Option | Description |
|---|---|
--json |
Machine-readable guide |
reachweaver next
Section titled “reachweaver next”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
reachweaver next [-h] [--json]| Option | Description |
|---|---|
--json |
Machine-readable view (schema reachweaver.next.v1) |
reachweaver help
Section titled “reachweaver help”Show the everyday commands; ‘help all’ lists every command by task and ‘help COMMAND’ shows one command’s options; offline, prints text only
reachweaver help [-h] [TOPIC]| Option | Description |
|---|---|
TOPIC |
‘all’ for every command, or a command name |
reachweaver context
Section titled “reachweaver context”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
reachweaver context [-h] [--json]| Option | Description |
|---|---|
--json |
Compact machine-readable summary |
reachweaver describe
Section titled “reachweaver describe”Machine-readable command catalog generated from the parser: flags, choices, defaults, JSON support and owner-only/network/writes/read-only tags
reachweaver describe [-h] [--json] [COMMAND]| Option | Description |
|---|---|
COMMAND |
Describe one command, with the help of each flag |
--json |
Machine-readable catalog |
reachweaver connect
Section titled “reachweaver connect”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
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) |
reachweaver account-add
Section titled “reachweaver account-add”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’.
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 |
reachweaver account-remove
Section titled “reachweaver account-remove”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.
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 |
reachweaver account-advisor
Section titled “reachweaver account-advisor”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).
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 |
reachweaver profile
Section titled “reachweaver profile”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).
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 |
reachweaver account-route
Section titled “reachweaver account-route”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.
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 |
reachweaver account-kit
Section titled “reachweaver account-kit”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).
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) |
reachweaver version
Section titled “reachweaver version”Print the installed ReachWeaver version; –verbose adds the install kind; offline
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) |
reachweaver init
Section titled “reachweaver init”Initialize local database (not an online account)
reachweaver init [-h]No options.
reachweaver doctor
Section titled “reachweaver doctor”Inspect account configuration and missing credentials without calling APIs
reachweaver doctor [-h] [--json]| Option | Description |
|---|---|
--json |
Machine-readable checks (credential variable names only) |
reachweaver health
Section titled “reachweaver health”Offline readiness per configured account: adapters, credentials (names), budgets, provider cooldowns, queue, pause; exit 1 when blocked; never contacts providers
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) |
reachweaver workspace
Section titled “reachweaver workspace”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
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 |
reachweaver ui
Section titled “reachweaver ui”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
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 |
reachweaver studio
Section titled “reachweaver studio”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
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 |
reachweaver list
Section titled “reachweaver list”List posts and statuses
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 |
reachweaver show
Section titled “reachweaver show”Show exact post text and account metadata for human review; offline
reachweaver show [-h] post_id| Option | Description |
|---|---|
post_id |
reachweaver journal
Section titled “reachweaver journal”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
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 |
reachweaver capabilities
Section titled “reachweaver capabilities”Offline platform capability/API-approval registry; never grants permission
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) |
reachweaver registry-age
Section titled “reachweaver registry-age”Offline age of every dated platform fact in the bundled research registries: fresh/aging (>60 days)/stale (>120 days)/undated; exit 0
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 |
reachweaver completion
Section titled “reachweaver completion”Print a shell completion script for commands, options and fixed choices (bash, or zsh via bashcompinit); reads no database and runs nothing
reachweaver completion [-h] {bash,zsh}| Option | Description |
|---|---|
shell |
One of: bash, zsh. |
reachweaver mcp-serve
Section titled “reachweaver mcp-serve”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)
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) |
