Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

800 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jaiph

jaiph.org · Your first workflow · Your first agent + sandboxed run · Install & switch versions · Agent Skill · Architecture · CLI · Contributing

Docs note: The Jaiph documentation site follows the Diátaxis framework. Tutorials: Your first workflow, Your first agent + sandboxed run. How-to: Install & switch versions, Run in a Docker sandbox, Authenticate agent backends, Configure backend & model, Add a hook, Use & publish a library, Save artifacts, Write & run tests, Serve workflows as MCP tools, Serve workflows over HTTP, Export traces to an OTLP collector, Deploy the runtime image standalone. Reference: CLI, Configuration, Grammar, Language, Environment variables. Explanation: Why Jaiph, Architecture, Sandboxing, Inbox & Dispatch, Async Handles. Contributor: Contributing, Agent Skill.


Open Source · Powerful · Friendly

CI npm

What is Jaiph?

Jaiph is a composable scripting language and runtime for defining and orchestrating AI agent workflows. You write .jh files that combine prompts, rules, scripts, and workflows into executable pipelines. The CLI parses source into an AST, validates references at compile time, and the Node workflow runtime interprets the AST directly.

Warning

Jaiph is still in an early stage. Expect breaking changes.

Features

  • Workflows — Compose prompt, run, ensure, channel sends, conditionals, run async with implicit join, catch, and repair-and-retry recover.
  • Rules and scripts — Rules stay structured (no raw shell lines); script steps run bash or polyglot code as subprocesses.
  • Agents — Backends include Cursor, Claude, Codex (HTTP), or a custom agent.command.
  • Testing*.test.jh files run in-process (jaiph test) with mocks and expect_* assertions (Write & run tests).
  • Safety and inspectability — Docker-backed sandbox for jaiph run (env-controlled; see Sandboxing and Run in a Docker sandbox); live __JAIPH_EVENT__ on stderr and durable .jaiph/runs/ artifacts (Architecture).
  • Toolingjaiph compile, jaiph format, jaiph install / .jaiph/libs/ (Use & publish a library), and optional hooks.json (CLI, Add a hook).
  • MCP serverjaiph mcp ./tools.jh serves a file's workflows as MCP tools over stdio, so any MCP client (Claude Code, Cursor) can call tested Jaiph workflows as tools (Serve workflows as MCP tools).
  • HTTP APIjaiph serve ./tools.jh serves the same workflows over HTTP with a generated OpenAPI 3.1 document and a browser Swagger UI at /docs, so any HTTP client (CI, Kubernetes, another service) can invoke them and inspect runs. Production auth is either a static single-operator bearer token or OIDC/JWT with per-user identity and invoke / inspect / cancel scope authorization, and every run is audit-attributed to its principal and correlation id (Serve workflows over HTTP).
  • OpenTelemetry — set the standard OTEL_EXPORTER_OTLP_ENDPOINT and each run exports one span tree (workflow → steps → prompts) to any OTLP collector — Grafana Tempo, Honeycomb, Datadog. Host-side, end-of-run, credential-redacted, zero new dependencies, never load-bearing (Export traces to an OTLP collector).
  • Sentry error reporting — set the standard SENTRY_DSN and every failed run (nonzero exit or a signal) is pushed to Sentry as one error event — workflow, failing step, a redacted output excerpt, and a run-dir pointer — so operators get alerting and grouping without scraping run dirs. Host-side, redacted, zero new dependencies, never load-bearing; successful runs send nothing (Report failed runs to Sentry).
  • Standalone deployment — the published ghcr.io/jaiphlang/jaiph-runtime image bakes JAIPH_UNSAFE=true, so docker run … jaiph run flow.jh (or a Kubernetes pod) runs workflows directly — put credentials plus .jh files and go, no host jaiph process and no Docker daemon inside the container. Here the container/pod boundary is the sandbox — there is no jaiph-managed isolation (Deploy the runtime image standalone).

