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
- Runs durable YAML flows that can include agents
- Pauses and resumes flows from persisted waiting states
- Provides CLI to observe and manage persisted runs
- Includes a TUI for chatting with agents, launching flows, and managing runs
name: mono
description: "Terminal agent chat with shell and file access"
version: "0.1"
start: ask_user
inputs: {}
steps:
- wait_input: ask_user
prompt: "Write a task or message. Type exit, quit, or bye to stop."
next: decide_exit
- switch: decide_exit
value: '{{output_value("ask_user").payload.text}}'
cases:
exit: done
quit: done
bye: done
default: mono_agent
- agent: mono_agent
system: |
You are a concise assistant for this flow.
instructions:
- "solve-task-style"
- "response-style"
task: '{{output_value("ask_user").payload.text}}'
tools:
- shell
- files
max_turns: 50
next: ask_user
- assign: done
values:
status: "closed"
Install
For regular CLI usage, install it with pipx:
pipx install skiller
STUI for chat and launch runs
Use skiller when you want an interactive terminal UI to chat, launch runs, and
manage persisted runs.
skiller
Use CLI to run flows
Run a YAML flow definition:
skiller run --file <path>
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.
How Mono Is Built
mono is a regular YAML-defined agent with local runtime configuration beside it.
The flow is intentionally small:
- wait for terminal input with
wait_input - stop on
exit,quit, orbyewithswitch - send every other message to an
agentstep - let that agent use its configured
shellandfilestools - loop back to
wait_input
Minimal shape:
name: mono
start: ask_user
steps:
- wait_input: ask_user
next: decide_exit
- switch: decide_exit
default: support_agent
- agent: support_agent
tools:
- shell
- files
next: ask_user
The full prompt and step definition live in
apps/agents/mono/agent.yaml.
The provider, loop limits, shell allowlist, and file roots live in
apps/agents/mono/agent.json.
Project Layout
packages/skiller/src/skiller: runtime and CLI codeapps/agents/mono: bundled terminal agentpackages/skiller/docs: runtime and CLI documentationpackages/skiller/tests: runtime, CLI, and integration testsapps/tui: Textual UI app
Documentation
Core guides:
packages/skiller/docs/cli/command-guide.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. 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.0b30
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.0b30.tar.gz | 650.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skiller-0.1.0b30-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / skiller-0.1.0b30.tar.gz
| Download URL | skiller-0.1.0b30.tar.gz |
|---|---|
| Size | 650.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07a14c7c8c2b55b3320d681015eb33b0979d184200f13387cc7943b56f93420a
|
|
BLAKE2b-256 checksum How to use checksums |
8aae426932c3c8971e2e55b67314c7c8d6fc1881ed166c50b37ca118087ab777
|
| 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 Aug 18, 2026.
Transparency logRelease files / skiller-0.1.0b30-py3-none-any.whl
| Download URL | skiller-0.1.0b30-py3-none-any.whl |
|---|---|
| Size | 496.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0fe8d9936b5ec4d2ca153b4a76577071a62180ac3a8dc38f8021fa1fe665b8d3
|
|
BLAKE2b-256 checksum How to use checksums |
58f7273de7d8dbc0c57945815e0bb6fe811986a0d9144689c554005a4be46294
|
| 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 Aug 18, 2026.
Transparency log