LazyOps
Turn your scattered scripts into reusable, searchable, and shareable workflows.
Why LazyOps?
Every engineer has a folder full of scripts:
cleanup.sh
restart-pods.py
rotate_logs.sh
debug-nginx.sh
fix-permissions.sh
After a few months:
- You forget they exist.
- You can't remember their arguments.
- They're undocumented.
- They only work on your machine.
- Your teammates rewrite the same automation.
LazyOps solves this by adding a lightweight workflow layer on top of existing scripts.
No rewrites. No proprietary language. Just structure.
Features
- 🚀 Run scripts as named workflows (
lazyops run pack/plugin) - 📦 Install workflow packs (aws, kubernetes, security, …) from a remote catalog
- 🔍 Search and list workflows across installed packs
- 🐍 Support multiple runtimes (Bash, Python, Node.js, executables)
- 📝 Interactive picker when you run
lazyops runwith no arguments - ✅ Manifest validation before execution
- 🔖 Pin catalog version by git branch or tag (
source.ref) - 🤝 Workflows live in a separate repo — share and version them independently
Architecture
LazyOps is a CLI-only installer. Workflows are fetched at runtime from a separate plugins repo:
| Repo | Role |
|---|---|
| LazyOps | CLI, config, fetch & run |
| lazyops-plugins | Workflow catalog (packs + plugins) |
Each pack is a bundle (e.g. aws, kubernetes). Each plugin is one workflow folder under that pack. The git branch or tag on the plugins repo is the catalog version.
lazyops-plugins/
└── plugins/
└── aws/
├── pack.yaml
└── addpatchclasstag/
├── workflow.yaml
├── script.sh
└── README.md
Run a workflow:
lazyops run aws/addpatchclasstag
LazyOps fetches the plugin at your configured source.ref, validates the manifest, and executes the script.
Installation
From PyPI (recommended)
The PyPI package is lazyops-cli (the name lazyops is taken by another project). The command is still lazyops:
pipx install lazyops-cli
lazyops --help
Requires Python 3.10+ and git (used to fetch workflows at runtime).
From source (development)
LazyOps runs from a project-local virtual environment (.venv). Do not install with system pip.
git clone https://github.com/MridulTi/LazyOps.git
cd LazyOps
bash setup.sh
source ~/.zshrc # or ~/.bashrc — loads the lazyops alias
lazyops --help # works from any directory
setup.sh adds a global shell alias pointing at the repo wrapper (which always uses .venv):
alias lazyops='/path/to/LazyOps/lazyops'
export LAZYOPS_ROOT='/path/to/LazyOps'
You can also run from the repo without the alias:
./lazyops --help
source .venv/bin/activate
Quick start
Point LazyOps at the plugins catalog, enable packs, and run workflows:
# 1. Configure the plugins source (branch = version)
lazyops source init https://github.com/MridulTi/lazyops-plugins.git --ref v1.0.0
# 2. Enable packs you need
lazyops pack add aws
lazyops pack add kubernetes
# 3. Discover and run
lazyops list
lazyops search patch
lazyops run aws/addpatchclasstag
lazyops run # interactive: pick pack → pick plugin → confirm
# 4. Upgrade catalog version
lazyops source update --ref v1.2.0
For local development against a checkout of lazyops-plugins:
lazyops source init file:///path/to/lazyops-plugins --ref main
Config is stored at ~/.lazyops/config.yaml:
source:
url: https://github.com/MridulTi/lazyops-plugins.git
ref: v1.0.0
path_prefix: plugins
packs:
- aws
- kubernetes
cmdb:
url: https://cmdb.paytmpayments.com
Commands
| Command | Purpose |
|---|---|
lazyops source init <url> [--ref] |
Set plugins repo URL and version |
lazyops source show |
Show current source config |
lazyops source update --ref <ref> |
Bump catalog version |
lazyops pack add <pack> |
Enable a pack |
lazyops pack list |
List installed packs |
lazyops pack list <pack> |
List plugins in a pack |
lazyops pack remove <pack> |
Disable a pack |
lazyops run <pack>/<plugin> [args...] |
Fetch and run a workflow |
lazyops run |
Interactive workflow picker |
lazyops list |
List workflows in installed packs |
lazyops search <query> |
Search by name, id, or description |
lazyops aws trace <domain> |
Trace domain → ALB → backend EC2 IPs (CMDB + AWS) |
AWS trace
Requires the aws pack (lazyops pack add aws). On VPN, CMDB defaults to https://cmdb.paytmpayments.com (override with --cmdb-url or cmdb.url in ~/.lazyops/config.yaml).
lazyops aws trace seller.example.com
lazyops aws trace seller.example.com --cmdb-url https://cmdb.paytmpayments.com
lazyops aws trace seller.example.com --source aws --region ap-south-1
Bundled plugin for local dev: plugins/aws/trace/. Copy to lazyops-plugins at plugins/aws/trace/ for remote catalog releases.
Example manifest
id: addpatchclasstag
name: "Add Patch Class Tag"
description: "Add patch class tags to instances. Required env: AWS_REGION or REGION."
runtime: bash
entrypoint: script.sh
pack: aws
version: 1.0.0
inputs:
- name: instance_id
required: true
Philosophy
Scripts should remain scripts.
LazyOps does not replace your automation. It makes it easier to organize, discover, document, and reuse — with a shared catalog your whole team can install and pin to a version.
Roadmap
- Workflow specification
- Remote plugin catalog (source + packs)
- Fetch and run workflows from git
- Interactive CLI
- Search and list
- Input validation
- Plugin runtimes
- Optional web dashboard
Contributing
Contributions are welcome.
You can help by:
- Adding workflows to lazyops-plugins
- Improving CLI documentation
- Supporting additional runtimes
- Reporting bugs
- Suggesting new features
License
MIT License
Metadata
Release files for lazyops-cli 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lazyops_cli-1.1.2.tar.gz | 16.4 kB | With provenance | Details for lazyops_cli-1.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lazyops_cli-1.1.2-py3-none-any.whl | Python 3 | none | any | Details for lazyops_cli-1.1.2-py3-none-any.whl |
Total release size: 35.0 kB
Release files / lazyops_cli-1.1.2.tar.gz
| Download URL | lazyops_cli-1.1.2.tar.gz |
|---|---|
| Size | 16.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc4f0502a14c0f897b964b58b327d859f0230cb316a7cad166a3937afa9270a4
|
|
BLAKE2b-256 checksum How to use checksums |
829f543f00572c13e0bc39fe40477707b5e6c419cc1b5aca2bbf32997fa51780
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.
Transparency logRelease files / lazyops_cli-1.1.2-py3-none-any.whl
| Download URL | lazyops_cli-1.1.2-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8dbe5784e318736a87ff506ccba14a71cb6fbc0f1a353e941aa808e1e8be9371
|
|
BLAKE2b-256 checksum How to use checksums |
0d00a374d2d47794636d3e48fcf830b535ffcacbc2a9b3b17beaeeeeb3ce404a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.
Transparency logSecurity for lazyops-cli 1.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for lazyops_cli-1.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.