# Creating a Custom Scanner pscand comes with four scanners built-in, but you may easily create your own scanners for future extensibility. The process is simple. 1. Create your own crate 2. Implement the `Scanner` trait 3. Build, and place it into a scanner directory See below: ## Creating your scanner crate ```toml # scanners/scanner-custom/Cargo.toml [package] name = "scanner-custom" version = "0.1.0" edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] pscand-core = { workspace = true } ``` ## Implementing the `Scanner` trait ```rust use pscand_core::scanner::Scanner; use pscand_macros::scanner; pub struct CustomScanner; impl Scanner for CustomScanner { fn name(&self) -> &str { "custom" } fn collect(&self) -> Result> { // Collect your metrics Ok(serde_json::json!({ "value": 42 })) } } #[scanner] static SCANNER: CustomScanner = CustomScanner; ``` ## Building and installing ```bash cargo build --release # Install to a directory in PSCAND_SCANNER_DIRS (e.g., ~/.local/share/pscand/scanners) install -Dm755 target/release/libscanner_custom.so \ ~/.local/share/pscand/scanners/scanner-custom.so ```