PlatformsFacebook

Facebook client workflows

What log-cli runs on Facebook today, from the code (2026-10-20). Usage is from Command.usage (README surface section). Runs: ~/.logCli/runs/<action>/<run>/, publish under ~/.logCli/publish/.

Status: verified live, built, not verified (run, never ended clean), built, never run live, recorded only (inspect recording, no machine or command), not built.

1. Workflows

WorkflowRuns itOn FacebookRead/writeMachine / flowRecorded liveStatus
Sign in, save cookieslog facebook connect --account <a> [--noPrompt] [--now] / MCP connectLogin, captcha, two-step (rule 23)write (session only), no --livesrc/marketplace/connect/machine.ts, python/session/connectSession.pyruns/connect/lastReading.log, erie.log and two more (2026-10-19)verified live (Camoufox only)
Sign in inside the open browserlog inspect do signIn|code|solve --liveLogin form, two-step code, text captchawrite, --livepython/session/inspectSession.py (sign_in, enter_code, solve_text_captcha)inspect 20261020T105346 (solveTextcaptcha)verified live
Day host (lifecycle)log facebook host start --account <a> [--live] [--likes] / MCP hostOpen, sign-in, check, profile, location, warm-upread; profile/location/likes need --livesrc/marketplace/lifecycle/machine.ts, src/cli/host/helpers/hostActors.tsruns/host/harrisburg*.log: stopped (loginWall, pageNotReached, opensSpent)built, not verified
Profile photo, cover, name (flow)log flow run profileSetup --account <a> --set … --live / MCP flowProfileSetupPicture, cover, renamewrite, --livesrc/browser/flow/definitions/profileSetup.json, docs/platforms/facebook/flows/profileSetup.mdmcp/2026-10-19.log 11:46-11:49: "Flow profileSetup: done"verified live
Profile setup (session)log facebook profile setup --account <a> [--live] / MCP profileSame, own launchwrite, --livesrc/marketplace/profile/machine.ts, python/session/profileSession.pyruns/profile/lastDryRun.log: dry run stopped at sessionExpiredbuilt, never run live
Marketplace locationhost step setLocation; log inspect do setLocation "<City>, <State>" --liveLocation typed as "City, State" or "City, Country", never abbreviated or a zip (rule 72, spec)write, --liveinspectSession.py setLocation, hostActors.ts setLocationinspect 20261022T105341, 20261022T110738 (Bethlehem)recorded, built; host path not verified
Publish a listinglog facebook publish --listing <id> [--live] [--now] / MCP publishCreate form, photos, Publishwrite, --livesrc/marketplace/publish/machine.ts, python/session/publishSession.pypublish/readingLive3.log (2026-10-19): Publish clicked, ended unconfirmedId / noListingIdbuilt, not verified
Campaignlog facebook campaign run --campaign <id> [--live] / MCP campaignPublish per accountwrite, --livesrc/cli/campaign/index.ts (over publish)none foundbuilt, never run live
Scan sellinglog facebook scan --account <a> / MCP scanRead Marketplace > Sellingreadsrc/camofox/worker/, src/cli/live/index.tsnone in ~/.logClibuilt, never run live (here)
Listing statuslog facebook status <listingId> --account <a> / MCP statusRead one item pagereadsrc/camofox/worker/helpers/toListingStatus.tsnonebuilt, never run live
Listing monitorlog facebook watch --account <a> [--checks n] / MCP watchRepeated status checksreadsrc/marketplace/monitor/machine.tsnonebuilt, never run live
Reels warm-uplog facebook warmup reel run --account <a> [--persona] [--live] [--likes] / MCP warmupWatch, Next card, comments, likeread; like needs --live --likessrc/facebook/warmup/activities/machine.ts, helpers/reel.ts, reelOrderer.tsinspect 20261020T050610 (record), 052708 (persona, 5 likes), 080734, 082836 (orderer)verified live
Feed warm-uplog facebook warmup feed run --account <a> --persona [--live] [--likes]Posts, See more, likeread; like --live --likessrc/facebook/warmup/activities/helpers/feed.ts, feedOrderer.ts, src/cli/warmup/helpers/feedRun.tsinspect 20261020T103516-105346; runs/join/feedPersonaRun4.log: 11 posts, 1 liked, 0 failed stepsverified live
Listaro stageslog facebook warmup stages record|run --account <a> [--likes]Listaro's 5 activitiesread; likes --livesrc/facebook/warmup/stages/machine.ts, helpers/scripts.ts, flows src/browser/flow/definitions/warmup*.jsonBethlehem 2026-10-22: recorded, then run 27/27 steps (skills/warmup/SKILL.md)verified live
Join a grouplog facebook join group --account <a> --group <g> [--live] / MCP joinRead the gate, press Joinwrite, --livesrc/facebook/group/join/machine.ts, helpers/readGroupPage.tsinspect 20261019T224900 (runs/join/joinLive_20261020.log)verified live
Answer group questionslog facebook join group … --answer [--set n=v] [--agree], then --fill [--live [--submit]]Fill, submit questionswrite, --live --submitsrc/facebook/group/answer/machine.ts, helpers/fillPlan.tsinspect 20261019T234232 (fillLiveSubmit4_20261020.log: submitted)verified live
Read a group's postsnone (extractor only); recorded with log inspectGroupsCometFeedRegularStoriesPaginationQuery + HTMLreadsrc/facebook/group/read/helpers/extractPosts.ts, docs/groupRead.mdinspect 20261020T134155, 143506 (13 posts, 0 rejected)recorded only (+ extractor)
Read a post's commentsnone; recorded with log inspectPost dialog, Newest, scrollread (sort click was --live)src/facebook/group/read/helpers/extractComments.tsinspect 20261020T151100 (readComments.log: 15 comments)recorded only (+ extractor)
Search groupsnone; log inspect do goto https://www.facebook.com/search/groups/…Search results pagereadnone (docs/platforms/facebook/background/SearchComet*.md)runs/join/searchGroups_20261020.logrecorded only
Conversations (Twenty)log facebook conversations, log facebook conversation show|read|lead|link|record --fileNothing: Twenty onlyn/asrc/marketplace/conversation/, docs/conversations.mdn/abuilt (no Facebook side)
Free inspectlog inspect start --account <a> [--detach], log inspect do <action> [--live]Any step belowper actionsrc/cli/inspect/index.ts22 runs, 2026-10-20verified live
Recording to flowlog flow fromInspect <runDir> --name <n>, log flow run <n>Replays a recordingper stepsrc/browser/flow/helpers/flowFromRecording.ts, src/cli/flow/helpers/flowSession.tsprofileSetup onlyverified live (one flow)

