Command naming

Every log command that acts on one platform starts with that platform: log <platform> <command> …, for example log facebook warmup reel or log facebook join group. Commands that work on any platform (inspect, flow, proxy, errors, login…) take no platform. This page lists every Facebook command's old and new form, and how the rule is kept. Read it if an old command is refused, or you're adding a new command.

When the change was made, 19 commands acted on Facebook without saying so; they, warmup and the new poll now start with the platform. The any-platform commands (launch, adsPower, inspect, flow, proxy, errors, graph, login, logout, whoami…) were unchanged.

Every Facebook command, old and new

The platform is always the first word after log. Everything after the command stays the same unless the row says otherwise.

OldNew
log listings [--status] [--account] [--campaign]log facebook listings [--status] [--account] [--campaign]
log listing <id> · log listing create --account --filelog facebook listing <id> · log facebook listing create --account --file
log accountslog facebook accounts
log account show|resave|resetOpens|status …log facebook account show|resave|resetOpens|status …
log lifecycle [--account] · log lifecycle stateslog facebook lifecycle [--account] · log facebook lifecycle states
log doctorlog facebook doctor
log connect --accountlog facebook connect --account
log profile setup --accountlog facebook profile setup --account
log host start|send|status --accountlog facebook host start|send|status --account
log join group --account --group …log facebook join group --account --group …
log read group --account --group …log facebook read group --account --group …
log read group --worker <request>log facebook poll <group> <account> <how long to poll> (below)
log scan --accountlog facebook scan --account
log status <listingId> --accountlog facebook status <listingId> --account
log watch --accountlog facebook watch --account
log publish --listinglog facebook publish --listing
log campaign fill|heal|run|show --campaign …log facebook campaign fill|heal|run|show --campaign …
log conversations [--account] [--listing]log facebook conversations [--account] [--listing]
log conversation show|read|lead|link|record …log facebook conversation show|read|lead|link|record …
log capture --har|--settle|--docslog facebook capture --har|--settle|--docs (its docs are in docs/platforms/facebook/)
log warmup facebook <activity> …log facebook warmup <activity> … (e.g. log facebook warmup reel, log facebook warmup stages run)
log facebook warmup plan|record|run|feedlog facebook warmup stages plan|record|run|log

The poll

log facebook poll <group> <account> [<how long to poll>] reads a group in the account's open browser and hands back the posts the cursor hasn't seen (see Listening to Facebook groups, step 2).

  • How long: a time such as 30s, 45m or 2h, up to 24h. It polls once, then every 5 minutes (the group-listening service's default feed interval, poll_interval_seconds 300) until the time is up, printing one JSON line per poll. With no time, it polls once.
  • From the group-listening service: its worker script (python/openMagpie/facebookWorker.py) calls log facebook poll --request <json>, one poll per call. This replaced log read group --worker.
  • By hand: log facebook read group stays beside poll. --worker on it is refused, with the command it became.

How the rule is kept

What the runner refuses and what bun run check:docs checks are in the spec, Command shape. An old form answers with the new one and doesn't run, for example log connect --account x answers log connect: the platform comes first (rule 63): log facebook connect --account x. The reference (docs/reference.md), the diagrams, each MCP tool's description, the hooks' resolvers, the skills and the error catalog all use the new forms, and the tests check each old form is refused.

Code folders follow the same order

Code is laid out by platform first too, src/<platform>/<area>/<domain>, because each platform does things differently: for example src/facebook/group/read and src/facebook/warmup/stages. See Where the code lives.

The rules behind this are in AGENTS.md.