Skip to main content
The yukta command is a thin client for a running Yukta server. It is a single static binary with no runtime to install. It calls the REST API and prints the answer, which makes it useful in shell scripts, CI jobs and quick checks at a terminal. Use it when you want to apply a session file, start a workflow, follow its logs and result, or steer a run, without writing HTTP calls.

Install

There are no packaged releases yet; build the binary from source. The build produces binaries for Linux (amd64 and arm64), macOS (Intel and Apple silicon) and Windows (amd64). Copy the one for your platform onto your PATH. See Deployment.

Configure

Three global flags apply to every command. Flags go before or after the command name. A flag overrides the environment variable. The client reads no configuration file.
The server’s role and session rules apply to the key you give; see REST API overview. The client sends the key only as a bearer token.

Output formats

Some commands print JSON in both formats because their data is nested: session summaries, session workflow get, session workflow graph, session workflow executions. The live commands print one item per line, as described under Watch live.

Sessions

session apply sends the same body as POST /api/sessions and needs a key with the ADMIN role. It checks that the text is valid JSON before sending it.

Start and stop workflows

workflow start takes the trigger input with one of two flags: The two flags cannot be combined, and the payload must be a JSON object.

Inspect runs

Use -o json with status to get the full snapshot, including every node’s status. The server may keep only the newest runs; see the REST history call.

Control a run

Control nodes

Node commands act on one node of a live run. The role they need is OPERATOR. retry, breakpoint and signal take no session id. signal fails with an HTTP 409 error if the node is not waiting for that signal. These commands map to the calls on the Control API page.

Watch live

These commands stay connected until the run ends or you press Ctrl-C. A Ctrl-C ends them cleanly with exit code 0. controlbus watch follows the server-wide event feed and prints one line per event:
With -o json, controlbus watch prints each event as one JSON object per line. The feed does not replay past events, so start the watch before the run, or use --until-done. --until-done exits with 0 whatever the final status of the run. Read the last WORKFLOW line, or the run’s status, to see the outcome.

Discover plugins

Control bus

The control bus commands address nodes by workflow id rather than by run. See the REST control bus calls.

Access

Give the client a key with --token or YUKTA_TOKEN when the server requires one. A key with the VIEWER role can run the read commands and the live commands. Starting, stopping and controlling runs needs OPERATOR, and applying sessions and sending control bus commands needs ADMIN. A refused request prints the server’s answer, for example API error: status 403: ....

Exit codes

On failure the command prints error: <message> to standard error. An HTTP error includes the status code and the response body.

Not covered by the client

The client does not wrap every REST call. For recovering aborted runs, changing priority or scheduler limits, approval lists, version history and rollback, validation, the control audit, supervisors and workers, use the REST API or the MCP server.