Welcome to the Workflow CLI - a terminal-native alternative to Warp's Workflows that takes the simple concept of "parameterized commands from YAML files" and turns it into a distributed, actor-based, event-sourced, internationalized, fault-tolerant masterpiece of unnecessary complexity! 🚀
At its core, this application does something absolutely revolutionary: it reads YAML workflow files (dynamicallyresolvescommandargumentsthroughinteractivepromptsbutwhocares) and... copies the final command to your clipboard. That's it. No execution. No running. Just good old-fashioned parameterized Ctrl+V material. Think of it as Warp Workflows for people who refuse to leave their beloved terminal.
- 🎪 Interactive Workflow Selection: Choose your YAML workflow through a beautiful CLI menu (because
ls *.yamlis for peasants) - 🔧 Dynamic Argument Resolution: Interactive prompts for command parameters (just like Warp, but with 10x more code)
- 🎭 Actor Supervision Trees: Guardian actors watching WorkflowManager actors watching CommandProcessor actors (it's turtles all the way down)
- 📚 Event Journaling: Every parameter substitution is persisted as an event (because what if you need to replay that
kubectl get pods -n {{namespace}}resolution?) - 🌍 Multi-language Support: Parameter prompt errors in English AND Spanish (porque los errores de parámetros son internacionales)
- 🔄 Command Chaining: Workflows can trigger other workflows (because parameterized recursion is fun)
- 📦 Pluggable Storage: Swap between in-memory and RocksDB for persistent event sourcing (because your workflow selections are too important to lose)
# The Warp way (modern but requires Warp)
# Use Warp's built-in workflow system with nice UI
# The simple way (boring)
# Manually edit your YAML files and copy-paste commands
# The ENTERPRISE way (exciting!)
workflow
# Interactive workflow selection → parameter prompts → clipboard magic!
# Now paste with Cmd+V like a true enterprise developer!Guardian Actor
├── WorkflowManager Actor
│ ├── CommandProcessor Actor (Session 1)
│ │ ├── Engine (Pure Business Logic™)
│ │ ├── Journal (Pluggable Persistence™)
│ │ └── EventStore (Because Events Are Life™)
│ └── CommandProcessor Actor (Session N)
└── Supervision Strategy (Because Actors Need Babysitting™)
Each YAML workflow selection spawns its own CommandProcessor actor with its own Engine instance and Journal for maximum isolation. Because you never know when resolving kubectl get pods -n {{namespace}} parameters might crash the entire system.
Don't worry! There are still plenty of opportunities to add more unnecessary complexity:
- Distributed Mode: Why run on one machine when you can have a cluster?
- Blockchain Integration: Probably?
- Machine Learning: AI-powered YAML file recommendations, because the hype train might end soon
- Event Streaming: Kafka for commands/events (obviously)
Before you can compile this masterpiece of overengineering, you'll need:
- Rust (obviously) - Install from rustup.rs
- LLVM/Clang - Required for RocksDB native bindings
# Install LLVM via Homebrew
brew install llvm
# Set environment variables for the current shell
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
# Add these to your shell profile (~/.zshrc or ~/.bash_profile) for persistence# Install clang and LLVM
sudo apt-get update
sudo apt-get install clang llvm-dev libclang-dev# Install clang and LLVM
sudo dnf install clang llvm-devel clang-devel# Clone the repository
git clone <repository-url>
cd workflow
# Build and install
cargo install --path .
# Or just build
cargo build --releaseIf you still don't know how to install a Rust program after reading this, you should probably go check yourself.
Code is.. self explanatory?
Never heard of her
This project is licensed under the "Why Did I Do This To Myself" license.
"The best code is the code that makes you question your life choices" - Anonymous Software Architect
Disclaimer: No bash scripts were harmed in the making of this application. All complexity was added voluntarily and with full knowledge of the consequences.
Note: I'm so hard-headed that I debated for three days whether to use AI to help write the README. In the end, I gave in and decided to let the AI write the entire thing (like the whole CLI). All hail vibe coding.
Even more notes just because I like this note at the bottom thingy: I'll probably add gifs (and emojis) on how to use it later.
On a more serious note: I do use this on a daily basis LOL. Just because my memory fails me and is convenient.
Companion project: https://github.com/sagoez/workflow-vault