| Product overview | |
|---|---|
| 📅 Target date | v2.0 (Q2 2026) — open; v1.4.x bugfix train ongoing |
| 🟡 Document status | DRAFT |
| 👟 Team members | @712020:58799a58-ec6f-4bd7-913b-1a50e01fd99f |
| Quick links | |
|---|---|
| 🗂 Work tracker | Jira NATS project, GitHub issues, Roadmap |
| 📦 Repo | https://github.com/EvilBit-Labs/opnDossier |
| 📝 Source specs | project_spec/requirements.md, project_spec/user_stories.md, project_spec/tasks.md, docs/plans/ |
| 🎨 Designs | N/A (CLI product) |
| 🎥 Loom demo | TBD |
🎯 Objective#
opnDossier is a CLI tool that turns OPNsense and pfSense firewall configurations into readable documentation and security findings, fully offline. It is the flagship product of EvilBit Labs' Network Analysis suite and the near-term revenue focus of the company. The commercial positioning is "affordable RedSeal for operators" — offering RedSeal-class insight without RedSeal-class cost or deployment complexity.
Strategically the product ships as an open core: the community edition stays free and universal (multi-platform parsing, documentation conversion, baseline security analysis), while STIG/SANS/NIST compliance plugins, PDF reports, SIEM integration, and a desktop app move to the Professional tier. The OSS edition is what builds operator trust and developer credibility; the Pro tier is what funds the company.
📊 Success metrics#
| Goal | Metric |
|---|---|
| Become the default tool operators reach for on OPNsense/pfSense configs | GitHub stars > 500; weekly binary downloads > 200; 5+ blog/conference mentions by end of 2026 |
| Ship v2.0 with programmatic report generation | 30–50% faster report generation vs v1.x templates; binary size reduced by ≥10%; zero template execution paths remaining |
| Expand beyond OPNsense | pfSense parser shipped in v1.5; 2+ additional platforms in public beta by end of 2026 |
| Reach Pro-tier MVP | Licensed feature separation landed; STIG plugin migrated to Pro; first paying customer in H2 2026 |
| Maintain quality bar | Test coverage ≥ 85% in v2.0; zero dangerouslySkip or --no-verify paths; just ci-check green on every merge |
| Earn operator trust | Zero network calls verified in CI; reproducible builds with SBOM + signed binaries; ≥3 security-audit-friendly changelog entries per release |
🤔 Assumptions#
- Operators will accept a CLI as the primary interface. A GUI is deferred to the Professional tier and not required for adoption.
- Offline / airgap operation is a hard requirement, not a preference. The tool cannot phone home, emit telemetry, or depend on cloud services at runtime or build time.
- Users trust a tool they can audit. Every binary ships with an SBOM, all dependencies are pinned, and the codebase favors explicit Go over reflection or codegen.
- The market gap is real. RedSeal serves enterprise budgets;
pfFocusand similar OSS tools are unmaintained or Python-heavy. A modern Go tool with commercial polish wins operators who need something in between. - Go 1.21+ is available everywhere we deploy. No CGO, no dynamic linking — we ship a single static binary per platform.
- Compliance plugin architecture can support future standards (PCI-DSS, NIST 800-53, CIS) without breaking existing consumers. The plugin interface is stable as of v1.2.
🌟 Milestones#
Aligned with docs/roadmap.md and docs/plans/backlog-order-of-operations.md:
| Release | Theme | Target | Key deliverables |
|---|---|---|---|
| v1.4.x | Performance + cleanup | Shipped 2026-04-03 | Hash-based dedup (NATS-7); template migration residuals (NATS-6) |
| v1.5 | pfSense parser + shared model module | Q2 2026 | pfSense schema complete; NATS-3 ships evilbitlabs-network-model Go module; multi-vendor parser registry solidified |
| v2.0 | Programmatic generation, plugin hardening | Q3 2026 | No template execution paths (done); audit plugin interface refactors (NATS-134, NATS-135, NATS-136); blue/red mode completion (NATS-32) |
| Pro MVP | Open-core separation + licensing | Q3 2026 | License key signing (NATS-101); STIG migrated to Pro (NATS-82, NATS-90); PDF/SARIF/SIEM outputs (NATS-98); first paying customer |
| Compliance expansion | PCI-DSS, NIST, CIS | Q4 2026 | PCI Req 1 (NATS-4); custom rule engine (NATS-5, NATS-96); structured remediation (NATS-22) |
| Future | Multi-platform, topology, desktop | 2027 | Cisco ASA, Fortinet, Palo Alto parsers; Mermaid/Graphviz topology output; Wails desktop app |
📝 Requirements#
Curated high-level requirements from project_spec/requirements.md (F001–F026) and project_spec/user_stories.md (US-001–US-048). Full requirement IDs remain canonical in the source files.
| Requirement | User Story | Importance | Jira Issue | Notes |
|---|---|---|---|---|
Parse OPNsense and pfSense config.xml with schema validation; emit actionable line/column error messages on malformed input | US-001, US-002: operator parses configs offline; auditor gets actionable errors on bad XML | HIGH | Shipped in v1.0 (OPNsense); pfSense in v1.5 | Implemented via pkg/parser registry. Multi-vendor support via parser.Factory. |
| Convert parsed config to Markdown, JSON, YAML, plain text, or HTML with configuration hierarchy preserved | US-003, US-005: admin produces readable docs; docs team exports to files | HIGH | Shipped in v1.0; programmatic gen in v2.0 | convert command. Programmatic generation via NATS-6 replaces templates for performance/maintainability. |
| Operate completely offline with zero external dependencies, zero telemetry, no network calls at runtime | US-007, US-008, US-025: airgap operators; compliance auditors; sensitive-environment use | HIGH | Shipped + CI-enforced | Verified via CI net-block tests. Hard product tenet. |
| Display configs in terminal with syntax highlighting, light/dark theme detection, graceful fallback for non-color terminals | US-004, US-043, US-044: admins reading configs; operators on varied terminal envs | MEDIUM | Shipped in v1.0 | display command. glamour for Markdown rendering, lipgloss for theming. TERM=dumb fallback. |
| Audit configs in blue-team mode (defensive findings with severity + remediation) and red-team mode (attack-surface enumeration) | US-046, US-047: red-team recon; blue-team defensive audit | HIGH | NATS-32 (blue/red completion), NATS-22 (remediation) | audit command. Blue mode runs compliance plugins. Red mode currently stubbed (per GOTCHAS.md §8.4) pending completion. |
| Plugin-based compliance architecture: standardized interface, dynamic registration, lifecycle management, per-plugin config | F022 derived; no direct US (infrastructure requirement) | HIGH | NATS-134, NATS-135, NATS-136 | Cybersecurity Best Practices + SANS + STIG plugins shipped. Hardening refactors in progress. STIG moving to Pro. |
Configuration precedence: CLI flags > env vars (OPNDOSSIER_*) > YAML config > defaults | US-012, US-013, US-014: team environments; sensitive-option handling; runtime overrides | MEDIUM | Shipped in v1.0 | Viper-backed. Tested across all commands. |
| Data sanitization: redact sensitive values (passwords, API keys, SNMP communities, private keys) for safe sharing | US-026, US-027: auditor must not leak config; compliance teams sharing configs externally | HIGH | Shipped in v1.2 | sanitize command. Covers bcrypt/sha512 hashes, LDAP bind passwords, TLS private keys. Continuously expanded. |
| Configuration diff: compare two configs side-by-side with semantic change detection | Implicit in operator workflows (not in US-*) | MEDIUM | Shipped in v1.2 | diff command. Semantic change categorization. |
| Cross-platform binaries: Linux, macOS, Windows (amd64 + arm64); signed + SBOM-attached | US-028, US-029, US-031, US-032: cross-platform ops; containers; static binaries | HIGH | Shipped + automated via GoReleaser | macOS notarization wired. Scoop Windows manager planned (NATS-79). |
| Pro tier: license-key validation, feature gating, STIG plugin, PDF/SARIF/SIEM outputs, structured remediation | N/A (commercial tier) | HIGH | NATS-101, NATS-82, NATS-90, NATS-98 | Open-core separation. Ed25519-signed licenses. Pro repo separate from OSS. |
Test coverage ≥ 80% community edition (≥ 85% in v2.0); just ci-check green on every merge; race detector clean | US-020, US-021, US-033: developer trust; production reliability; quality enforcement | HIGH | Enforced via CI gates | Per AGENTS.md code quality policy: zero tolerance for tech debt. |
⚠️ Out of Scope#
- Real-time firewall configuration management or live device control. opnDossier reads
config.xmlfiles; it does not push config to devices or integrate with live firewall APIs. - GUI or web interface in the community edition. A native desktop app via Wails is a Professional-tier roadmap item, not a v2.0 commitment.
- Telemetry, analytics, or any form of phone-home. This is a hard product tenet, not a feature toggle.
- Configuration backup/restore or config generation. opnDossier analyzes existing configs; it does not create new ones. The sister project OPNsense-config-faker handles synthetic config generation.
- Custom template engine for report output. Templates were fully removed in NATS-6 for v2.0; extensibility is via Go code (exported
ReportBuilderinterface), not text templates. - Platform coverage beyond the published roadmap. Parsers for Cisco/Fortinet/Palo Alto/Juniper/MikroTik/Ubiquiti are planned but each is a significant engineering lift; they ship when they're ready, not to a date.
- Cloud or SaaS deployment of opnDossier itself. The product is a single static binary. A hypothetical hosted service is not on the roadmap.
🎨 Design#
- System architecture:
docs/development/architecture.md+docs/architecture-diagram.mmd(Mermaid source). - Data flow:
config.xml→pkg/parser(vendor-specific) →pkg/model.CommonDevice(vendor-neutral) →internal/enrichment→internal/converter(output format) → file or stdout. - Compliance pipeline:
CommonDevice→audit.PluginManager→ per-pluginRunChecks()→audit.Report→ mode-specific renderer (blue/red). - Plugin registry: dynamic
.soloading opt-in via--plugin-dir; bundled plugins (Cybersecurity Best Practices, SANS, STIG) registered atinit()time.
❓ Open questions#
| Question | Answer | Date Answered |
|---|---|---|
| What is the committed target date for v2.0? | TBD — gated on programmatic generation parity testing (NATS-18) and plugin interface hardening (NATS-134–NATS-136) | |
| Which compliance framework ships first in the Pro tier: PCI-DSS Req 1 or CIS Benchmark? | PCI-DSS Req 1 (NATS-4) is scoped; CIS is roadmap-only. Prioritization depends on early customer demand. | |
| Does the Pro tier require a separate repo clone, or is it a license-unlocked build from the same codebase? | Current plan: separate opnDossier-pro repo with open repo as a Go module dependency. Revisit if build complexity becomes a distribution blocker. | |
| What is the deprecation policy for the OSS STIG plugin once it moves to Pro? | TBD — options: keep it frozen at the last OSS version; remove entirely; transition window with notice. | |
| How do we validate pfSense coverage parity before committing to "multi-vendor"? | Golden-file testing against real customer configs (anonymized). Need a PRD follow-up on test corpus acquisition. |
🗂 Reference Links#
Source specifications
project_spec/requirements.md— F001-F026 functional requirements + tech stack + architectureproject_spec/user_stories.md— US-001 through US-048 in EARS formatproject_spec/tasks.md— release roadmap v1.0 through v2.0 with task-level statusdocs/plans/backlog-order-of-operations.md— sequenced execution plan with story points and epic assignmentsdocs/plans/*.md— in-flight architectural plans (reportbuilder split, parser registry, DecodeDocument elimination, Kea DHCP model, template removal)AGENTS.md— code quality policy, mandatory practices, code review checklistGOTCHAS.md— non-obvious behaviors and hard-won lessons (plugin architecture, CLI flag wiring, sanitizer ordering, etc.)
Public documentation- README — product overview, installation, quick start
- docs/roadmap.md — public roadmap
- docs/compliance-standards.md — compliance framework coverage
- docs/development/architecture.md — architecture reference
Related - pfFocus — the Python-based config.xml parser that inspired this project
- OPNsense-config-faker — Rust-based config generator (sister project for test fixtures)
- EvilBit Threat Manager — sibling product in the Network Analysis suite