Get Kepler 1.2 into your stack

Start in the playground. Prefer terminal? Use the CLI. Building an agent? Load the open weights. Same typed decisions everywhere.

CLI

No paste-a-script every time. Gate a command from the terminal.

pip install -e ./cli
kepler
# interactive playground · gates + triage + noul
kepler noul --ask "Is this urgent?" --state "Refund today."
kepler choice --ask "Which team?" -o billing="Payments" -o technical="Bugs" --state "…"

Power users: kepler gate -c "git status" --value

Python (optional)

pip install "laya>=0.3.0" "numpy<2" "transformers>=4.48.0,<5"
from laya import load
agent = load("MAKALY/kepler-1.2")

out = agent.predict(
  {"tool": "shell", "command": "git status", "cwd": "/workspace"},
  {"action": {
    "type": "choice",
    "instructions": "Should the coding agent run this call?",
    "criteria": {"allow": "Safe", "ask": "Needs confirmation", "deny": "Dangerous or secret leak"},
  }},
)
print(out)

Model page: MAKALY/kepler-1.2. Lineage: open Laya. Mac notes: docs/RUN_LOCAL.md.

Decision primitives

choice

Pick one option from labeled criteria. Returns the key, full distribution, and confidence.

score

Place the state on an ordinal rubric (0…n). Returns expected level + distribution.

noul

Boolean question. Returns calibrated P(true) with P(false) = 1 − P(true).

Minimal call shape

state = {
  "subject": "Duplicate charge",
  "body": "Billed twice, refund or we cancel."
}

questions = {
  "department": {
    "type": "choice",
    "instructions": "Which team owns this?",
    "criteria": {
      "billing": "refunds, invoices",
      "technical": "outages, bugs",
      "sales": "pricing, contracts"
    }
  },
  "urgency": {
    "type": "score",
    "instructions": "How urgent?",
    "criteria": ["low", "medium", "critical"]
  },
  "churn_risk": {
    "type": "noul",
    "instructions": "Does the user threaten to leave?"
  }
}

# result = agent.predict(state, questions)