Skip to main content

Cross-platform diagnostics for engineers — one toolkit, every OS.

Project description

opskit

Cross-platform diagnostics for engineers — one toolkit, every OS.

CI CodeQL OpenSSF Scorecard OpenSSF Best Practices Quality Gate Status Known Vulnerabilities Reviewed by CodeRabbit License: MIT Python

opskit gives engineers, developers, and operations teams one consistent set of read-only troubleshooting commands that behave identically on Windows, macOS, and Linux — so you stop juggling nslookup vs dig vs PowerShell cmdlets. It's a CLI and an importable Python library, is pure-Python (nothing to shell out to), and never phones home.

⚠️ Early development. Ships DNS and TLS diagnostics today; network / AD categories follow.


Contents


Install

pip install opskit            # once published
# or, from source:
git clone https://github.com/Prabhakar-cg/opskit && cd opskit
uv sync                       # or: pip install -e .

Everything lives under a single command; each category is a sub-command group:

opskit --help                 # top-level help
opskit dns --help             # the DNS command group
opskit dns lookup --help      # a specific command (grouped options + examples)

Commands

Each command group is self-contained and documented in its own README next to the code:

Command group What it does Docs
opskit dns Read-only DNS diagnostics — forward/reverse lookups, multi-resolver diff, iterative trace, watch dns/README.md
opskit tls TLS verification — layered endpoint checks, certificate/chain inspection, expiry warnings, private-PKI trust tls/README.md
opskit net Network reachability — TCP/UDP port checks, ping-style probes, temporary metadata-only listener net/README.md
opskit ad Active Directory / LDAP diagnostics — account sign-in status, group membership (nested), directory/bind checks, object lookup (pip install "opskit[ad]") ad/README.md

Quick taste of the DNS group:

opskit dns lookup example.com                    # A records, pretty table
opskit dns lookup example.com --all              # every common record type at once
opskit dns reverse 8.8.8.8                       # PTR (IP → hostname)
opskit dns lookup example.com --diff -s 1.1.1.1 -s 8.8.8.8   # compare resolvers

See the DNS command reference for every option, mode, and the importable Python API.

Why opskit

  • One tool, every OS. Identical behavior and output on Windows, macOS, and Linux — no more remembering which flag nslookup uses versus dig versus Resolve-DnsName.
  • CLI and library. Every capability is importable, typed, and API-first; the CLI is a thin client over it. Ships py.typed.
  • Scriptable by design. A stable, versioned --json envelope, NDJSON --jsonl, and structured exit codes make it safe to build automation on.
  • Read-only & private. Only performs the diagnostic you asked for; no telemetry, no phoning home, no offensive/abuse features.

Output & exit codes

Every command shares one output contract:

  • Human (default): colorized tables, auto-plain when piped; honors NO_COLOR and --no-color.
  • --json: a stable, versioned envelope (schema_version, command, query, result, error, elapsed_ms); an array for batches.
  • --jsonl: NDJSON — one envelope per line, ideal for jq / streaming.
  • Exit codes are documented and scriptable (0 success, 2 usage error, 7 partial, plus category-specific codes). See each command's README for the full table.

Development

Built to a high bar: src/ layout, uv, Ruff, mypy --strict + pyright, pytest with ≥90% coverage, and a hardened CI/CD pipeline (see docs/PLAN.md and the project constitution in .specify/memory/constitution.md).

uv sync --extra dev
uv run opskit dns lookup example.com     # run the CLI
uv run ruff format --check . && uv run ruff check .   # format + lint
uv run mypy && uv run pyright                         # types
uv run pytest                            # tests (coverage ≥ 90%)

These are exactly the gates CI runs on every pull request — see .github/workflows/ci.yml.

Contributions go through PRs into a protected main (squash-merge, Conventional Commits).

Security

Report vulnerabilities privately — see SECURITY.md. Every PR is gated by a full scanner suite (pip-audit, Ruff S, CodeQL, secret scanning, dependency review, SonarCloud, Snyk).

License

MIT © prabhakar-cg. Provided as-is, without warranty.

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

opskit-0.1.4.tar.gz (457.6 kB view details)

Uploaded Source

Built Distribution

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

opskit-0.1.4-py3-none-any.whl (116.7 kB view details)

Uploaded Python 3

File details

Details for the file opskit-0.1.4.tar.gz.

File metadata

  • Download URL: opskit-0.1.4.tar.gz
  • Upload date:
  • Size: 457.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for opskit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 c0a32a4adb970f772a7a3ca4282592b5bb6cc01ee6e4e03a08bcfe7f9bf7ac3f
MD5 262e22f5def30a869611bdc01fcc6711
BLAKE2b-256 e81d6c981b73604b3f0d05092d6cb04136b173d0ec6be0609490889e1f690634

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.4.tar.gz:

Publisher: release.yml on Prabhakar-cg/opskit

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

File details

Details for the file opskit-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: opskit-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 116.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for opskit-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 09893443d11addbf1b35e4751304871aa59ddedce38f57adc0e8ba9b721341af
MD5 ed9d9965334eef7d748d246708b29771
BLAKE2b-256 3c5bf99267d1f7cc4ccf24c6cfb7800e2e2d258471c645d3b398e49491be3e36

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.4-py3-none-any.whl:

Publisher: release.yml on Prabhakar-cg/opskit

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