2. Inspect step vocabulary

Live set: LIVE_ACTIONS in src/browser/inspect/helpers/parseInspectAction.ts; handlers in python/session/inspectSession.py handle().

ActionArgsWhat it does--liveUsed by
gotourl (facebook.com only)Navigatenoevery workflow
snapshotnoneAccessibility snapshot, refsnojoin, answer, group read
backnoneBrowser backnomanual
wait[s]Sleepnoanswer
scroll[times] [px]Wheel scrolls, human motionnofeed, stages, group read
scrollInrole name [times] [px]Wheel over one elementnoreels (comments), comments dialog
dwell[a-b s]Pausenoreels, feed, stages
openAnypattern [count]Open N matching links, read, come backnostages (listings), feed
waitRolerole nameWait for an elementnoflows
pageTextnoneBody textnohost (account check)
sellLocationnoneRead the create form's locationnohost
saveStatenoneSave the sessionnohost sign-in
nextPostnoneScroll the next unread feed post into view, return its textnofeed
closeTabnoneClose a tab a click openednoreels persona run
highlightrole nameCircle an elementnomanual
clickRolerole nameClick by role/nameyesreels, join, host, flows, comments sort
fillRolerole name textType into a fieldyesprofileSetup flow
uploadRolerole name pathFile chooser uploadyesprofileSetup flow
clickAnyrole pattern [count]Click N random matchesyesstages likes, reels
likePostnoneLike the current postyesfeed (--likes)
postButtonnameA button in the current post (See more, Leave a comment)yesfeed
setLocation"City, State"Marketplace location (locationAbbreviated for an acronym, a state code, a number or no state)yeshost
clickrefClick a snapshot refyesanswer, join, flows
typeref textType into a refyesanswer
presskeyKey pressyesmanual
uploadref pathUpload by refyesflows
signIn / code / solvenoneLogin form, two-step, text captchayeshost, page-state resolvers
stopnoneClose the sessionnoall

