A lightweight Rust REST service for discovering, caching, and rendering GVM report formats.
The project focuses on:
- Moving report rendering out of the main application into a dedicated HTTP service.
- Rendering reports from structured report data or XML payloads.
- Discovering and caching report formats.
- Producing requested report output through a clean, pluggable rendering architecture.
Early development (bootstrap phase)
Currently implemented:
- Typed configuration (
GVMR_*) - Structured logging (tracing)
- Basic app wiring (Axum)
- Health endpoints:
/health/live/health/ready
- Rust (stable)
- Cargo
- Make
make run-serverWith environment variables:
GVMR_PORT=8084 LOG_LEVEL=debug make run-serverOr using a .env file:
make run-serverBy default, the CLI target shows help:
make run-cliPass CLI arguments with CLI_ARGS:
make run-cli CLI_ARGS="--xml scripts/report.xml --type native --output report.pdf"The Makefile is the main local development entry point.
Install the optional Cargo tools used by the test and coverage targets:
cargo install cargo-nextest --locked
cargo install cargo-llvm-covShow all common commands:
make helpCheck the whole workspace:
make checkCheck individual crates:
make check-core
make check-server
make check-cliRun the server:
make run-serverRun the CLI:
make run-cliRun the standard workspace test suite:
make testRun tests with cargo-nextest:
make nextestGenerate and open HTML coverage:
make coverRun strict Clippy checks:
make clippyFormat the workspace:
make fmtCheck formatting without modifying files:
make fmt-checkBuild the workspace:
make buildBuild release binaries:
make build-releaseClean build artifacts:
make cleanThe preferred workflow is to use the Makefile so local development and CI can share the same commands.
make fmtmake fmt-checkmake clippymake testFor cargo-nextest:
make nextestmake coverA typical pre-commit or pre-push verification sequence is:
make fmt-check
make clippy
make testWhen the service is running, interactive API documentation is available:
- Swagger UI: http://localhost:8084/docs
- OpenAPI spec: http://localhost:8084/api-docs/openapi.json
- Clear separation of concerns (API, service, domain, infra)
- Typed configuration via environment variables
- Minimal framework leakage into core logic
- Pluggable rendering architecture (planned)
Copyright © Greenbone AG
Licensed under the GNU Affero General Public License v3.0 or later. See LICENSE.
