A runtime for agentic workflows

Agentic workflows
that keep running.

Define agents and workflows in YAML, run them from your terminal, and resume every execution from persistent state.

flow.yamlAgent step
steps:
  - wait_input: ask_user
    prompt: "What CI, PR, or release task should I prepare?"
    next: ci

  - agent: ci
    system:
      file: "./system.md"
    task: '{{output_value("ask_user").payload.text}}'
    instructions:
      - "skiller-ci"
      - "response-style"
    tools:
      - shell
      - files
    next: ask_user

Agent harness

Give agents a runtime, not just a prompt.

Run agents as explicit workflow steps with configured models, tools, instructions, limits, persistent context, and observable events.

STUI

Work with agents from your terminal.

Chat with agents, launch workflows, provide human input, and inspect live execution without leaving the terminal.

skiller-stuiAgent session
[tool.hatch.build.targets.sdist]
include = [
  "/README.md",
  "/LICENSE",
  "/pyproject.toml",
  "/packages/skiller/src",
  "/packages/skiller/docs",
  "/apps/tui/src",
  "/apps/agents",
  "/ap...

The Python package configuration now keeps web concerns outside the published distribution. A focused test can make that boundary explicit:

import tomllib
from pathlib import Path


def test_sdist_excludes_website_and_examples() -> None:
    pyproject = tomllib.loads(
        Path("pyproject.toml").read_text(encoding="utf-8")
    )

    included_paths = pyproject["tool"]["hatch"]["build"]["targets"]["sdist"]["include"]

    assert "/website" not in included_paths
    assert "/examples" not in included_paths
    assert "/.github" not in included_paths
    assert "/.env.development" not in included_paths
… [Write a task…]
> type / for commands

Workflows as code

Simple, explicit YAML.

Combine deterministic steps, agents, tools, and human input in one readable flow.

agent.yamlYAML
name: support
start: ask

steps:
  - wait_input: ask
    prompt: What should I do?
    next: answer

  - agent: answer
    system: Be concise and helpful.
    task: '{{output_value("ask").payload.text}}'
    tools: [shell, files]
    next: ask

Run anywhere

Run workflows wherever the work happens.

Use the same YAML definition from your desktop, the CLI, CI, or a server.

flow.yamlone workflow definition
01

Desktop

Interactive sessions through STUI.

02

CLI

Explicit local runtime operations.

03

CI

Repeatable workflows in pipelines.

04

Server

Detached and webhook-driven runs.

01

Durable by design

Pause and resume executions without losing state.

02

Fully observable

Inspect status, outputs, and ordered runtime events.

03

Human when needed

Wait for input or approval, then continue the same run.

Get started

Start running workflows.

pipx install skiller