The Internet-Draft

VIRP is specified as draft-howard-virp-06, an individual Internet-Draft at the IETF. Six revisions (drafts -01 through -06) have been submitted. It is an individual submission, not a working-group document, and carries no IETF endorsement. The -06 revision, submitted August 2026, narrows the specification's claims to match the implementation and the language used across this site; the I-D has its own revision process and is not edited here.

Normative and companion documents

The authoritative documents live in the open repository:

Separate observation and intent authority

The requesting system never holds observation, chain, or approval keys. A protocol R-Node may hold an R-Key that authenticates intent requests, but that key cannot authenticate observations and does not authorize execution.

The authentication authority is the O-Node: a separate, hardened C daemon that talks to your devices over SSH, authenticates raw output with HMAC-SHA256 at the point of collection, and serves pre-authenticated data. If the O-Node can't reach a device, you get a verified “connection failed”, never a guess. No data means no assertion.

One precision for the careful reader: observations and approvals are protected differently. Observations carry HMAC-SHA256 authentication tags, a symmetric check verified by the O-Node that holds the key, which is why this site says “authenticated” rather than “signed” for them. Approvals are Ed25519 digital signatures; anyone holding the public key can verify one, no secret required. Both bind the record; only the approval side carries public-key non-repudiation.

The seven trust primitives, with honest status

PrimitiveStatusWhat it provides
Verified Observationdemonstrated liveAuthenticated at collection; fabricated output carries no valid authentication tag. Independently validated 9/9 on production Cisco hardware.
Tiered Authorizationdemonstrated liveGREEN / YELLOW / RED / BLACK, classified by the O-Node, never the AI. Approval flow demonstrated on a live switch.
Verified Intentdemonstrated liveProposals are chained records referencing authenticated evidence; propose → approve → apply with TTL and single-use approvals.
Verified Outcomedemonstrated liveAuthenticated before/after outcome records, chained to the proposal and approval that caused them.
Trust ChaintestedKeyed, hash-linked, tamper-evident chain. Internal modification of presented records is detectable. Truncation and key-holder rewriting require trusted checkpoints or external anchoring to detect. Genesis, linking, tamper detection, and crash recovery are covered by tests.
Baseline MemoryimplementedDeviation detection from authenticated baselines. Not yet validated end-to-end.
Trust FederationimplementedPer-node Ed25519 keys for multi-tenant isolation. Crypto is tested; no multi-tenant deployment exists yet.

What an approval actually is

When a RED command is blocked, the gate files a proposal record on the chain and returns its ID. A human approver signs that specific proposal with a dedicated Ed25519 key, binding the exact command hash, the exact device, and a 300-second window. The approval works once. Reuse is refused with a typed error. Expiry is refused. Approval of a different command doesn't transfer. All of it lands on the chain.

Target compatibility

Precise per-target status, in place of “supports X” language. Demonstrated means shown working against real equipment with evidence; implemented means the driver exists with unit tests but no live demonstration. Exact tested target versions beyond those listed are not yet published; that gap is deliberate rather than papered over.

TargetTransportRead evidenceTiered writesStatus
Cisco IOSSSHYesYes, with signed approvalDemonstrated live (July 23 transcript; driver, gate tests)
FortiGate (FortiOS)SSHYesNot demonstratedLab-demonstrated reads (driver, tests)
Linux hostsSSHYesNot demonstratedLab-demonstrated reads (driver)
Proxmox Backup ServerAPI (typed operations)Yes (v3.4)No; closed read-only operation tableDemonstrated read path (walkthrough session)
WazuhAPIYesNoMonitored, read-only mode (driver, tests)
Cisco ASASSHDriver implementedNot demonstratedImplemented, unit-tested (tests); no live demonstration
Juniper JunosSSHDriver implementedNot demonstratedImplemented, unit-tested (tests); no live demonstration
Palo Alto PAN-OSSSHDriver implementedNot demonstratedImplemented, unit-tested (tests); no live demonstration

Tests and formal work

  • Test suites: core and per-driver adversarial assertions that pin protocol behavior, including the typed-error paths (replay, expiry, reuse).
  • Formal verification artifacts: a ProVerif model of the v2 observation path with checked-in output. Scope and restrictions are stated on the security page.

Reference implementation

The reference O-Node and validator are C implementations under Apache 2.0 in the repository. The implementation demonstrates the specification; where the two disagree, that is a bug in one of them, and reconciling them is part of the draft-06 work.