Skip to main content

up-kairos

Kairos, a temporal and numeric PDDL planner, as an engine of the Unified Planning Framework (UPF).

Kairos plans in the same process (no files, no subprocess), anytime, and proves when no plan exists. Every plan is validated before it is returned.

pip install up-kairos
import up_kairos
from unified_planning.shortcuts import OneshotPlanner

up_kairos.register()  # until UPF lists Kairos among its engines

with OneshotPlanner(name="kairos") as planner:
    result = planner.solve(problem, timeout=10)
    print(result.status, result.plan)

Operation modes

UPF Kairos
OneshotPlanner a plan; with a quality metric and a timeout, the best within it
AnytimePlanner each better plan as it comes (increasing quality), then the best
PlanValidator Kairos' validator: VAL's semantics, numeric, temporal, PDDL3
Replanner through UPF's meta engine: Replanner(problem, name="replanner[kairos]")

Results:

  • SOLVED_OPTIMALLY when Kairos proves the plan optimal for the problem's metric.
  • UNSOLVABLE_PROVEN when it proves there is no plan: the search space runs out, the timed literals take what the goal needs too soon, or there is no plan even without durations.
  • UNSOLVABLE_INCOMPLETELY when the engines that apply ran out of states without being complete for the task.
  • TIMEOUT, MEMOUT, UNSUPPORTED_PROBLEM.

Kairos' diagnostics, including why there is no plan, are in result.log_messages. Its statistics are in result.metrics: expanded nodes, states, plans and peak memory.

Problems

Kairos plans with:

  • Classical planning, with negative, disjunctive, existential and universal conditions and conditional effects.
  • Numeric planning, linear or not, with bounded numeric fluents and undefined values.
  • Object fluents.
  • Temporal planning, with required concurrency, timed effects (timed initial literals and fluents), duration inequalities and durations that read fluents.
  • Continuous effects, processes and events (PDDL+).
  • Trajectory constraints and state invariants.
  • Quality metrics: action costs, plan length, makespan, final value, and oversubscription.

It plans 52 of the 66 example problems of UPF 1.3. The rest are hierarchical, scheduling, integer or boolean parameters, intermediate conditions, timed goals and undefined booleans.

Notes:

  • Writing for Kairos. Some things go beyond what UPF's PDDL writer writes, so this engine writes them itself:
    • object fluents, as PDDL 3.1;
    • oversubscription, as goal preferences and a metric of the gain lost;
    • bounded fluents, as state invariants.
  • One instance at a time. A durative action does not overlap itself, as in POPF: SELF_OVERLAPPING is not declared.
  • Simultaneous happenings follow PDDL 2.1 and VAL. Happenings that interfere need epsilon between them (problem.epsilon, 0.001 by default). Kairos' plans keep that separation.
  • PDDL+ plans and their end. A PDDL+ plan ends when the goal is checked, after letting processes and events act. UPF's plans have no end time, so it comes in result.metrics["kairos_plan_end"], and PlanValidator answers UNKNOWN for PDDL+.

Options

OneshotPlanner(name="kairos", params={...}):

  • anytime
  • timeout: the default when the call gives none.
  • threads
  • memory_limit_mb
  • engine: "auto", "m1", "m2" or "m3".
  • search
  • seed
  • stop_after_no_improvement
  • target_cost

License

Apache-2.0.

Metadata

Release files for up-kairos 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 up-kairos 0.1.0
File Size Uploaded
up_kairos-0.1.0.tar.gz 20.2 kB Details

Built distribution (wheel)

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

Total release size: 37.2 kB

Release files / up_kairos-0.1.0.tar.gz

Download URL up_kairos-0.1.0.tar.gz
Size 20.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8921fcd7a09f87d9ee91564bc94a91237c0cbd26e903733585a9bf37ec599e8d
BLAKE2b-256 checksum
How to use checksums
bbcfbfb1f6621e4107487e7ad97e2f9fa6324617d7353ff399171c47662ae4ac
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 Oct 18, 2026.

Transparency log

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

Download URL up_kairos-0.1.0-py3-none-any.whl
Size 17.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d77e3aaa3e65f2bfe6421f873468ebc5db43cedff89a82c407292279f9879ae
BLAKE2b-256 checksum
How to use checksums
82dd13efea9a0b1f992fa47d1f583daa4a297ad507699ab2b9618fa232c904f7
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 Oct 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

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