Commands
Open Threads, share over SSH, post pull-request reviews, and automate cueloop from scripts.
This page lists the available commands. For the ideas behind the review workflows, read Review agent work.
Open a review
cueloop # open the inbox (every pending review)
cueloop <session-id> # open one session by its ses_… id
cueloop plan [id|title] # latest pending plan, or one you name
cueloop reply [id|title] # latest pending reply review
cueloop diff [id|title] # working-tree diff review
cueloop pair [thread-id] # live pairing workbench
cueloop prototype [file] # review a component design doc (Markdown)
cueloop review <pr> # pull a pull request in and review it
Install an extension
cueloop install npm:<package>[@version]
Installed UI entries load when you next start cueloop. Run cueloop restart
to load daemon entries, including VCS adapters. See
Extensions.
cueloopwith no arguments opens the inbox across all types.cueloop planopens the latest pending plan review. Pass an id or title to address a specific one.cueloop replyopens the latest pending reply review - an agent's message submitted for review before you act on it. It reads like a plan and uses the same comments and Messages.cueloop diffis dual-mode: on a dirty working tree with no argument it creates a review from the current changes (untracked files included); with a selector, or on a clean tree, it opens the latest pending diff review.cueloop prototypeis dual-mode: with a Markdown file it creates a review of a component design doc (its prop API, composition, and callstack) that you comment by line; with no file (or--latest/--open) it opens the latest pending prototype review. An.htmlfile instead creates the opt-in experimental pixel mockup ([experimental] prototype_pixels).cueloop review <pr>is dual-mode too: a barereview(or--latest/--open/ ases_…id) opens a pending pull-request review, while any other value is treated as a PR reference and pulls that PR in viagh.
Flags (on plan, reply, diff, prototype, review):
--latest- open the latest pending review of that type.--open [id|title]- open a pending review, optionally by id or title.--no-tui- (onreview <pr>) skip the UI and print the created session as JSON.--head-sha <sha>- (onreview <pr>) refuse to open a Thread if the PR moved after the agent reviewed it.
Share over SSH
cueloop share [session-id] # upload a plan, copy the ssh line
cueloop share --fork [session-id] # fork the plan, then share the fork
cueloop share pull [session-id] # pull a teammate's comments back
cueloop serve [session-id] # serve a live session over SSH yourself
cueloop shareuploads the plan to the gateway and copies a singlessh p_…@cueloop.devline for a teammate. With no id it shares the most recent session. Flags:--host(defaultcueloop.dev),--port(default22),--forkto share a fork of the session so a second teammate gets their own copy and discussion.cueloop share pulladds a teammate's comments to your plan. Runcueloop sharefirst. Only the key that shared the plan can pull it.cueloop servehosts a session from your own machine over SSH; observers are read-only and you stay the writable controller. Flags:--port(default2222,0picks a free port),--host(default127.0.0.1).
See Share a Thread for the full workflow.
Post to GitHub
cueloop review-post <session-id> --comments C1,C3 --event comment --body-file review.md
Posts selected agent findings from a completed Thread. Omit --comments to
post every unresolved agent finding. Posting is always explicit. The Thread's
send-message text gives instructions to the agent and is never posted as the
GitHub review body. Use --body or --body-file for a separate review body.
comment → COMMENT
approve → APPROVE
request-changes → REQUEST_CHANGES
The Message summary becomes the review body.
Automation
cueloop session <operation> [flags] # automate Thread operations; JSON on stdout
cueloop refine # summarize feedback from past Threads
cueloop daemon # keep the background service running
cueloop --help # print help
cueloop session exposes Thread operations for scripts and agents.
Operations: create, get, list, wait, annotate, remove, cut,
restore, curate, set-viewed, navigate, branch, switch, label,
fork, name-self, events, resolve, submit-revision. Each prints JSON, so it composes with
other tools. Run cueloop session with no primitive for the flag list.
Discussion operations:
cueloop session annotate <id> --quote "two phases" --body "Why two?" # a comment
cueloop session annotate <id> --reply-to <comment-id> --body "Rollout." # a reply, on the root's anchor
cueloop session annotate <id> --selector "main > h1" --body "Too loud." # a pixel-prototype comment, by element (experimental)
cueloop session remove <id> <comment-id> # remove a comment
cueloop session name-self <id> "Ana" --author <fingerprint> # the display name of an author
cueloop session events <id> [--once] [--ready] # follow events; --ready prints after subscribing
Review operations:
cueloop session cut <id> <block> # drop a block of a plan from the working copy
cueloop session restore <id> <block> [--line <n>] # put a cut block back, before line n
cueloop session curate <id> --rejections '[{"path":"src/a.ts","hunkIndex":0}]' # reject hunks of a diff
cueloop session set-viewed <id> <path> [<path> ...] # mark files as walked
Block indexes refer to the submitted revision and remain stable while you edit.
Pull-request diffs are read-only, so curate applies only to working-tree diffs.
History operations:
cueloop session label <id> "before the rewrite" # name the current tip as a checkpoint
cueloop session branch <id> alt # start a branch at the tip and switch to it
cueloop session switch <id> main # show another branch's path
cueloop session navigate <id> <entry-id> [--summary ""] # move the tip back to an entry on its path
cueloop session fork <id> # copy the path into a new session
cueloop share --fork [<id>] # fork, then share the fork
Navigating back does not delete later work. A fork copies the current path into a new Thread. See History for the full behavior.
cueloop refine writes a Markdown report of reviewer comments from past
Threads. It prints JSON with the report path. Use --limit to change the
default maximum of 200 Threads.
cueloop daemon keeps the background service in the foreground for a
process manager. Other commands start it automatically.
0 success · 1 a runtime failure (no pending review, a gh
error, nothing to share) · 2 a usage error (a missing argument or unknown command).