Skip to main content

CLI to discover, fetch, and run reusable automation workflows from remote plugin packs.

Project description

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazyops_cli-1.1.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazyops_cli-1.1.1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file lazyops_cli-1.1.1.tar.gz.

File metadata

  • Download URL: lazyops_cli-1.1.1.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lazyops_cli-1.1.1.tar.gz
Algorithm Hash digest
SHA256 40772d77f4dcd50202594d20cf4667fd8d77053fc02ef605d5259c10ff723062
MD5 a1068d3f316ced2950378c31c23876c9
BLAKE2b-256 3367765322d3736f034026e55f4b9c79f5e78d6c8e5978ced173e5319521fc33

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyops_cli-1.1.1.tar.gz:

Publisher: publish.yml on MridulTi/LazyOps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lazyops_cli-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: lazyops_cli-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lazyops_cli-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6c13f2868f8f836292e6c27926e8b3bdfb1438918c51de851e1857b2f951f098
MD5 202ed021c590ebb849a1c6b344a44982
BLAKE2b-256 10e3d0ab0d35f2955a0b3c3040ee75b72890471c619d7d25bc2f3e4d9f9429fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyops_cli-1.1.1-py3-none-any.whl:

Publisher: publish.yml on MridulTi/LazyOps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page