with Visual Workflow GUI
This README is provided in English and 中文 (Chinese).
语言切换:下方包含 English 和 中文,内容一致。
License: See LICENSE at the repository root.
lyenv is a directory‑based isolated environment manager with a strong focus on:
- Reproducible execution
- Language‑agnostic plugins
- Structured, traceable automation
- Visual workflow authoring via GUI
At its core, lyenv treats a directory as an environment, and a workflow as a plugin.
CLI is the runtime.
GUI is the workflow compiler.
Traditional tools often fall into one of these traps:
- Scripts are easy to write but hard to maintain
- GUI tools are easy to click but hard to automate
- Plugins are either too heavyweight (containers) or too weak (shell snippets)
- Outputs are text logs instead of structured results
lyenv solves this by combining:
✅ Directory‑based environments
✅ Structured plugin execution (stdio JSON)
✅ Deterministic logs and dispatch records
✅ A GUI that generates real CLI plugins, not a toy runtime
An environment is simply a directory created by lyenv:
my-env/
├─ bin/
├─ plugins/
├─ workspace/
├─ cache/
├─ .lyenv/
│ ├─ logs/
│ ├─ registry/
│ └─ dispatch.log
└─ lyenv.yaml
This makes environments:
- Portable
- Inspectable
- Easy to back up or version‑control
A plugin is a directory with a manifest.yaml|json describing:
- Commands
- Executors (shell or stdio)
- Multi‑step execution
- Exposed shims
- Config files
Plugins can be written in any language.
In stdio mode, plugins communicate with lyenv via JSON:
- Input: JSON via stdin
- Output: JSON via stdout
This enables:
- Structured logs
- Returning final results
- Safe configuration mutations
- Deterministic behavior (no log scraping)
✅ Recommended way to build workflows
The GUI is not a separate runtime.
It is a visual compiler that turns workflows into real lyenv plugins.
In the GUI you can:
- Draw workflows using nodes and edges
- Group nodes into logical workflow groups
- Each group becomes one CLI command
- Export the workflow as a multi‑step stdio plugin
When you click Run in the GUI:
- Choose a workflow group
- GUI exports the workflow into a temporary plugin
- Plugin is installed into the selected lyenv environment
- You enter runtime arguments
- lyenv executes the plugin via stdio
- Logs stream in real‑time via WebSocket
- Plugin is automatically cleaned up
- Logs are persisted under
.lyenv/logs/dispatch/
✅ The same plugin can be run later via CLI if exported explicitly.
make build
make build-guilyenv create ./demo
lyenv init ./demo
cd demo
eval "$(lyenv activate)"
#Windows PowerShell
#lyenv activate | Invoke-Expression
#Windows CMD
#for /f "delims=" %i in ('lyenv activate --shell=cmd') do %i
lyenv gui start --openRegister an environment for GUI usage:
lyenv gui add ./demo --name=demo- Open GUI in browser
- Select an environment
- Draw your workflow
- Group nodes into workflows
- Click Run
- Select workflow group
- Enter arguments
- Watch logs in the built‑in console
Logs are saved even if the temporary plugin is auto‑cleaned.
lyenv create <DIR>
lyenv init <DIR>
lyenv activatelyenv gui add <DIR> [--name=<NAME>]
lyenv gui list
lyenv gui remove <NAME|PATH>
lyenv gui prunelyenv plugin add <PATH>
lyenv plugin install <NAME>
lyenv plugin list
lyenv plugin remove <INSTALL_NAME>lyenv run <PLUGIN> <COMMAND> [--json] [--timeout=SEC]- Per‑run logs:
.lyenv/logs/dispatch/<DISPATCH_ID>.log - Global dispatch log:
.lyenv/logs/dispatch.log
Logs are JSON Lines, suitable for tooling and automation.
- Developers building repeatable automation
- Teams needing auditable local workflows
- Tool authors who want GUI + CLI consistency
- Anyone tired of fragile shell pipelines
- Directories over databases
- JSON over text
- Workflows as code
- GUI as compiler, CLI as runtime
See LICENSE.