Every project I work on has the same problem. There's always a set of commands I run in the same order every time, setting up dependencies, building, running checks. I got tired of either remembering them or keeping a random notes file.
Makefiles work but feel wrong outside of C projects. npm scripts are JavaScript-only. just is great but it's another syntax to learn on top of everything else.
So I built xeq.
You define named scripts in a xeq.toml file and run them with one command:
[check]
run = [
"cargo fmt --check",
"cargo clippy -- -D warnings",
"cargo test"
]
[build]
run = [
"xeq:check",
"cargo build --release"
]
xeq run build
That's it. No new syntax, just TOML that any project already understands.
It supports variables with fallback values, positional and named arguments, environment variables, nested script calls, parallel execution with thread control, and on_success/on_error event hooks.
The feature I'm most happy with is xeq validate, it catches undefined variables, missing nested scripts, circular dependencies, and parallel conflicts before you run anything.
There are also 30+ init templates so you can get started instantly:
xeq init rust
xeq init docker
xeq init nextjs
It works on Linux, macOS, and Windows.
Still early but functional. Would love feedback❤️
- Repo: https://github.com/opmr0/xeq
- Crates.io: https://crates.io/crates/xeq

Top comments (0)