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.
- 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
- Start a durable run. Skiller persists its state, outputs, and runtime events instead of keeping the execution only in memory.
skiller run ./mono.yaml
- 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
- 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:
assignnotifyswitchwhen
Execution:
agentshell
Waiting:
wait_inputwait_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 codeapps/agents: bundled agents and authentication flowspackages/skiller/docs: runtime and CLI documentationpackages/skiller/tests: runtime, CLI, and integration testsapps/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:
apps/instructions/skiller-user.mdpackages/skiller/docs/flows/flow-schema.mdpackages/skiller/docs/db/schema.mdpackages/skiller/docs/runtime/execution-model.mdpackages/skiller/docs/steps/agent.mdpackages/skiller/docs/steps/wait_input.mdpackages/skiller/docs/steps/wait_webhook.md
Step references:
packages/skiller/docs/steps/assign.mdpackages/skiller/docs/steps/shell.mdpackages/skiller/docs/steps/notify.mdpackages/skiller/docs/steps/switch.mdpackages/skiller/docs/steps/when.md
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)
| File | Size | Uploaded | |
|---|---|---|---|
| skiller-0.1.0b41.tar.gz | 326.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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