Skip to main content

Skiller runtime: CLI + Webhooks + MCP + Skills

Project description

Skiller.run

A lightweight runtime for agentic workflows.

Define YAML flows with agents, tools, waits, channels, webhooks, and control steps.

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

What It Does

  • Run long-lived agents and flows described in YAML
  • Resume runs from persisted waiting states
  • Observe and manage persisted runs

Install

python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]

Usage

CLI to run agents and flows

Use skiller when you want the direct command-line runtime.

Run the bundled terminal agent:

skiller run mono

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>

delete removes the run and database rows tied to it, including runtime events, waits, external event records, deduplication receipts for those events, and persisted output bodies.

Resume a waiting run:

skiller input receive <run_id> --text "hello"
skiller resume <run_id>

STUI for chat and launch runs

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

stui

Configuration

Agent configuration is selected in this order:

  1. AGENT_AGENT_CONFIG_FILE
  2. agent.json next to the selected agent.yaml
  3. ~/.skiller/settings/agent.json

General runtime configuration lives in:

~/.skiller/settings/config.json

When present in the current working directory, .env.development is loaded after real environment variables and before JSON config files. This repo uses it to point local development runs at dev-runtime.db.

See:

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.

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, or bye with switch
  • send every other message to an agent step
  • let that agent use its configured shell and files tools
  • 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 packages/skiller/agents/mono/agent.yaml. The provider, loop limits, shell allowlist, and file roots live in packages/skiller/agents/mono/agent.json.

Project Layout

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

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. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skiller-0.1.0b1.tar.gz (412.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skiller-0.1.0b1-py3-none-any.whl (319.1 kB view details)

Uploaded Python 3

File details

Details for the file skiller-0.1.0b1.tar.gz.

File metadata

  • Download URL: skiller-0.1.0b1.tar.gz
  • Upload date:
  • Size: 412.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skiller-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 5b54767a384f8f77242d5d84d34adcf47b1b49624c2b84fa0e8f12f2c85308fc
MD5 01970ef020e188a6fc3996958817eb02
BLAKE2b-256 906b2d2572c32fa0a24bf821840d79259baa61512efcf11a658807a9005926a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for skiller-0.1.0b1.tar.gz:

Publisher: publish.yml on fredycampino/skiller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skiller-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: skiller-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 319.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skiller-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 1d61b013cceb3a524fc135d51ca5de108a1a1755b440be7cbd4222c3aff8ba63
MD5 908a3a1444fb9df202193b917044903f
BLAKE2b-256 8f12c1cd708acf52722041e04829169816455815f3dc12e6dbaa7ac2425bf80a

See more details on using hashes here.

Provenance

The following attestation bundles were made for skiller-0.1.0b1-py3-none-any.whl:

Publisher: publish.yml on fredycampino/skiller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page