TC
← All Research
Agent Vocabulary Disambiguation: Multi-Agent Naming Conventions
ReferenceVerdict/VAK

Agent Vocabulary Disambiguation: Multi-Agent Naming Conventions

This section defines the core nouns used in this specification. **These terms are normative**: other documents (PRD/PLAN/Wiki) should reuse them exactly to avoid ambiguity.

2026-01-248 min read1,470 words
Trent Carter + Claude

## Terminology

This section defines the core nouns used in this specification. These terms are normative: other documents (PRD/PLAN/Wiki) should reuse them exactly to avoid ambiguity.

Quick mental model

  • Chat Mode decides _how a request enters the system_.
  • Executor is _what actually runs the turn_.
  • PAS is the _orchestration framework_ (not a selectable agent by itself).
  • Coding Agents are _executors_ that modify code (via adapters/transports).
  • Tool Calls are _structured function invocations_ inside messages.
  • Skills are _higher-level capabilities_ built from tools (and/or subflows).

  • Core entities

    TermDefinitionExamplesNotes ModelThe LLM weights/identity used to generate outputs.gpt-5, claude-sonnet, qwen-coderModels do not imply tools or orchestration. ProviderThe hosting/runtime that serves a model via an API.OpenAI, Anthropic, local llama.cppProviders impose API shapes, limits, and tool-call constraints. PAS (Orchestration Framework)The hierarchical orchestration system coordinating role executors.PAS runtime, role delegation, shared state rulesPAS is not an “agent tier” in the picker. PAS Role ExecutorA PAS role implementation that can run a turn and delegate work.pas.architect, pas.director, pas.manager, pas.programmerRoles are executors inside PAS.

    Execution dimensions (do not conflate)

    TermDefinitionValues / ExamplesNotes Chat ModeEntry strategy: how a user request is routed into execution.direct, auto, coding (or verdict_code)This is a _routing/entry_ concept. ExecutorThe runnable implementation that produces messages/actions for a turn.none, pas.architect, coding_agent.aider, coding_agent.codexThis is the thing that runs. RoutingThe decision process selecting an executor.Auto-router choosing direct vs pas. vs coding_agent.Routing can vary per turn in auto. SessionA continuity container for a multi-turn conversation.session_id + historySessions exist even with zero tools (e.g., direct). Hard rule:
  • Chat Mode ≠ Executor.
  • PAS ≠ Executor. PAS contains executors (roles).

  • Coding agents, adapters, and transports

    TermDefinitionExamplesNotes Coding Agent (Executor)An executor focused on codebase changes (files/git/build).Aider, Claude Code, SWE-Agent, Plandex, Codex CLIThese belong under coding_agent.. AdapterVerdict’s integration wrapper around an executor/tool.AiderAdapter, CodexAdapterStarts runs, passes context, parses results, normalizes outputs. TransportHow the adapter communicates with the coding agent.cli (spawn), rpc (daemon/session)“Aider-RPC” is a transport mode, not a new agent. Executor Capability ProfileWhat an executor is allowed to do.read-only / patch-only / apply / commitUsed for policies per PAS role (e.g., Architect read-only).

    Tools and skills

    TermDefinitionExamplesNotes ToolA single callable function exposed to an executor/LLM.read_file, run_bash, git_diff, image_generateTools are invoked via tool calls inside messages. Tool CallA structured invocation request for a tool (name + args).tool_calls: [{id, function:{name, arguments}}]Tool calls are part of canonical message format. Tool Result MessageThe response message produced after executing a tool.role="tool" + tool_call_id + contentMust link to the correct tool_call_id. SkillA higher-level capability composed of tools and/or subflows.“Publish Project”, “Generate Images”, “Repo Refactor”Skills may call many tools; treat as orchestration-level concepts. Skill InvocationTriggering a skill (macro) by name/contract.invoke_skill("publish_project", ...)Internally may create tool calls, sub-steps, or delegation.

    Data artifacts

    TermDefinitionExamplesNotes Canonical Message LogThe single source of truth for a session: ordered messages[] in OpenAI-format.[{role, content, tool_calls?}, {role:"tool", ...}, ...]This is what enables resume/export/import. ExportSerialized session package for portability.{version, routing_mode, executor, messages[]}Must be message-first (not tool-call-only). ImportIngesting an export into another surface (e.g., HMI).create new HMI session + insert messagesMust mint a new session id; validate version/roles/size.
  • Chat Mode identifiers: direct, auto, coding (or verdict_code)
  • Executor identifiers:
  • - PAS roles: pas.architect, pas.director, pas.manager, pas.programmer

    - Coding agents: coding_agent.aider, coding_agent.claude_code, coding_agent.codex, etc.

  • Adapter identifiers (internal): adapter.aider, adapter.codex, etc.
  • Transport identifiers (internal): transport.cli, transport.rpc

  • Common anti-patterns (explicitly forbidden)

  • Treating PAS as a selectable executor (“PAS” is not an agent).
  • Calling “Direct” a “coding agent” (it is a Chat Mode; executor is effectively none).
  • Treating “Aider-RPC” as a separate agent (it is a transport for the Aider adapter).
  • Exporting “tool history” without messages[] (breaks Direct mode + loses context).
  • 1) Vocabulary disambiguation table (the system needs these nouns)

    ElementProposed term (use this)What it isPrimary jobHas tools?Stateful?Examples LLM weightsModelThe brainGenerate text/tool callsN/AN/Agpt-5, sonnet, qwen-coder Vendor endpointProviderWhere the model is hostedCompletion API + limitsN/AN/AOpenAI, Anthropic, local llama.cpp How a chat enters systemChat ModeEntry strategyDecide “who runs this”DependsDependsDirect, Auto, Verdict-Code The thing that runs a turnExecutorA runnable agent implementationProduce assistant message(s)MaybeMaybePAS role executor, Coding Agent executor PAS rolePAS Role ExecutorOrchestration rolePlan/delegate/verifyMaybeUsually statelessArchitect/Director/Manager/Programmer External coding toolCoding AgentA code-changing executorEdits repo / runs toolsYes (via adapter)Often stateful-ishAider, Claude Code, SWE-Agent How we talk to a coding agentAdapterIntegration wrapperStart/run/stream/parseN/AN/AAiderAdapter, ClaudeCodeAdapter How adapter connectsTransportComm methodCLI vs RPCN/AN/ACLI (spawn), RPC (daemon/session) Tool callingTool CallStructured function invocationRun a toolYesNorun_bash, read_file, git_diff Skill callingSkill Invocation“Macro tool” / capability packHigher-level routineYes (composed)Maybe“Publish project”, “Generate images” Tool catalogTool RegistryAvailable functionsSchema + permissionsN/AN/Ainvestigation/execution/git tools Session continuitySession Message LogCanonical historyResume + export/importN/AYesOpenAI-format messages[] Key rule: the UI picker should never mix Chat Modes and Executors without labeling them, because they’re different dimensions.

    2) Your current picker list mapped into the taxonomy

    Below, I’m treating your list as “Executor Picker Entries”, but I’m explicitly labeling what each really is:

    UI ItemProposed categoryWhat it actually isTools availableWhere it runsTypical use ⚡ DirectChat ModeRaw LLM turn handler (no orchestration)NoneGateway → ProviderFast Q&A, brainstorming 🔄 AutoChat ModeRouter that selects an executor per turnDepends on chosen executorGateway“Do what’s best” routing 🤖 Verdict-CodeExecutor (Coding Agent)Native Verdict coding executorYesLocal / Verdict runtimeDefault coding path 📬 Claude-CodeExecutor (Coding Agent)External coding executor via VCCAYesExternal CLI/serviceAnthropic workflow 💼 AiderExecutor (Coding Agent)External diff-first executorYesLocal CLIPatch/diff-first edits 🤖 SWE-AgentExecutor (Coding Agent)Autonomous SWE-bench style executorYes (often via Docker)Local + DockerLong autonomous fix loops ✍️ Mini-SWEExecutor (Coding Agent)Lightweight bash-style executorYesLocalSimple bash + edits 📋 PlandexExecutor (Coding Agent)Plan-first multi-file executorYesLocalPlan→apply workflows 🛠️ GPT-EngineerExecutor (Coding Agent)CLI project generatorYesLocalNew project scaffolds 🅲 OpenAI CodexExecutor (Coding Agent)Official coding CLI executorYesLocal + OpenAICodex-driven edits 🔮 Open InterpreterExecutor (Tool Runner)NL-to-execution shell loopYesLocal“Run stuff” interactively Naming fix: keep the UI header as Chat Mode (Direct/Auto/“Coding”) and then Coding Agent (Verdict-Code, Aider, Claude-Code, …). Right now they’re in one bucket, which is the source of confusion.

    3) Is “Aider-RPC” another coding agent?

    No. “Aider-RPC” is not a new agent. It’s a transport/back-end mode for the Aider adapter.

    Think of it like this:

  • Aider (Executor) = “the thing that decides edits and produces diffs”
  • AiderAdapter (Adapter) = “Verdict’s wrapper around Aider”
  • CLI mode (Transport) = spawn aider … each run, parse stdout
  • RPC mode (Transport) = keep an aider daemon/session alive, send requests, get structured responses
  • Utility-wise, RPC buys you:

  • faster repeated turns (no process cold start)
  • persistent in-agent context (if aider maintains it)
  • cleaner streaming + structured outputs (if RPC supports it)
  • RPC costs you:

  • process lifecycle management (crashes, orphan sessions)
  • concurrency and locking (two calls to same session)
  • version skew / protocol drift
  • harder debugging than “run the CLI and read stdout”
  • That’s why I keep saying “defer Aider-RPC”: it’s not required to achieve multi-turn (multi-turn is message-log persistence). RPC is an optimization / ergonomics layer for _one_ coding agent.


    4) “Attach a coding agent to any PAS agent” — yes, with one clean interface

    Conceptually, PAS roles shouldn’t “be” the coding agent. They should delegate code execution through a single abstraction:

  • CodeExecutor (interface)
  • configured by coding_agent_id
  • can be called by _any_ PAS role if allowed
  • ASCII: the correct mental model

    (Chat Mode) User ──► Gateway ───────────────► Router (direct | auto | coding) │ ├─ direct: Provider(model) ──► assistant msg │ └─ executor: (PAS role OR Coding Agent) │ ├─ PAS Role Executor (Architect/Dir/Mgr/Prog) │ │ │ ├─ thinks / plans / delegates │ │ │ └─ may call CodeExecutor.run(...) <─── attach point │ └─ Coding Agent Executor (Aider / Codex / ...) │ ├─ uses tools (edit files, bash, git, etc.) └─ returns patches/results All turns append to: Session Message Log (messages[])

    So yes: any PAS role can call a coding agent, but you probably want a safe default policy for sanity.


    5) Second table: how I’d organize PAS↔CodingAgent attachments

    Here’s a clean “capability matrix” (recommended defaults + optional power-user overrides):

    PAS Role ExecutorPrimary jobDefault coding-agent attachmentWhyOptional override? Architectrequirements + top-level planNonekeep Architect pure; prevents “random edits”Allow “read-only analysis” via coding agent Directordecomposition + strategyOptional (read-only / diff review)can request diffs but shouldn’t applyAllow “request patch but don’t apply” Managertask planning + verificationYesgood place to run patch generation iterativelyFull apply allowed under policy Programmerexecution + diffs + commitsYes (default)the “doer”Full apply/commit allowed Policy knob: “Which roles may call CodeExecutor, and with what permissions (read-only / patch-only / apply / commit)?”

    This keeps your “attach anywhere” capability without turning the system into chaos.


    Practical renaming recommendation (so the whole project stops drifting)

    If you adopt just these three labels consistently, 80% of ambiguity disappears:

  • Chat Mode: direct | auto | coding
  • Executor: pas. | coding_agent.
  • Adapter + Transport (internal only): aider + (cli|rpc) etc.
  • Then “PAS” stays what it really is: the orchestration framework, not “an agent in the picker.”

    Related Research