decidealot

Your hardware or TypeSafe’s hosted Jev. Decidealot is a Docker image that runs Laya, Von or a CLM projection head on your machine, or forwards to TypeSafe’s hosted Jev, behind one TypeSafe-compatible HTTP API and an MCP Streamable HTTP endpoint on the same port.

You send a state and one or more named questions. Each question is a choice (pick one label), a score (an expected position on an ordered rubric) or a noul (the probability that a statement is true). Decidealot returns typed answers with probabilities. It never acts on them. Your application decides what a 0.94 means.

model_directory="$HOME/.local/share/decidealot/models"
mkdir --parents "$model_directory"

docker run --detach --name decidealot --init --restart unless-stopped \
  --user "$(id -u):$(id -g)" \
  --read-only --cap-drop ALL --security-opt no-new-privileges:true \
  --tmpfs /tmp:rw,noexec,nosuid,size=128m \
  --tmpfs /var/run:rw,noexec,nosuid,size=8m \
  --mount type=bind,source="$model_directory",target=/models \
  --publish 127.0.0.1:8080:8080 \
  psyb0t/decidealot:latest

The first start downloads the pinned Laya and Von bundles into that directory, which takes a few minutes. Once curl --fail http://127.0.0.1:8080/health succeeds, ask for a decision:

curl --fail http://127.0.0.1:8080/v1/systemone \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "laya",
    "state": "A proposed action would permanently delete protected data.",
    "questions": {
      "handling": {
        "type": "choice",
        "instructions": "Choose the required handling for this action.",
        "criteria": {
          "allow": "The action is reversible and does not affect protected data.",
          "require_review": "The action is irreversible or affects protected data."
        }
      }
    }
  }'

Deployment has the hardened commands with resource limits, CUDA and Compose.

What’s in the box

Part What it does
Local providers Laya (three checkpoints with automatic routing), Von 1.1 and the CLM v0.1 projection head. Each runs as its own child process, started on first use and stopped when idle.
Hosted provider TypeSafe’s Jev, enabled by a TypeSafe API key. Requests go to https://api.typesafe.ai; nothing loads locally.
HTTP API POST /v1/systemone, POST /v1/systemone/batch, GET /v1/models, POST /v1/models/unload, GET /health.
MCP Streamable HTTP at /mcp with system_one, system_one_batch, list_models and unload_models.
Images psyb0t/decidealot:latest (CPU) and :latest-cuda (CUDA 12.6), both linux/amd64, non-root by default.
Agent integrations A skill for Claude Code, Codex and OpenClaw, and an OpenClaw stdio bridge for clients without remote MCP.

Where to go next

You want to Read
Choose between Laya, Von, CLM and Jev Models
Write requests and read answers HTTP API
Connect an MCP client MCP
See every environment variable Configuration
Run it for real, on CPU or CUDA Deployment
Put it behind a proxy or on a network Security
Fix a startup or request failure Troubleshooting
Give an agent the skill or the stdio bridge Agent integrations
Understand the processes and request path Architecture
Change the code and run the checks Development

Decidealot code is WTFPL (LICENSE). Laya, Von, CLM, PyTorch, Transformers and each downloaded model keep their own upstream licenses. Read those before putting a model into a commercial product.