3. Gaps

Groups (src/facebook/group/, rule 45)

  • Read posts and comments: built: log facebook read group (src/facebook/group/read, groupReadMachine), and OpenMagpie's poll worker log facebook poll --request (groupRead.md, groupListening.md, spec).
  • Reply threads: comment_direct_parent is parsed (extractComments.ts); "View replies" expansion is not recorded.
  • Write a comment / reply: not recorded, no flow, machine, command or MCP tool (src/facebook/group/comment/), #40. Needs --live (rule 8).
  • React: only feed-post Like exists (likePost, CometUFIFeedbackReactMutation.md); no group-post react, no reaction picker (src/facebook/group/react/).
  • Post to a group: not recorded (src/facebook/group/post/).
  • Search groups: recorded only; no extractor, machine or command (src/facebook/group/search/).

Marketplace

  • Publish: the live run ended noListingId; the id capture needs fixing from that run's recording (src/marketplace/publish/machine.ts). Not on the driver (OPENER_ACTIONS, src/browser/run), and still a launch per action (rule 35, #42); the recorded flow marketplaceListingPublish publishes from the open browser instead (rule 68).
  • Scan, status, watch, campaign: Camoufox-only, no runs in ~/.logCli; no tab-in-host versions.
  • Delete: log facebook listing remove <id> --live (flow marketplaceListingDelete). Edit, mark sold, renew: none, by design until matt asks (rule 8).
  • Browse listings: only openAny in stages; no reader.

Messages

  • Read inbox / threads: not recorded; log facebook conversation record --file needs a scanner that doesn't exist (docs/conversations.md, #41). Would be src/marketplace/conversation/machine.ts plus a flow.
  • Reply to a buyer: next, #41 (recording, flow, machine, command, MCP tool).

Profile

  • log facebook profile setup never run live; the flow path is the verified one (hostActors.ts setProfile). Bio and other fields are read-only (rule 28).
  • SearchCometResults* is documented from background traffic only (background/); no flow, machine or command (src/search/, by platform).

Lifecycle

  • Host never ran to the end (runs/host/harrisburg*.log); acting (publish, replies as a tab) is next, #42 (AGENTS.md, rule 35 status).

Writes on the account's own profile (recorded 2026-10-20, run 20261020T162343)

Each is a flow and an MCP tool, --live only (rule 8). Recorded live on Bethlehem: a text post, a comment on it, a photo post and its deletion.

WorkflowRun itWhat it sendsStatus
Post textlog flow run profilePost --account <a> --set text=… --live (flowProfilePost)ComposerStoryCreateMutationrecorded live, flow built, not yet run as a flow
Post a photolog flow run profilePhotoPost --account <a> --set photo=<path or URL> --live (flowProfilePhotoPost)/ajax/react_composer/attachments/photo/upload, then ComposerStoryCreateMutationrecorded live, flow built, not yet run as a flow
Comment on the newest own postlog flow run postComment --account <a> --set comment=… --live (flowPostComment)useCometUFICreateCommentMutation (typing broadcasts around it)recorded live, flow built, not yet run as a flow
Delete the newest own postlog flow run deletePost --account <a> --live (flowDeletePost; its menu is named by the account's profileName from Twenty)CometFeedStoryMenuQuery, useCometTrashPostMutation (to the bin, emptied after 30 days)recorded live, flow built, not yet run as a flow
Read notificationsrecorded only (step 19): each notification is a link with its text and agethe list opens from the bell; closing it sends CometNotificationsUpdateSeenStateMutationnot a flow: the bell's name carries the unread count

Two accounts, one acting and one receiving: not run yet. Every other account is on Facebook's checkpoint 1501092823525282, which ends at a video selfie after its text captcha (Reading, Allentown, Lancaster on 2026-10-20), and the 2Captcha proxies the rest use have no traffic left (log proxy balance). Lancaster is now on Byteful and opens; a second account needs its video selfie done by a person first.