design: one CLI for delegating subagent tasks to Moca
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python, typescript
Research direction
This is a design decision, not a code task. Read the proposal against remote_task.py from #455, Maia's moca start | check | list demo, and the planned #381 subagent commands, and check how mocactl currently handles login, sessions and promote/bundles. Done means the four open questions have maintainer answers and the design is agreed, not that code is written. Discuss in the thread before building anything.
Written by the indexing model from the issue text.
Description
Why. Today there are three separate clients for the same job:
remote_task.pyfrom #455 (the original context-delegation PR): uploads local files once as a workload's context, then runs many tasks in parallel and waits for each result.- Maia's demo CLI,
moca start | check | list(kagenti-demos/sandboxing/moca_chained_subagents).starthands a task to Moca through a background process that holds the request open, so the local agent can quit.checkcollects the result later, andlistshows what's pending. - #381 (planned
mocactlsubagent commands):spawn,subagents,get,watch,approve,follow-up. It's the same idea as Maia's, plus a local record of spawned tasks.
mocactl today has login, run (interactive turns), sessions, credentials and promote/bundles (config bundles). We should agree on one client before building more.
Proposal
mocactlis the client. It already handles login, server URLs and sessions.- #381's commands with Maia's proven behavior: a background worker holds each run open, the result is written to disk, and
/runs/statusis used only to recover a result if the worker died. - Context is an option on a task:
mocactl spawn --workload <id> "prompt"runs the task with that workload's files (#494, run tasks on a workload's context). - Workloads are set up separately:
mocactl workloads create --context <file>uploads a context file made bycontextctl ctx export, andmocactl workloads delete <id>cleans up.mocactlnever callscontextctlitself. - Fan-out is many
spawncalls under a concurrency limit. There's no separate batch command. - Naming:
mocactlalready uses "bundle" for config bundles, so uploaded context is called a context in the CLI, never a bundle.
Open questions
- Is
mocactl workloads …the right place for workload setup? - Should the delegate skill call
mocactldirectly, or a thin wrapper whose permission prompts read clearly (Maia'sBash(moca start*)pattern)? - What should
watchprint so hundreds of tasks stay readable in Claude Code's Monitor tool? - Once this exists, should Maia's demo switch to
mocactl?
Not in scope: server changes, and per-workload sandboxes, which are #476 (phase 2: per-workload sandboxes and storage).
cc @pdettori @maia-iyer @evaline-ju
- Dominant language
- TypeScript
- Stars
- 4
- Forks
- 9
- Avg merge
- 9h 31m
- Merged PRs (30d)
- 139
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rossoctl/moca
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
rossoctl/moca#421 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
Similar issues
-
[Bug]: REST API URL starting with "http" but no scheme (e.g. httpbin.org/get) is not given an http:// prefixPossibly taken @ItsDeadlyProgrammer claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
appsmithorg/appsmith#42471 · 1 comment ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ehmpathy/rhachet-roles-bhrain#705 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Status: Triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
mermaid-js/mermaid#8546 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
braintrustdata/braintrust-sdk-javascript#2659 ·
Maintainers usually reply within 1 day