In the docs Get started
Violin / Documentation
Get started
Install Violin, approve a scope, and work through your first supervised engagement.
Install the profile
You need Hermes Agent 0.18.0+ configured with a model provider. Kali or Parrot supplies the expected security tools.
hermes profile install https://github.com/Strategic-Automation/violin
Then launch the profile:
hermes -p violin
Local development, Docker & release checks
Local development requires Python 3.11 and uv. Docker builds from the repository’s Dockerfile.
hermes profile install https://github.com/Strategic-Automation/violin
Your first engagement
Start with an authorized target. Violin collects scope before any target interaction.
Run an authorized penetration test against example.com.
Open a step for the commands and evidence it needs.
01Scope First
Bootstrap the engagement and approve
scope/scope.yaml. Nothing touches a target before
this exists, and the coverage matrix is generated from its
obligations.
02Activate Exactly One Task
Create and start a PTT task under the current phase, naming the routed specialist skill and concrete technique. Work cannot jump ahead without a registered task.
03Run Guarded Commands
Recon through the exact same boundary as exploitation. A typical command invocation through the registered tool:
// Single guarded command invocation, AST-resolved against scope violin_exec( eng_dir = "engagements/acme-web", phase = "RECON", target = "app.example.com", command = "nmap -sV -sC -T4 app.example.com -oA quick_app", label = "service-discovery" ) // Gates validated → status: ok, signed execution receipt written to disk
04Keep Hypotheses Honest
Hypotheses carry status, confidence, a cheapest test, and kill criteria. Evidence updates status; a hypothesis that survives without proof never becomes a finding.
05Review the Batch
Bounded command bursts are reviewed and settled so engagement state reflects what actually ran, including partial stdout and failures.
06Submit Findings that Cite Receipts
Severity, summary, and decisive evidence.
violin_submit_finding enforces that every
vulnerability is bound to the signed receipts authenticating
the request and response.
07Close Out Coverage, then Report
In-scope routes and required testing categories receive an explicit disposition: tested, negative evidence, or justified exclusion. Then the closeout report.
Common questions
Does this replace Burp, nmap, or nuclei?
No. It gates and drives the non-interactive tooling already installed in your Kali/Parrot environment, while maintaining the evidence trail and coverage matrix. Interactive proxies and your own manual verification remain essential.
Can it wander out of scope?
The guard denies commands whose resolved target is not in the approved scope. AST parsing handles compound commands, pipelines, and subshells, and path-scoped URL exclusions are strictly honored. The raw-terminal hook is a safety net; run in an isolated lab environment.
Which model should I use?
Whatever your Hermes Agent configuration provides. Violin selects no provider and ships no hardcoded API keys. A capable frontier model is recommended for complex hypothesis formulation.
Can I run it on a live client engagement?
Only with explicit written authorization and an approved scope file. You remain solely responsible for target authorization, legal compliance, and operational safety. Violin is for authorized assessment only.
How does a finding get accepted?
violin_submit_finding validates that the finding is
bound to signed execution receipts authenticating the decisive
request and response bytes. A claim without receipts is a
hypothesis, not a finding.
Where are the benchmark numbers?
In the methodology documentation (docs/BENCHMARKS.md), not in marketing headlines. The project explicitly rejects single-run score claims.