Philosophy sunset background
๐ŸŒด v0.51.6 โ€” pip install palmengine[cli]

Orchestration that
feels alive

Rich interactive wizards, durable workflows, and transactional reliability โ€” built on clean Behavior Trees.

Built for real life

Palm gives you the power to build complex workflows that still feel human โ€” with interactive wizards, durable state, and production-grade reliability.

Interactive Wizards

Collection steps, schemas, backtracking, summary & transactional commits. Resume anytime.

Parallel Workflows

Run wizard branches concurrently with isolated scopes and smart merging.

Durable & Reliable

Process instances survive restarts. Outbox, compensation, and live projections keep everything consistent.

Powerful Transforms

22 built-in rules for data shaping, serialization, and enrichment โ€” usable everywhere.

Palm in action

From the living Explorer hub to the rich REPL and live dashboard โ€” see how Palm feels when you run it.

Palm Explorer

Palm Explorer

Living introspection hub with HTMX wizard workspaces โ€” collection editors, backtrack, progress timelines, and REST-linked instance detail.

REPL Wizard Interaction

Rich REPL Experience

Interactive wizards with numbered choices, backtracking, collection editing, and real-time feedback. Feels alive.

Live Status Dashboard

Live Dashboard

Real-time overview of jobs, instances, patterns, and host health. Refresh with -r for monitoring.

Scroll โ†’

Run palm host server and open http://localhost:8080/ to explore live.

Documentation

Architecture, development guides, and the living API reference.

REST API

Palm ships a registry-driven HTTP surface on ServerRuntime. Start a server, open Palm Explorer, browse the REST reference, or fetch OpenAPI.

Try it โ†’ ยท GET /explorer โ€” living hub (root redirects here) ยท GET /v1/docs โ€” interactive reference ยท GET /v1/openapi.json โ€” OpenAPI 3.0

Start the server

$ palm host server

Default port is 8080. Open http://localhost:8080/ โ€” redirects to Palm Explorer. Health at /health links to Explorer, docs, and OpenAPI.

Endpoint groups

  • Explorer โ€” SSR hub with wizard workspace and collection UI
  • Meta โ€” health, OpenAPI, HTML docs
  • Wizards โ€” instance-keyed submit, status, input, backtrack
  • Jobs โ€” submit flows, list status, job-level input
  • Plans โ€” stage and batch-submit execution plans
  • Instances โ€” durable process index and resume
  • Snapshots โ€” point-in-time blackboard captures
  • Catalog โ€” registered flows and processes

List endpoints return a resource array plus a pagination block. When auth_enforce is on, send X-Palm-Subject on write operations.

Try it

Copy these curls against a running server (localhost:8080). Pipe through jq for pretty output.

GET /health

Runtime status and documentation links

curl -s http://localhost:8080/health
GET /v1/jobs/{job_id}/context

Rich job view โ€” wizard step, snapshots, next actions

curl -s 'http://localhost:8080/v1/jobs/job-abc123/context' \
  -H 'Accept: application/json'
GET /v1/jobs

Paginated orchestration job board

curl -s 'http://localhost:8080/v1/jobs?limit=10&offset=0' \
  -H 'Accept: application/json'
POST /v1/jobs

Submit a named flow from the repository

curl -s -X POST 'http://localhost:8080/v1/jobs' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"flow_name":"onboard"}'
GET /v1/instances

Durable process instance index

curl -s 'http://localhost:8080/v1/instances?limit=10&offset=0&include_terminal=true' \
  -H 'Accept: application/json'
GET /v1/instances/{instance_id}/snapshots

State snapshots for audit and replay

curl -s 'http://localhost:8080/v1/instances/inst-abc123/snapshots?limit=10&offset=0' \
  -H 'Accept: application/json'
GET /v1/flows

Registered flow catalog

curl -s 'http://localhost:8080/v1/flows?pattern=wizard' \
-H 'Accept: application/json'
GET /v1/flows/{flow_id}

Full flow definition

curl -s 'http://localhost:8080/v1/flows/onboard' \
-H 'Accept: application/json'

Full reference with every endpoint, schema highlights, and sample responses: GET /v1/docs on your running server.

Start in seconds

$ pip install palmengine[cli]
$ palm                             # REPL cli
$ palm doctor
$ palm status
$ palm flow start onboard          # rich wizard example
$ palm host server                 # http://localhost:8080/explorer

Or with uv (recommended): uvx palmengine palm doctor