Current agentd CLI has two overlapping control domains: 1) run-based container workflows (top-level commands: run/status/logs/stop/kill/list-runs/watch/replay/debug) 2) persistent systemd-managed agents (agent subcommands: create/list/status/start/stop/restart/send/logs/rm/purge)
This causes discoverability and ambiguity problems (e.g. agentd status <name> fails for existing persistent agents while agentd agent status <name> succeeds).
Do a design pass that maps overlapping capabilities and proposes a unified, noun-first CLI surface with compatibility aliases. Include migration plan for scripts currently calling top-level run lifecycle commands.
User direction: treat runs as one-shot agents and agents as persistent runs that wait for feedback. Design should unify around one execution model with durability/interaction policy, rather than two separate command domains.
Implemented first-pass unified top-level session CLI in Omni/Agentd.hs:
start command with --mode oneshot|persistent.--name --provider --model --cwd).status ID [--json] [--mode auto|oneshot|persistent]logs ID [--follow] [--mode ...]send ID MESSAGE [--mode ...]stop ID [--mode ...]rm ID [--mode ...]purge ID [--mode ...]--mode auto) by ID against persistent DB + oneshot event logs.run (legacy alias for oneshot start)steer (legacy oneshot send alias)agent/agents subcommand tree retained as legacy path.Validation:
lint Omni/Agentd.hstypecheck.sh Omni/Agentd.hsbild Omni/Agentd.hsstatus paracoder --json now resolves correctly to persistent mode.Committed in acf1cdd: unified top-level start/status/logs/send/stop/rm/purge with mode auto/oneshot/persistent and compatibility aliases.
Ava verified: cited commit confirmed in live history; feature shipped. Moving to Verified.
Analysis snapshot:
Accurate model: we currently have two different resources hidden behind one CLI.
run/status/logs/stop/kill/steer/list-runs/watch/replay/debugagent create/list/status/start/stop/restart/send/logs/rm/purgeObserved overlap:
Concrete ambiguity:
agentd status paracoder --json=>Run not found: paracoderagentd agent status paracoderworks (persistent agent exists)Unification proposal:
agentd runs <verb>agentd agents <verb>(keepagentalias)status [id] [--json],logs id [--follow],stop id,send id msg,list)status/logs/stop/list-runs/steer) forwarding toruns ...with deprecation hints.Migration risk note:
agentd run: 29 refs,agentd status: 9 refs,agentd agent: 1 ref), so aliases are required.