Jaiph is a workflow language and toolchain for combining prompts, rules, scripts, and workflows — the usual building blocks for agent-style pipelines, automation, and review flows.
You work in a workspace: author .jh modules and optional *.test.jh tests; the toolchain validates them, emits each script body under scripts/ (and deterministic paths for inline scripts), then runs a Node workflow runtime that interprets the workflow AST in process. Orchestration stays in that interpreter — there is no separate “workflow shell” and no workflow-wide bash emitter; script steps are normal executables spawned as subprocesses. That matches how the CLI and kernel are wired; see Architecture.
The CLI (run, test, compile, format, init, install, use, and file shorthand) is what you install. jaiph run always starts the entry file’s workflow default (CLI — jaiph run). Local jaiph run, Docker-backed jaiph run, and jaiph test share that AST interpreter stack; sandboxing (Docker vs host) and how __JAIPH_EVENT__ is shown differ by command and flags (Architecture — Runtime vs CLI responsibilities).
This page is a map: it does not teach syntax end-to-end. Use the sections below for install steps, language reference, contracts, and runtime behavior.
.jaiph/ and workspace conventions..jh modules under .jaiph/libs/, pin versions with a lockfile, and import them with paths like "lib-name/rest" (first segment is the folder under .jaiph/libs/).send for routing work between workflows without tight coupling.*.test.jh suites, mocks, and assertions for deterministic checks around workflows.Handle<T> resolution, implicit join, and interaction with run async.jaiph run, test, compile, format, init, install, use, flags, environment variables, and file-path shorthand for existing .jh / *.test.jh files. jaiph compile walks the import closure and runs validateReferences only — no scripts/ emission, no buildRuntimeGraph(), no runner (Architecture — Summary; directory discovery skips *.test.jh unless you pass a test file explicitly).config { } blocks, agent backends, logging, and runtime options (including env overrides)..jaiph/runs/ (per-step captures, run_summary.jsonl, optional inbox/ files) versus live __JAIPH_EVENT__ lines on stderr for progress and hooks.hooks.json to run shell commands on workflow and step lifecycle events (hooks run on the host CLI even when the workflow runs in Docker).jaiph run only (beta; on by default when JAIPH_DOCKER_ENABLED is unset and JAIPH_UNSAFE is not true). Enablement is environment-only — use JAIPH_DOCKER_ENABLED and JAIPH_UNSAFE as described in Enabling Docker; workflow config cannot turn Docker on or off. There is no jaiph run --docker flag. Image, network, and timeout still come from runtime.* and JAIPH_DOCKER_* where applicable (Configuration). jaiph test does not use Docker (Architecture — Test runner integration).https://raw.githubusercontent.com/jaiphlang/jaiph/refs/heads/main/docs/jaiph-skill.md).