kiste exec runs a program in a Kiste with its exact output and exit status; durable records, cancel and interrupt.
exec runs a program in the Kiste and streams its output back while it runs.
kiste exits with the program's exit status, so exec fits into scripts and
CI like a local command.
Exactly what you asked for
- No shell in between. The words after
--are the program and its arguments, passed exactly. Writesh -c '…'when you want shell syntax such as pipes or&&. A login shell (sh -lc) also runs the image's login profile; usesh -cwhen standard output must contain only the command's output. - Byte-exact output. Standard output and standard error arrive separately and unchanged, binary included.
- No standard input.
execdoesn't forward standard input; pipe input withkiste ssh NAME -- CMD < fileinstead. - No terminal. Programs that insist on a terminal belong in
kiste ssh. - No SSH.
execuses a private channel into the Kiste, not SSH, and works without device keys.
--cwd sets the working directory, -e KEY=VALUE (repeatable) the
environment. --timeout limits how long the command may run.
Machine-readable
With --json, one exec.completed envelope holds the exit_code and the
output as stdout_base64 and stderr_base64. With --output ndjson every
chunk of output arrives as its own line while the command runs. kiste exits
with the command's status in both modes; a failure of the CLI itself is an
error envelope with its own code. Exit code 127
means the program doesn't exist in the Kiste.
Durable records
Every command gets a record that survives your connection: who ran what, when it started and ended, its exit code or signal, and how many bytes it wrote. The output itself is not stored on the server.
When this computer started the command, kiste command also shows its local
transcript, so you can diagnose it without running it again. The console shows
commands under Activity.
Cancel and interrupt
Give a command your own ID to address it from elsewhere, for example from another agent:
cancel stops a running exec command on its Kiste. interrupt asks any
durable command, including a coding agent run, to stop
cooperatively, and records the reason.
exec or ssh?
kiste exec | kiste ssh NAME -- CMD | |
|---|---|---|
| Shell | none, argv as given | the remote login shell |
| Standard input | not forwarded | forwarded |
| Terminal | never | when interactive |
| Output | byte-exact, separate streams, JSON modes | as the terminal shows it |
| Record | durable, cancellable | none |