simple init. To synchronize an existing production branch, run:
agent.ts is the desired state. simple.lock.json records the remote Agent, selected branch and head commit, graph identities, and immutable Action heads. Commit both files.
Pull refuses to overwrite local changes. Reconcile them first, or pass --force only when you intentionally want production to replace the local source. If --branch is omitted, the CLI follows the product’s most-recently-updated branch selection.
Action-first authoring
Define integrations withaction.http, action.code, action.customDataQuery, action.customDataSearch, or action.knowledgeBaseSearch. Attach an Action to a prompt with action.callable, or execute it deterministically with an Action node or action.run.
defineAgentSnapshot(...) when necessary to preserve every current Agent v2 node and legacy field losslessly; you can refactor that snapshot to the ergonomic API deliberately.
Validate and publish
simple actions upgrade rewrites a pulled defineAgentSnapshot(...) with the accepted remote Action values and version pins. For ergonomic defineAgent(...) source, update the Action definition to match the remote head first; the CLI refuses to make the lockfile disagree with source.
Organization resources
Tags, analyzers, scorecards, and post-call workflows belong to the organization rather than to an Agent commit, and an Agent references them by UUID. The CLI creates and lists them directly:list prints <uuid> <name> <details> and accepts --json for the raw payload, which is how you collect the
UUIDs that agent.ts, a scorecard section, or a workflow filter needs.
Each resource is created from a JSON definition passed with --file <path> (--file - reads stdin), from command
flags, or from both, with flags overriding the file. Definitions are camelCase, reference other resources by UUID, and
are validated locally before anything is sent.
--output covers string, number, and boolean analyzers and --output-enum covers enums; nested object and array
outputs are authored in a definition file:
callTagUuids is the
shorthand for “any of these tags”; callTagFilter expresses the full rule in disjunctive normal form, where groups are
ORed and the conditions inside a group are ANDed with any_of, all_of, or none_of:
simple.lock.json is used, so --agent and --branch are only needed
elsewhere. An agentBranchUuid in the definition pins the branch outright and overrides both.
CLI authentication
simple login opens PropelAuth in your browser and uses Authorization Code + PKCE. When your account belongs to more
than one organization, the CLI asks which organization to use. It stores the rotating refresh token with user-only
permissions and refreshes short-lived access tokens automatically.
The CLI is OAuth-only and uses the signed-in user’s existing Agent and Action permissions. The published CLI includes
Simple’s public OAuth client configuration and registered localhost callback. No client secret is used by the CLI.