Skip to main content

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 run with 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

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)

Source distribution for lazyops-cli 1.1.2
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)

Table of built distributions (wheels) for lazyops-cli 1.1.2
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page