Core components

  • CLI (src/cli) — jaiph run / test / compile / format / init / install / use / mcp / serve; prepares scripts, spawns the workflow runner (or in-process test runner), parses __JAIPH_EVENT__ on stderr, runs hooks on jaiph run only.
  • Parser (src/parser.ts, src/parse/*) — .jh / .test.jh → AST.
  • Validator (src/transpile/validate.ts) — imports and symbol references at compile time.
  • Transpiler (src/transpile/*) — emits atomic script files under scripts/ only (no workflow-level shell).
  • Node workflow runtime (src/runtime/kernel/node-workflow-runtime.ts, graph.ts) — interprets the AST; buildRuntimeGraph(graph) consumes the ModuleGraph produced by loadModuleGraph (no filesystem reads).
  • Node test runner (src/runtime/kernel/node-test-runner.ts) — *.test.jh blocks with mocks.
  • JS kernel (src/runtime/kernel/) — prompts, managed scripts, __JAIPH_EVENT__, inbox, mocks. Diagrams, runtime contracts, on-disk artifact layout, and distribution: Architecture. Test layers and E2E policy: Contributing.

Quick try

Run a sample workflow without installing anything first:

curl -fsSL https://jaiph.org/run | bash -s '
workflow default() {
  const response = prompt "Say: Hello I'\''m [model name]!"
  log response
}'

Requires node and curl. The script installs Jaiph automatically if needed.

Install

curl -fsSL https://jaiph.org/install | bash

On Windows, install with PowerShell instead (installs jaiph-windows-x64.exe to %LOCALAPPDATA%\jaiph\bin):

irm https://jaiph.org/install.ps1 | iex

Or install from npm:

npm install -g jaiph

In GitHub Actions, install a pinned CLI with the setup-jaiph composite action (same release binaries, no Node required on the runner):

- uses: jaiphlang/jaiph/actions/setup-jaiph@v0.12.0
  with:
    version: 0.12.0        # semver, a release tag, or 'nightly'
- run: jaiph --version     # jaiph is now on PATH for later steps

Verify: jaiph --version. Switch versions: jaiph use nightly or jaiph use 0.12.0.

Releases ship a SHA256SUMS file plus a detached minisign signature (SHA256SUMS.minisig); the installer verifies the checksum and, when minisign and the project public key are available, the signature — see Verify the release signature.

Initialize a project (optional): jaiph init writes .jaiph/ with bootstrap workflow, gitignore entries for runs/tmp, and SKILL.md. The CLI resolves the skill body in this order — JAIPH_SKILL_PATH, install-relative jaiph-skill.md, docs/jaiph-skill.md under cwd, then an embedded copy baked into the binary as the final fallback — so jaiph init always writes SKILL.md (see Install & switch versions). Canonical skill text for agents: https://raw.githubusercontent.com/jaiphlang/jaiph/refs/heads/main/docs/jaiph-skill.md.

Usage

  • Run the default workflow: jaiph run path/to/main.jh [args...] or ./main.jh [args...] with a #!/usr/bin/env jaiph shebang.
  • Run tests: jaiph test (workspace), jaiph test ./dir, or jaiph test path.test.jh.
  • Validate without executing: jaiph compile … (runs the same compile-time validation as jaiph run, but collects every error at once instead of stopping at the first; no scripts/ emission — see Architecture).
  • Format sources: jaiph format … / jaiph format --check ….

Full flags and environment variables: CLI, Environment variables. New here? Start with Your first workflow.

Example

#!/usr/bin/env jaiph

script check_deps = `test -f "package.json"`

rule deps_exist() {
  run check_deps() catch (err) {
    fail "Missing package.json"
  }
}

workflow default(task) {
  ensure deps_exist()
  const ts = run `date +%s`()
  prompt "Build the application: ${task}"
}
./main.jh "add user authentication"

For the full language reference, see Grammar and Language. For install, libraries, sandboxing, hooks, testing, and artifacts, see the How-to quadrant: Install & switch versions, Use & publish a library, Run in a Docker sandbox, Add a hook, Write & run tests, Save artifacts. New to Jaiph? Start with the tutorials: Your first workflow and Your first agent + sandboxed run. Or visit jaiph.org.

Start here

  • AI agent who wants to work in a predictable, structured way? Read the Agent Skill — it teaches you how to author Jaiph workflows and makes your behavior verifiable and auditable.
  • Human who manages agents and wants reliable, repeatable automation? See the Samples and Your first workflow.
  • Contributor who wants to improve Jaiph itself? See Contributing.

Contributing

See Contributing for branch strategy, pull requests, the test layers, and code style. Use GitHub Issues for bugs and feature discussion.

License

Apache License 2.0.

About

A composable scripting language and runtime for defining and orchestrating AI agent workflows.

Resources

Contributing

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages