By enixCode
Skills for working with light-process: DAG workflow engine that orchestrates code in Docker containers via light-run.
Add a node to a light-process workflow. Use when the user wants to create a new container step, define I/O schemas, edit .node.json, or regenerate lp.d.ts helpers.
High-level context for the light-process project. Load when the user works on light-process, mentions DAG workflows, light-run, light-runner, or asks about the architecture, ecosystem, or boundaries between the three sibling repos.
Create a new light-process workflow in folder format. Use when the user wants to scaffold a workflow, start a new DAG, or asks how to lay out workflow.json with nodes and links.
Develop a light-process node inside a VS Code dev container that mirrors its production Docker image, with automatic `.env` loading. Use this skill whenever the user runs or asks about `light node dev`, wants to code a node in the same image used at runtime, generates or refreshes a `.devcontainer/devcontainer.json` from `.node.json`, hits "code command not found" when opening, needs to rebuild the container after changing `setup`, or wants environment variables loaded into the container without copy-pasting. Also trigger when the user mentions devcontainers, container-based development, "iterate on a node", `.env` files, `env-file`, auto-detect env vars, secrets in container, loading environment variables, or `${localEnv:...}` placeholders in this repo, even if they do not name the command explicitly.
Manage remote light-process servers (bind, push, pull, run, delete). Use when the user works with multiple environments, wants to deploy a workflow to a server, sync local folders with a remote, or hits issues with ~/.light/config.json.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Lightweight DAG workflow engine for orchestrating code in Docker containers. Delegates container execution to light-run.
Documentation - Quick Start - Use Cases - npm
Per-tenant report pipelines - SaaS sending a PDF per customer: fetch data (Python) -> transform (R) -> render PDF (Node) -> send email. One POST /run per customer, full Docker isolation per step, no shared state. Temporal is too heavy, n8n has no real container execution.
Security automation chains - Run Trivy, nuclei, nmap in sequence with conditional branching: if a CVE is found, trigger a deeper scan. Each scanner in its own container, self-hosted, HTTP-triggered. No GitHub Actions cloud dependency, no Bash fragility.
Polyglot processing pipelines - Node scraper, Python parser, Go enricher, shell uploader - all chained. No virtualenvs, no global installs, no runtime conflicts. Each step gets only the deps it needs. Mixed runtimes that LangChain and Prefect cannot handle natively.
Run untrusted code - Execute user-submitted scripts in containers isolated upstream by light-run (dropped caps, PID limits, isolated network, optional gVisor). Perfect for coding playgrounds, graders, or plugin systems where you cannot trust the input.
light-process is the DAG orchestrator. Container execution is delegated to a separate service called light-run. Install both:
npm install -g light-process @enixcode/light-run
Requires Node 20+ and Docker running on the same host as light-run.
Prefer a project-local install? Drop the -g and call the CLI through npx (the binaries land in node_modules/.bin, not your PATH, so plain light will not resolve):
npm install light-process @enixcode/light-run
npx light doctor
npm install -g github:enixCode/light-process#alpha
npm install -g github:enixCode/light-run#alpha
The #alpha variant installs the most recent commit on main. It always reflects the latest code, unlike npm packages which only update on tagged releases.
If you use Claude Code, light-process ships a plugin with skills covering the architecture, workflow scaffolding, node creation, remote management, and runner setup. Install via the public marketplace:
/plugin marketplace add enixCode/plugins
/plugin install light-process@enix
The plugin lives in .claude-plugin/plugin.json + skills/ of this repo. Skills load on demand based on what you ask Claude (no overhead until a relevant request).
One command. light serve auto-spawns a local light-run when LIGHT_RUN_URL is unset:
light serve # boots light-run + the orchestrator, streams both logs
Or explicitly, with the runner on a separate host (prod):
# Host 1 - the runner
light-run serve --token $(openssl rand -hex 32) --port 3001
# Host 2 - the orchestrator
export LIGHT_RUN_URL=http://runner-host:3001
export LIGHT_RUN_TOKEN=<same token as above>
light serve
Other useful commands:
light doctor # check Node + light-run connectivity
light init my-project # scaffold a project
cd my-project
light run example # run the example workflow
light serve --install will also npm i -g @enixcode/light-run for you if the binary is missing.
Output:
Running: Example (from folder)
> Hello
[Hello] Input: {}
[ok] Hello 2100ms
-> {"hello":"world","input":{}}
[ok] 2108ms
After light init my-project, you get this:
my-project/
example/
workflow.json # the DAG: which nodes exist, how they link
hello/
.node.json # node config (Docker image, entrypoint, I/O)
index.js # your code
lp.js # helper - provides input and send()
lp.d.ts # auto-generated types for editor autocomplete
A node is just a folder with code that runs in a Docker container. A workflow is a workflow.json that wires nodes together. That's it.
Open example/hello/index.js:
const { input, send } = require('./lp');
console.error('Input:', JSON.stringify(input));
send({ hello: 'world', input });
npx claudepluginhub enixcode/plugins --plugin light-processMasks secret values from Claude Code's view. Real files stay untouched.
Transparent token compression for Claude Code shell calls. Wraps RTK with lazy binary download and adds verticals RTK does not cover (Terraform, etc.).
Persistent file-based planning for AI coding agents. Crash-proof markdown plans (task_plan.md, findings.md, progress.md) that survive context loss and /clear, with an opt-in completion gate and multi-agent shared state. Manus-style. Works with Claude Code, Codex CLI, Cursor, Kiro, OpenCode and 60+ agents via the SKILL.md standard. Includes Arabic, German, Spanish, and Chinese (Simplified and Traditional).
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
Claude harness - A harness for solo developers (Vibecoders) to handle full-cycle contract development.
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.