Skip to main content

Decider toolkit

Python Version License

The decider toolkit (package decikit) builds decision pipelines from plain Python functions, run over polars frames or single records. A function's arguments are the columns it reads and its name is the column it writes. Steps compose with flow, dag, branch and loop; decision trees, decision tables and scorecards load from JSON as steps. Tunable values are param()s, retuned per call through a params document without rebuilding or recompiling. The same pipeline runs interpreted, or compiled with numba (per step or fused), and can be paused and stepped through in a debug session.

Install

pip install decikit                        # library and CLI
pip install "decikit[serve-starlette]"     # HTTP serving with uvicorn + starlette
pip install "decikit[serve-sanic]"         # or sanic
pip install "decikit[mcp]"                 # `decikit mcp` server for agents (fastmcp)
pip install "decikit[prove]"               # symbolic proofs (z3-solver)

From a checkout: uv sync, then uv run pytest.

Example

import polars as pl
from decikit import FusedEngine, flow, param

def ratio(income: float, debt: float) -> float:
    return debt / income

def affordable(ratio: float, limit: float = param(0.4)) -> bool:
    return ratio <= limit

pipeline = flow(ratio, affordable, name="afford")
df = pl.DataFrame({"income": [1000.0, 500.0], "debt": [200.0, 400.0]})
pipeline.run(df)                                                   # income, debt, affordable
pipeline.run(df, params={"afford": {"affordable": {"limit": 0.9}}})
FusedEngine().bind(pipeline).run({"income": 1000.0, "debt": 200.0})  # one record

CLI

decikit guide                 # print the getting-started guide
decikit template NAME [DIR]   # write a starter project
decikit build [VERSION]       # stage and warm a config version (fills the numba cache)
decikit serve                 # POST /invocations, GET /ping

Settings come from DECIKIT_* environment variables; see decikit --help.

Claude Code plugin

This repository is a Claude Code plugin marketplace. In Claude Code:

/plugin marketplace add capitec/dsp-decision-engine
/plugin install decikit@decikit

You get the decikit skill (a guide to the project layout, best practices, pipelines, checks and the config documents) and the decikit mcp server, which reads pipelines, edits trees, tables, scorecards and params with validation, and talks to the VS Code extension. The server runs through uv in the directory Claude Code starts in, so start it from your project root. Setup and troubleshooting: setup-project.md.

Documentation

  • Start with decikit guide (the same text as decikit/GUIDE.md): concepts, runnable examples, project layout and common mistakes. docs/ is the docs site.
  • docs/architecture/: how it works (steps and IR, engine, configurable steps, serving, lab); published on the docs site.
  • docs/design_decisions/: why it is built this way: decisions, experiments and known limitations.
  • The package docstrings (help(decikit)) are the user documentation.

Contributing

See CONTRIBUTING.md. Run uv run pytest before opening a pull request.

License

MIT. See LICENSE.

Metadata

Release files for decikit 0.1.0

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

Source distribution (sdist)

Source distribution for decikit 0.1.0
File Size Uploaded Provenance Actions
decikit-0.1.0.tar.gz 5.7 MB With provenance Details for decikit-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 6.3 MB

Release files / decikit-0.1.0.tar.gz

Download URL decikit-0.1.0.tar.gz
Size 5.7 MB
Tags Source
SHA-256 checksum
How to use checksums
740e2cf4b073e32f8f38a2e72648df3995834718837bb668de8c3047fb6167a8
BLAKE2b-256 checksum
How to use checksums
a519f0e86292b94a7c96aefec9cb5d53794995ebf3bd680b36d13bb0df6f137f
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 26, 2026.

Transparency log

Release files / decikit-0.1.0-py3-none-any.whl

Download URL decikit-0.1.0-py3-none-any.whl
Size 627.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
abd2f8d8b8e0dfff560cf74fd966613b1d81e8a24997c0869f6e911d21c30ced
BLAKE2b-256 checksum
How to use checksums
ad2dcac224db26e9a33ab9b83fc85e5ccbe9007503fd6cf8be5cb1c58416b5a4
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 26, 2026.

Transparency log

Security for decikit 0.1.0

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 decikit-0.1.0.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 26, 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

0.1.0 This release

2 release files Full provenance

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