PIEN — Proba. Inspice. Examina. Nuntia.
Test. Inspect. Examine. Report.
Long before software systems existed, Roman engineers understood that critical infrastructure could not rely on hope alone. Aqueducts were surveyed, inspected, maintained, and built with durability in mind. Parts of those systems still stand today because reliability was treated as an engineering discipline rather than an assumption.
Pien applies the same principle to modern websites and APIs: test what can fail, inspect what was returned, examine the evidence, and report what requires attention.
This is an engineering metaphor. It does not claim that ancient Rome practiced modern cybersecurity. Surviving Roman structures symbolize inspection, maintenance, durability, and disciplined engineering. The Latin phrase is the source of the PIEN acronym and the conceptual pipeline (Test → Inspect → Examine → Report).
ARTR Pien (pien) is a local-first, deterministic verification CLI for authorized HTTP/HTTPS websites and APIs. It produces actionable findings and multi-format reports without requiring Docker, databases, Redis, or cloud services.
Pien findings are engineering observations for operators who confirmed authorization to probe a target. Reports are not certifications, compliance attestations, penetration-test results, or guarantees of security.
dotnet tool restore
dotnet restore ARTR.Pien.sln --locked-mode
dotnet build ARTR.Pien.sln -c Release --no-restore
dotnet run --project src/ARTR.Pien.Cli -c Release -- versiondotnet run --project src/ARTR.Pien.Cli -c Release -- init --website
dotnet run --project src/ARTR.Pien.Cli -c Release -- validate
dotnet run --project src/ARTR.Pien.Cli -c Release -- scan --quietOr validate a shipped loopback sample (exit 0 without editing placeholders):
dotnet run --project src/ARTR.Pien.Cli -c Release -- validate --config config/examples/loopback-website.jsonPlaceholder examples under config/examples/quick-website.json and complete-website.json keep authorization.confirmed=false on purpose — validate/scan require confirmed=true. See docs/HowToUse.md.
Configuration: pien.json (schema under config/schemas/). State: .pien/.
- Set
authorization.confirmed=trueonly for targets you own/are allowed to probe - Prefer allowlisted hosts; enable
allowPrivateNetworksonly for intentional loopback/lab use - Never put raw secrets in
pien.json— usesecret://env/...orsecret://file/... - Use
--confirm-authorizationwhen overriding with--target
dotnet format ARTR.Pien.sln --verify-no-changes
dotnet test ARTR.Pien.sln -c Release
pwsh -File build/Test.ps1 # Cobertura + ≥90% line/branch gate
pwsh -File build/SmokeTest.ps1
pwsh -File build/PackageSource.ps1 # artifacts/ARTR.Pien-source.zip + sha256 + manifestNo Docker/K8s, no DB/Redis, no browser automation, no exploit/fuzz engine, no hosted control plane, no compliance certification claims.