A Cliq team is a portable manifest: ordered phases, each bound to an agent. A run executes that team against your inputs (the requirement). Coordination is daemon-mediated: phase outputs become run artifacts and are passed to later phases as upstream. Cliq does not coordinate work through a shared on-disk channel or signal layout. Product story first? What is Cliq?.

Team

A team is identified by scope and slug (for example @cliq/hello-world). Its definition lives in the team catalog as a manifest (phases, agents, dependencies, optional role text for LLM phases). You install / assemble a team into a workspace, then run it. The manifest is the playbook; the run is one performance with concrete inputs.

Phase

A phase is one named step in the manifest:
There is no separate “job” object. The phase is the step; the agent type decides which inputs matter.

Phase types


Agents

An agent is a registered runtime the daemon can invoke. Every phase picks one with agent: <name>. Switching agent changes how a step runs. It does not change the DAG.

How agents are abstracted (SDK)

Invoke is data in / data out over the agent protocol. Context layers add only what each kind needs:
  • LlmAgent builds a prompt from role + upstream_text + requirement, then calls a model (or a coding CLI that wraps one).
  • CliAgent extends LlmAgent — same prompt assembly, then runs a coding CLI tool.
  • ConnectorAgent does not use role; it uses action/sources/targets and settings credentials.
  • exec runs the phase’s commands; no role, no model.
The invoke payload may include an empty role string for every agent; only LLM agents treat it as meaningful input.

Role (LLM agents only)

A role is the specialist brief for an agent_type: llm phase: who this agent is, what to produce, and what not to do.
  • Declared as required input on LLM agent manifests.
  • Carried on the run as role text for that phase (assembled into the LLM prompt with upstream and the requirement).
  • Not a coordination surface — agents do not discover work by reading role files from a shared layout.
Not used by exec, connectors, notify agents, or nested team phases. Those use commands, sources/targets, or a team ref. A good role is specific. “Implement the failing tests until they pass” beats “write code.” For LLM phases, tightening the role usually beats swapping models.

Dependencies (depends_on)

depends_on encodes order. The daemon builds a DAG and starts a phase when every predecessor is done.

Gates

A gate (type: gate) judges earlier work.
  1. Optional commands run (exit 0 = check passed)
  2. A gate-capable agent issues a verdict — typically an llm agent, or hug / auto-gate
  3. The daemon acts on the verdict
Only agents that can produce verdicts belong on gate phases (llm or specialized gate types).

Outputs, upstream, artifacts

When a phase finishes, its result is stored on the run as a phase artifact (output: text + optional data). The next invoke receives upstream: map of predecessor name → that output. Dependents do not re-read a chat transcript or pick up handoffs from a directory tree. phase completes → artifact on the run → dependents see upstream.

Inputs and requirements

The run still needs a what (cliq req, cliq run -i …, or declared team inputs). Same team, different inputs → different outcomes; the process stays stable.

Where it runs

The daemon executes the pipeline. The CLI is a client (start run, status, logs). More machines → more daemons in a realm. Credentials: Auth.

Picture


Next