You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse the task tree — one directory, or one file's text
POST
/api/tasks/reorder{slugs}
Persist sidebar order
DELETE
/api/tasks/<slug>
Delete the task tree (unregisters its worktrees)
GET
/api/tasks/<slug>/diff
Changes tab: uncommitted + committed diff per worktree
POST
/api/tasks/<slug>/review{path, rules?}
AI review of the diff vs rules / skills
GET/POST/DELETE
/api/tasks/<slug>/monitor
Run-monitor status / enable / disable
Agent pane
Method
URL
Purpose
POST
/api/tasks/<slug>/claude/start
Launch the agent CLI in a tmux pane
POST
/api/tasks/<slug>/claude/stop
Kill the pane (sessions stay resumable)
POST
/api/tasks/<slug>/claude/paste-prompt
Re-paste the deep-interview prompt
POST
/api/tasks/<slug>/claude/send{text, submit?}
Type a message into the pane — the OpenClaw reply path
POST
/api/tasks/<slug>/claude/resume{session_id}
Fresh tmux, --resume <id>
GET
/api/tasks/<slug>/claude-sessions
Tracked session ids + transcripts
GET
/api/tasks/<slug>/conversation
Parsed transcript of the newest session
/api/tasks/<slug>/interview/{start,stop,paste-prompt} are aliases kept for
old clients.
Worktrees
Method
URL
Purpose
GET
/api/tasks/<slug>/worktree-candidates
Repos a worktree could be based on
POST / DELETE
/api/tasks/<slug>/worktree
Create / remove a worktree
POST
/api/tasks/<slug>/worktree/push{path}
git push -u origin <branch>
POST
/api/tasks/<slug>/worktree/merge{path}
Merge into the base branch (never pushes)
POST
/api/tasks/<slug>/worktrees/push-all
Push every task worktree
Terminal and tmux
The interactive terminal is a PTY attach: the stream carries output, and
input goes back to that same PTY via stream-input (so xterm's automatic
capability replies are consumed by tmux instead of leaking into the agent).
Method
URL
Purpose
GET
/api/tmux/stream?target=…&cols=N&rows=N
Chunked live PTY bytes; response header X-Loom-Terminal-Stream is the stream id
POST
/api/tmux/stream-input{stream_id, text}
Keystrokes into the attached PTY
POST
/api/tmux/stream-close{stream_id}
Client-initiated close (proxies can swallow socket closes)
Fill the venue's Official_Review form from the report — dry run without confirm; requires OpenReview sign-in and the reviewer role
DELETE
/api/review/projects/<id>
Unregister (reports stay on disk)
The panel reviews to the venue's own form: a static family shape for all 30
catalog venues, overridden by the paper's live OpenReview form schema when the
project came off a forum link and a sign-in is cached.
Rebuttal Factory
Method
URL
Purpose
POST
/api/rebuttal/quick-import{url}
One OpenReview forum link → venue read off the submission, studio found/created, policy discovery kicked, package fetched. Active studio: registers and starts the agent. Pending studio: stages the package; it auto-joins on policy approval
GET
/api/rebuttal/catalog
Stages and the default policy
GET / POST
/api/rebuttal/studios
List studios / create one ({conference, year, cfp_url, policy_url?})
GET / DELETE
/api/rebuttal/studios/<id>
One studio / forget it
POST
/api/rebuttal/studios/<id>/discover-policy
Agent extracts the official rebuttal policy (202)
POST
/api/rebuttal/studios/<id>/approve-policy
Human gate; staged quick-import papers join and start automatically
Post each approved response as a forum reply — dry-run plan first, explicit confirm posts, author signature required
OpenReview session
Shared by both factories. The password is exchanged for a token cached at
~/.loom/openreview-auth.json (0600) and never stored; every openreview.net
fetch rides the token, which also skips OpenReview's datacenter-IP challenge.
Method
URL
Purpose
GET
/api/openreview/auth
{logged_in, user}
POST
/api/openreview/login{username, password}
Sign in
POST
/api/openreview/logout
Drop the cached token
Portal
Method
URL
Purpose
GET
/api/factories/approvals
Every human gate currently waiting, across all three factories — the "Waiting on you" inbox
Kernel Lab (advanced)
/api/kernel/* drives the optional Kernel Hub evaluator: interview,
prepare, runs (+ per-run log, leaderboard, judge, best-kernel,
stop), plugins, service. The evaluator bundle ships in the source tree
but not the installed package — point LOOM_KERNEL_HUB_DIR at a checkout's
loom/kernel_hub. See docs/LOOM_CODEBASE_ARCHITECTURE.md.