Eris Client
A C-based CLI that wraps your git workflow in simple commands — guided Conventional Commits, one-shot commit and push, branching, rebasing, and replayable project macros.
Eris is a developer CLI that wraps your git workflow with a structured commit flow, project-local macros, and a Prolog-powered command router that supports chaining and negation.
You run eris instead of raw git for day-to-day work.
What it does
eris init [name] — sets up an .eris/ directory in the current folder, writes the macros file, and adds .eris/ to git's local exclude so it never shows up in your repo.
eris commit / eris copush — interactive commit + push in one shot. Prompts you to pick a conventional commit type (feat, fix, refactor, etc.) from a menu, then asks for a message, formats it as type: message, stages everything, commits, and pushes. Works from anywhere inside the project.
eris ignore <file> — adds a file to .eris/.eris.ignore so it's skipped during copush. Per-project, not global.
eris alias add <name> do <cmd> do <cmd> — saves a named macro (sequence of shell commands) to .eris/.eris.macros.
eris alias run <name> / eris run <name> — runs a saved macro.
eris rebuild — rebuilds the eris binary itself using CMake.
eris root — prints the detected eris project root.
Command chaining
The command router is written in Prolog. It supports &&, ||, and not directly in the argument list:
eris init myapp && eris commit # commit only if init succeeded
eris init || true # ignore failure
eris not init # succeed when init fails
Macros
Macros are stored in .eris/.eris.macros at the project root:
[deploy]
make build
git push origin main
ssh prod "systemctl restart app"
Add with do separator (no quoting needed):
eris alias add deploy do make build do git push origin main
Add with quotes (for commands that contain semicolons or shell syntax):
eris alias add test "npm run lint" "npm test"
Run:
eris run deploy
Install
make install
This builds the binary, copies it to /usr/local/bin/eris, and appends an alias to your .bashrc or .zshrc (detected automatically). Then:
source ~/.zshrc # or ~/.bashrc
Dependencies (cmake, gcc, libcurl, libssl, etc.) are checked and installed automatically during build if missing.
Build from source
make # configure + build (Debug)
make CONFIG=Release
make JOBS=8
Requires: cmake, gcc/g++, libcurl-dev, libssl-dev, pkg-config.
Optional: SWI-Prolog (libswipl-dev) for the Prolog router — falls back to a C router if not present.
