Skip to main content

External I/O reference

These processors reach outside the server: HTTP, processes, SQL and files. Each belongs to an optional build module (see the plugin overview). Options that accept ${...} say so. Never put a secret in config: write decrypted:<key>; the server reads it from the environment variable YUKTA_SECRET_<KEY>.

HTTP_REQUEST

Module http-request. Performs one HTTP request per message.
  • Output ports: default, or success and failure with routeByStatus.
  • Payload: {status, success, headers, body}; body is parsed when the response is JSON. Metadata gains status.
  • Default node timeout: timeout plus 5 seconds.
  • Egress: the URL is checked against yukta.egress.allowed-hosts, yukta.egress.by-workflow.<id> and yukta.egress.by-session.<id>.
  • Errors: url is mandatory; timeout must be positive, got: <n>; routeByStatus requires failureMode: CONTINUE; HTTP request failed with status <n>: <body>.

PROCESS_EXECUTOR

Module process-executor. Runs an external process per message. outputFormat payloads:
  • Output ports: default, or success and failure with routeByExitCode.
  • Metadata: exitCode (-1 on timeout). reports adds failures (at most 50 of {kind, file, line, rule, message, test?}) and totalFailures to STRUCTURED and JSON payloads. Output past the caps is discarded and outputTruncated is set.
  • Default node timeout: timeout plus the larger of 5 seconds and a tenth of timeout.
  • Server settings: execution is off until yukta.process.allowed-commands lists executables or yukta.process.allow-any is true (default false). While allowed-commands is set, useShell is refused, the executable must be listed and environment names such as PATH or LD_* need yukta.process.allowed-env. yukta.process.working-dir-root confines workingDir. See Configuration.
  • Variable safety: ${metadata.<key>} refuses keys containing PASSWORD, SECRET or KEY. With useShell, an element that uses ${...} becomes one quoted word.
  • Errors: command is mandatory; timeout must be positive, got: <n>; routeByExitCode requires failureMode: CONTINUE; Process timed out after <n>s; Process execution is off: set yukta.process.allowed-commands (or yukta.process.allow-any=true to run any executable); Command '<name>' is not in yukta.process.allowed-commands.

SQL_QUERY

Module sql-query. Runs a parameterized statement over JDBC per message. The JDBC driver must be on the classpath. The node is blocking.
  • Output ports: default; plus error with failureMode: CONTINUE.
  • Payload: {rows, count} for a query; {updated} for an update.

FILE_READ

Module file-io. Reads a UTF-8 text file from a sandbox directory. The node is blocking.
  • Output ports: default; plus error with failureMode: CONTINUE.
  • Payload: {path, content}.
  • Server setting: yukta.files.allowed-root confines baseDir; a baseDir or path that reaches outside it through a symbolic link is refused.
  • Errors: file larger than maxBytes (<n>): <file>; baseDir <dir> is outside the operator's root (yukta.files.allowed-root).

FILE_WRITE

Module file-io. Writes or appends text to a file in a sandbox directory and passes the message through. The node is blocking.
  • Output ports: default; plus error with failureMode: CONTINUE.
  • Errors: no content in payload.<field>; the sandbox errors of FILE_READ.

AGENT_SESSION

Module process-executor. Runs an AI agent harness, such as Claude Code, on a prompt and reports how it ended. Restricted: enable it with yukta.plugins.enabled=AGENT_SESSION and allow the harness executable (yukta.process.allowed-commands=claude). The process starts through the process executor, so its limits apply, and cancelling the run kills it.
  • Output ports: success, failure (the agent or harness failed, or timed out), incomplete (stopped early, for example out of turns).
  • Payload: {status, reason, text, sessionId, turn, exitCode}.
  • Run log: the agent’s text and the tools it uses appear as agent lines while it works.