Fabric is an open-source Command-Line Interface (CLI) tool with a configuration language designed to encode and automate content generation for cyber security and compliance.
Fabric generates documents based on modular templates written in Fabric Configuration Language (FCL). Template authors can delineate data requirements and content structures within the template, significantly reducing the manual effort associated with data consolidation and improving re-usability.
The plugin ecosystem expands Fabric's capabilities by offering integrations with various platforms, data stores, and security solutions, including JSON/CSV files, Elastic, OpenCTI, Splunk Cloud, GitHub, and more. A comprehensive list of supported plugins is available in the documentation.
To facilitate flexible content generation, Fabric content providers leverage powerful Go templates and incorporate capabilities such as generative AI/LLMs (OpenAI API, Azure OpenAI, etc).
Refer to the documentation for in-depth details about Fabric.
Note
Fabric is currently in the early stages of development, and there may be some issues. If you have any suggestions, ideas, or bug reports, please share them in Fabric Community slack.
You can find free Fabric templates in Fabric Templates repository.
To install Fabric on macOS with Homebrew, run these commands:
# Install Fabric from the tap
brew install blackstork-io/tools/fabric
# Verify the version installed
fabric --version
It's recommended to use blackstork-io/tools
tap when installing Fabric with Homebrew. The tap is
updated automatically with every release.
The Docker images for Fabric are hosted in Docker Hub.
To run Fabric as a Docker image use a full name blackstorkio/fabric
:
docker run blackstorkio/fabric
Fabric binaries for Windows, macOS, and Linux are available at "Releases" page in the project's GitHub.
To install Fabric:
- download a release archive: choose and download Fabric release archive appropriate for your operating system (Windows, macOS/Darwin, or Linux) and architecture from "Releases" page;
- unpack: extract the contents of the downloaded release archive into a preferred directory;
For example, the steps for macOS (arm64) are:
# Create a folder
mkdir fabric-bin
# Download the latest release of Fabric
wget https://github.com/blackstork-io/fabric/releases/latest/download/fabric_darwin_arm64.tar.gz -O ./fabric_darwin_arm64.tar.gz
# Unpack Fabric release archive into `fabric-bin` folder
tar -xvzf ./fabric_darwin_arm64.tar.gz -C ./fabric-bin
# Verify that `fabric` runs
./fabric-bin/fabric --help
The command line interface to Fabric is fabric
CLI tool.
The core sub-commands are:
install
— installs all required plugins.data
— executes the data block and prints out prettified JSON to standard output.render
— renders the specified target (a document template) and prints out the result to standard output or a file.
To get more details, run fabric --help
:
$ ./fabric --help
Usage:
fabric [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
data Execute a single data block
help Help about any command
install Install plugins
render Render the document
Flags:
--color enables colorizing the logs and diagnostics (if supported by the terminal and log format) (default true)
-h, --help help for fabric
--log-format string format of the logs (plain or json) (default "plain")
--log-level string logging level ('debug', 'info', 'warn', 'error') (default "info")
--source-dir string a path to a directory with *.fabric files (default ".")
-v, --verbose a shortcut to --log-level debug
--version version for fabric
Use "fabric [command] --help" for more information about a command.
Visit https://blackstork.io/fabric/docs/ to see full documentation for Fabric.
If you suspect any vulnerabilities within Fabric, please report them using GitHub's security advisory reporting. We treat every report with the utmost seriousness and commit to conducting a thorough investigation.
We kindly request that you task with us before making any public disclosures. This precautionary step ensures that no excessive information is shared prematurely, allowing us to prepare a patch. It also gives users enough time to upgrade.
Fabric is licensed under Apache-2.0 license. See the LICENSE file for the details.