Cross-platform diagnostics for engineers — one toolkit, every OS.
Project description
opskit
Cross-platform diagnostics for engineers — one toolkit, every OS.
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
nslookupuses versusdigversusResolve-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
--jsonenvelope, 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_COLORand--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 forjq/ streaming.- Exit codes are documented and scriptable (
0success,2usage error,7partial, 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0a32a4adb970f772a7a3ca4282592b5bb6cc01ee6e4e03a08bcfe7f9bf7ac3f
|
|
| MD5 |
262e22f5def30a869611bdc01fcc6711
|
|
| BLAKE2b-256 |
e81d6c981b73604b3f0d05092d6cb04136b173d0ec6be0609490889e1f690634
|
Provenance
The following attestation bundles were made for opskit-0.1.4.tar.gz:
Publisher:
release.yml on Prabhakar-cg/opskit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opskit-0.1.4.tar.gz -
Subject digest:
c0a32a4adb970f772a7a3ca4282592b5bb6cc01ee6e4e03a08bcfe7f9bf7ac3f - Sigstore transparency entry: 2145943971
- Sigstore integration time:
-
Permalink:
Prabhakar-cg/opskit@21b5f3ef861f6b37dc1f825a28794a5707018e12 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Prabhakar-cg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@21b5f3ef861f6b37dc1f825a28794a5707018e12 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09893443d11addbf1b35e4751304871aa59ddedce38f57adc0e8ba9b721341af
|
|
| MD5 |
ed9d9965334eef7d748d246708b29771
|
|
| BLAKE2b-256 |
3c5bf99267d1f7cc4ccf24c6cfb7800e2e2d258471c645d3b398e49491be3e36
|
Provenance
The following attestation bundles were made for opskit-0.1.4-py3-none-any.whl:
Publisher:
release.yml on Prabhakar-cg/opskit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opskit-0.1.4-py3-none-any.whl -
Subject digest:
09893443d11addbf1b35e4751304871aa59ddedce38f57adc0e8ba9b721341af - Sigstore transparency entry: 2145943975
- Sigstore integration time:
-
Permalink:
Prabhakar-cg/opskit@21b5f3ef861f6b37dc1f825a28794a5707018e12 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Prabhakar-cg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@21b5f3ef861f6b37dc1f825a28794a5707018e12 -
Trigger Event:
push
-
Statement type: