Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Skiller.run

A runtime for agentic workflows.

Skiller runs agentic flows as durable executions with persistent state, safe resume, and full observability logs.

What It Does

Skiller turns a YAML flow into a durable execution. Define the work, start a run, resume it when new input arrives, and inspect every step along the way.

  1. Define the flow. Combine agents, tools, deterministic steps, and external input in YAML. With an LLM provider and tool policies configured, this two-step flow runs an ongoing agent session:
name: mono
start: ask_user

steps:
  - wait_input: ask_user
    prompt: "What should the agent do?"
    next: mono_agent

  - agent: mono_agent
    system: |
      Complete the user's task and report the result clearly.
    task: '{{output_value("ask_user").payload.text}}'
    tools:
      - shell
      - files
    next: ask_user
  1. Start a durable run. Skiller persists its state, outputs, and runtime events instead of keeping the execution only in memory.
skiller run ./mono.yaml
  1. Resume when input arrives. Waiting state survives process restarts. Send input later and continue the same run from the exact step where it paused.
skiller input receive <run_id> --text "Audit the dependencies" --wait
  1. Observe and manage the run. Check its current state, stream new events, or inspect the complete persisted history.
skiller status <run_id>
skiller observe <run_id>
skiller logs <run_id>

Prefer an interactive experience? Open the TUI to chat with agents, launch flows, and return to previous runs:

skiller

Install

For regular CLI usage, install it with pipx:

pipx install skiller

Usage

STUI: chat and launch runs

Use skiller when you want an interactive terminal UI to chat, launch runs, and manage persisted runs.

skiller

CLI: run and manage flows

Run a packaged, local, or configured flow reference:

skiller run @flows
skiller run @group/name

Direct paths are also supported:

skiller run ./my-flow.yaml
skiller run ~/flows/my-flow.yaml

Inspect and manage runs:

skiller status <run_id>
skiller logs <run_id>
skiller delete <run_id>

Flow Steps

Deterministic:

  • assign
  • notify
  • switch
  • when

Execution:

  • agent
  • shell

Waiting:

  • wait_input
  • wait_webhook

Persistence

Skiller persists:

  • run state
  • step outputs
  • runtime log events
  • waiting states
  • external event receipts
  • persisted output bodies

Waiting is persisted, not simulated in memory. A run can stop in WAITING and resume later from stored state.

Project Layout

  • packages/skiller/src/skiller: runtime and CLI code
  • apps/agents: bundled agents and authentication flows
  • packages/skiller/docs: runtime and CLI documentation
  • packages/skiller/tests: runtime, CLI, and integration tests
  • apps/tui: Textual UI app

Dependencies

Runtime dependencies are grouped by the capability that uses them:

Area Dependencies Used for
Core pydantic, PyYAML Configuration validation and YAML flow loading
LLM providers openai, boto3 OpenAI, Codex, and Amazon Bedrock adapters
MCP fastmcp MCP client connections and tool execution
Webhooks fastapi, uvicorn Local webhook server
Terminal UI textual Interactive agent chat and run management

Development uses pytest for tests, httpx for HTTP test clients, and ruff for linting. Packages are built with hatchling. Direct dependency constraints live in pyproject.toml; the resolved dependency graph lives in uv.lock.

Documentation

Core guides:

Step references:

Development

Run the main checks:

./.venv/bin/python -m ruff check packages/skiller/src apps/tui/src packages/skiller/tests apps/tui/tests
./.venv/bin/python -m pytest packages/skiller/tests apps/tui/tests
./.venv/bin/python -m build --no-isolation

Manual CLI E2E flows live in packages/skiller/tests/e2e/cli_*.sh. Step-specific flows live in packages/skiller/tests/e2e-steps/<test>/run.sh. Use them when you need to exercise the real CLI path without mixing those checks into the default pytest suite.

License

Apache-2.0. See LICENSE.

Disclaimer

This project is provided "as is", without warranties of any kind. The authors and contributors are not responsible for production incidents, data loss, service interruptions, security issues, regulatory non-compliance, third-party integration failures, or any direct or indirect damages resulting from its use.

Metadata

Release files for skiller 0.1.0b41

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skiller 0.1.0b41
File Size Uploaded
skiller-0.1.0b41.tar.gz 326.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for skiller 0.1.0b41
File Interpreter ABI Platform
skiller-0.1.0b41-py3-none-any.whl Python 3 none any Details

Total release size: 877.1 kB

Release files / skiller-0.1.0b41.tar.gz

Download URL skiller-0.1.0b41.tar.gz
Size 326.8 kB
Tags Source
SHA-256 checksum
How to use checksums
725aca6f2d077a65ee0339e6c91c45db5067b1fc66f6896007bda0c31fd521f9
BLAKE2b-256 checksum
How to use checksums
1bebaa7ca9c804d56d0392238ee274206405c137951bdf45a408e4a8f0c89103
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / skiller-0.1.0b41-py3-none-any.whl

Download URL skiller-0.1.0b41-py3-none-any.whl
Size 550.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5128b7e8810552e78e56c749e5ed1adf3a690c5428f6ad6e91fad0d1f541fe7d
BLAKE2b-256 checksum
How to use checksums
49b625bb6975e827aba1cd496a442189dde7712924c2f8d5dec9b213d4b90528
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0b41 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page