Skip to main content
Pre-release

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

s1flow

Evaluate decision models on your own data, then ship the one you trust.

Decision models such as Jev, Clef, d1 and OpenAI's Decisions API (also called System One models) answer a typed question, like yes/no or pick one, with a probability instead of free text. s1flow measures on your own labeled cases how much work each model can take over at the accuracy you need, then runs that setup in your app.

Is this ticket a bug? Which team owns it? Should the agent act or ask?

Quick start · Docs · Benchmarks

Your coding agent collects labeled cases and compares decision models on them. You pick one, and your app runs it: answers above the confidence threshold are acted on, the rest go to a person, and the person's answers become new cases.

Accuracy hides what you can automate

Share of cases each model can handle on its own while staying 95% accurate. JNLI: d1 97%, Jev 61%, Clef 60%, Claude Haiku 4.5 0%. MASSIVE: Clef 90%, Jev 78%, d1 61%, Haiku 0%. Overall accuracy is within 9 points across models on each task.

These four models are within 9 points of each other on accuracy, yet the share of cases each can handle while staying 95% accurate ranges from 0% to 97%, and the leader flips between tasks. Claude Haiku 4.5, an LLM asked once per case, gives every answer the same confidence, so no threshold gets it to 95%. The numbers are a snapshot of four of the 13 to 21 models in the reports, not a ranking of providers. Your own cases may tell a different story, which is exactly why you measure them.

Quick start

1. Install the CLI. You need Python 3.13 or later.

uv tool install "s1flow[eval]"

2. Add the s1flow Skill to your coding agent.

Agent How
Claude Code /plugin marketplace add gotalab/s1flow, then /plugin install s1flow@s1flow
Codex codex plugin marketplace add gotalab/s1flow, then install s1flow from the Plugins directory
Cursor and other agents s1flow skill install copies the Skill into .agents/skills/ and .claude/skills/

Plugins update through your agent's plugin manager. s1flow skill install copies the files into your repository instead, so they change only when you run it again.

3. Tell your agent what to decide, in your own words.

Use s1flow to decide whether a new GitHub issue is a bug. Call the task is-bug, collect 200 labeled issues, compare the models and show me the result.

The agent runs s1flow init, which creates an s1flow/ folder and touches nothing else in your repository. The default line-up needs one key, OPENROUTER_API_KEY, and fetching issues needs the gh CLI, signed in. A CI check on pull requests is one flag away (s1flow init --ci) when you want it.

4. Run your pick in your app. Your choice is saved as a policy: one JSON file holding the model, the question and the confidence threshold. Your app needs only the base package (pip install s1flow), which depends on just httpx and pydantic, plus a connections.toml that lists the models it is allowed to call, including the one the policy uses (format).

from s1flow import Client, policies

client = Client(connections="connections.toml")
policy = policies.load(path="s1flow/policies/is-bug/v1.json", client=client)
decision = policy.decide({"text": "Crash on startup"})
decision.value, decision.probability   # True, 0.93

No labels yet? You can ship a policy today and evaluate it later.

What you get

  • A comparison you can act on. Pull cases from GitHub issues, app logs or labels you already have, and run every model and prompt against them. For each one you see how much it can handle at your target accuracy, with confidence intervals, cost and latency.
  • What runs is what you measured. A policy pins the model, prompt and threshold you evaluated. Change any of them, or the cases, and the old results no longer apply to it.
  • A CI check on every policy change. A GitHub Action tests the new policy against the current one on the test cases and posts the result on the pull request.
  • All the major decision models, plus LLMs for comparison. Jev (TypeSafe), Clef (Cloudflare), d1 (Liquid) and pplx-decider (Perplexity) through the System One API or OpenRouter, OpenAI's Decisions API, LLMs through LiteLLM, or a provider you write yourself.
  • Production feedback becomes new cases. Record the correct answer for a decision ID, and it goes into the next comparison.

Docs

Page What it covers
Run decisions in your app your first policy, the SDK, calling a model directly
Evaluate and compare cases, compare, charts, thresholds
Policies, evidence and promotion versions, evidence, promote, schemas
Feedback and improvement recording correct answers, measuring in production, prompt optimization
Connections and discovery which models your app may call, and how config files are found
CLI, agents and CI exit codes, the Agent Skill, GitHub Actions
Develop s1flow running this repository's checks

Metadata

Release files for s1flow 0.1.0a1

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

Source distribution (sdist)

Source distribution for s1flow 0.1.0a1
File Size Uploaded Provenance Actions
s1flow-0.1.0a1.tar.gz 224.7 kB With provenance Details for s1flow-0.1.0a1.tar.gz

Built distribution (wheel)

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

Total release size: 501.1 kB

Release files / s1flow-0.1.0a1.tar.gz

Download URL s1flow-0.1.0a1.tar.gz
Size 224.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0ecb376acc60c9aaa6882b66b75dba1eb1d0fb3ef4971296645024eb6b428ef1
BLAKE2b-256 checksum
How to use checksums
7f7d64e59bfc13347d6c86757554f59ff19351f3b040cbb1ae3b6a5e3fd4f77e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Release files / s1flow-0.1.0a1-py3-none-any.whl

Download URL s1flow-0.1.0a1-py3-none-any.whl
Size 276.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d651ef79997bd31bb63ba9e50933ae509052cf5d207e140de34415fd7e95e1e
BLAKE2b-256 checksum
How to use checksums
d7217e3e6c76f8180389471ab80272b2394e4861f00f3ba269db57aa6ba8aa31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Security for s1flow 0.1.0a1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for s1flow-0.1.0a1.tar.gz

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 Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
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