diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 638be6e..a58b374 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
-# Contributing to FuzzForge OSS
+# Contributing to FuzzForge AI
-Thank you for your interest in contributing to FuzzForge OSS! We welcome contributions from the community and are excited to collaborate with you.
+Thank you for your interest in contributing to FuzzForge AI! We welcome contributions from the community and are excited to collaborate with you.
**Our Vision**: FuzzForge aims to be a **universal platform for security research** across all cybersecurity domains. Through our modular architecture, any security tool—from fuzzing engines to cloud scanners, from mobile app analyzers to IoT security tools—can be integrated as a containerized module and controlled via AI agents.
@@ -360,8 +360,8 @@ Beyond modules, you can contribute to FuzzForge's core components.
1. **Clone and Install**
```bash
- git clone https://github.com/FuzzingLabs/fuzzforge-oss.git
- cd fuzzforge-oss
+ git clone https://github.com/FuzzingLabs/fuzzforge-ai.git
+ cd fuzzforge-ai
uv sync --all-extras
```
@@ -538,7 +538,7 @@ Before submitting a new module:
## License
-By contributing to FuzzForge OSS, you agree that your contributions will be licensed under the same license as the project (see [LICENSE](LICENSE)).
+By contributing to FuzzForge AI, you agree that your contributions will be licensed under the same license as the project (see [LICENSE](LICENSE)).
For module contributions:
- Modules you create remain under the project license
diff --git a/Makefile b/Makefile
index a5ebc7e..64048c3 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ SHELL := /bin/bash
# Default target
help:
- @echo "FuzzForge OSS Development Commands"
+ @echo "FuzzForge AI Development Commands"
@echo ""
@echo " make install - Install all dependencies"
@echo " make sync - Sync shared packages from upstream"
@@ -30,7 +30,7 @@ sync:
# Format all packages
format:
- @for pkg in packages/fuzzforge-*/; do \
+ @for pkg in fuzzforge-*/; do \
if [ -f "$$pkg/pyproject.toml" ]; then \
echo "Formatting $$pkg..."; \
cd "$$pkg" && uv run ruff format . && cd -; \
@@ -39,7 +39,7 @@ format:
# Lint all packages
lint:
- @for pkg in packages/fuzzforge-*/; do \
+ @for pkg in fuzzforge-*/; do \
if [ -f "$$pkg/pyproject.toml" ]; then \
echo "Linting $$pkg..."; \
cd "$$pkg" && uv run ruff check . && cd -; \
@@ -48,7 +48,7 @@ lint:
# Type check all packages
typecheck:
- @for pkg in packages/fuzzforge-*/; do \
+ @for pkg in fuzzforge-*/; do \
if [ -f "$$pkg/pyproject.toml" ] && [ -f "$$pkg/mypy.ini" ]; then \
echo "Type checking $$pkg..."; \
cd "$$pkg" && uv run mypy . && cd -; \
@@ -57,7 +57,7 @@ typecheck:
# Run all tests
test:
- @for pkg in packages/fuzzforge-*/; do \
+ @for pkg in fuzzforge-*/; do \
if [ -f "$$pkg/pytest.ini" ]; then \
echo "Testing $$pkg..."; \
cd "$$pkg" && uv run pytest && cd -; \
@@ -80,12 +80,18 @@ build-modules:
echo "Using Docker"; \
CONTAINER_CMD="docker"; \
fi; \
+ sdk_version=$$(grep 'version' "fuzzforge-modules/fuzzforge-modules-sdk/pyproject.toml" 2>/dev/null | head -1 | sed 's/.*"\(.*\)".*/\1/' || echo "0.1.0"); \
+ echo "Building fuzzforge-modules-sdk:$$sdk_version (base image)..."; \
+ $$CONTAINER_CMD build \
+ -t "fuzzforge-modules-sdk:$$sdk_version" \
+ -t "localhost/fuzzforge-modules-sdk:$$sdk_version" \
+ "fuzzforge-modules/fuzzforge-modules-sdk/" || exit 1; \
for module in fuzzforge-modules/*/; do \
if [ -f "$$module/Dockerfile" ] && \
[ "$$module" != "fuzzforge-modules/fuzzforge-modules-sdk/" ] && \
[ "$$module" != "fuzzforge-modules/fuzzforge-module-template/" ]; then \
name=$$(basename $$module); \
- version=$$(grep 'version' "$$module/pyproject.toml" 2>/dev/null | head -1 | sed 's/.*"\(.*\\)".*/\\1/' || echo "0.1.0"); \
+ version=$$(grep 'version' "$$module/pyproject.toml" 2>/dev/null | head -1 | sed 's/.*"\(.*\)".*/\1/' || echo "0.1.0"); \
echo "Building $$name:$$version..."; \
$$CONTAINER_CMD build -t "fuzzforge-$$name:$$version" "$$module" || exit 1; \
fi \
diff --git a/README.md b/README.md
index 137cfb7..86b8512 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
FuzzForge OSS
+ FuzzForge AI
AI-Powered Security Research Orchestration via MCP
@@ -26,13 +26,13 @@
---
-> 🚧 **FuzzForge OSS is under active development.** Expect breaking changes and new features!
+> 🚧 **FuzzForge AI is under active development.** Expect breaking changes and new features!
---
## 🚀 Overview
-**FuzzForge OSS** is an open-source runtime that enables AI agents (GitHub Copilot, Claude, etc.) to orchestrate security research workflows through the **Model Context Protocol (MCP)**.
+**FuzzForge AI** is an open-source runtime that enables AI agents (GitHub Copilot, Claude, etc.) to orchestrate security research workflows through the **Model Context Protocol (MCP)**.
### The Core: Modules
@@ -171,7 +171,7 @@ FuzzForge modules are containerized security tools that AI agents can orchestrat
### Module Ecosystem
-| | FuzzForge OSS | FuzzForge Enterprise Modules |
+| | FuzzForge AI | FuzzForge Enterprise Modules |
|---|---|---|
| **What** | Runtime & MCP server | Security research modules |
| **License** | Apache 2.0 | BSL 1.1 (Business Source License) |
diff --git a/ROADMAP.md b/ROADMAP.md
index 8741bef..20f3632 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -1,6 +1,6 @@
-# FuzzForge OSS Roadmap
+# FuzzForge AI Roadmap
-This document outlines the planned features and development direction for FuzzForge OSS.
+This document outlines the planned features and development direction for FuzzForge AI.
---
diff --git a/USAGE.md b/USAGE.md
index 095a0bd..b826d60 100644
--- a/USAGE.md
+++ b/USAGE.md
@@ -1,6 +1,6 @@
-# FuzzForge OSS Usage Guide
+# FuzzForge AI Usage Guide
-This guide covers everything you need to know to get started with FuzzForge OSS - from installation to running your first security research workflow with AI.
+This guide covers everything you need to know to get started with FuzzForge AI - from installation to running your first security research workflow with AI.
> **FuzzForge is designed to be used with AI agents** (GitHub Copilot, Claude, etc.) via MCP.
> The CLI is available for advanced users but the primary experience is through natural language interaction with your AI assistant.
@@ -31,8 +31,8 @@ This guide covers everything you need to know to get started with FuzzForge OSS
```bash
# 1. Clone and install
-git clone https://github.com/FuzzingLabs/fuzzforge-oss.git
-cd fuzzforge-oss
+git clone https://github.com/FuzzingLabs/fuzzforge-ai.git
+cd fuzzforge-ai
uv sync
# 2. Build the module images (one-time setup)
@@ -57,9 +57,9 @@ uv run fuzzforge mcp install claude-code # For Claude Code CLI
## Prerequisites
-Before installing FuzzForge OSS, ensure you have:
+Before installing FuzzForge AI, ensure you have:
-- **Python 3.12+** - [Download Python](https://www.python.org/downloads/)
+- **Python 3.14+** - [Download Python](https://www.python.org/downloads/)
- **uv** package manager - [Install uv](https://docs.astral.sh/uv/)
- **Docker** - Container runtime ([Install Docker](https://docs.docker.com/get-docker/))
@@ -95,8 +95,8 @@ sudo usermod -aG docker $USER
### 1. Clone the Repository
```bash
-git clone https://github.com/FuzzingLabs/fuzzforge-oss.git
-cd fuzzforge-oss
+git clone https://github.com/FuzzingLabs/fuzzforge-ai.git
+cd fuzzforge-ai
```
### 2. Install Dependencies
@@ -122,14 +122,14 @@ FuzzForge modules are containerized security tools. After cloning, you need to b
### Build All Modules
```bash
-# From the fuzzforge-oss directory
+# From the fuzzforge-ai directory
make build-modules
```
This builds all available modules:
- `fuzzforge-rust-analyzer` - Analyzes Rust code for fuzzable functions
- `fuzzforge-cargo-fuzzer` - Runs cargo-fuzz on Rust crates
-- `fuzzforge-harness-validator` - Validates generated fuzzing harnesses
+- `fuzzforge-harness-tester` - Tests and validates generated fuzzing harnesses
- `fuzzforge-crash-analyzer` - Analyzes crash inputs
### Build a Single Module
@@ -169,7 +169,7 @@ uv run fuzzforge mcp install copilot
The command auto-detects everything:
- **FuzzForge root** - Where FuzzForge is installed
-- **Modules path** - Defaults to `fuzzforge-oss/fuzzforge-modules`
+- **Modules path** - Defaults to `fuzzforge-ai/fuzzforge-modules`
- **Docker socket** - Auto-detects `/var/run/docker.sock`
**Optional overrides** (usually not needed):
@@ -428,14 +428,14 @@ If you prefer Podman:
uv run fuzzforge mcp install copilot --engine podman
# Or set environment variable
-export FUZZFORGE_ENGINE=podman
+export FUZZFORGE_ENGINE__TYPE=podman
```
### Check Logs
-FuzzForge stores execution logs in the storage directory:
+FuzzForge stores execution results inside your project directory:
```bash
-ls -la ~/.fuzzforge/storage///
+ls -la /.fuzzforge/runs//
```
---
diff --git a/fuzzforge-cli/pyproject.toml b/fuzzforge-cli/pyproject.toml
index 02b066b..d68ff43 100644
--- a/fuzzforge-cli/pyproject.toml
+++ b/fuzzforge-cli/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "fuzzforge-cli"
version = "0.0.1"
-description = "FuzzForge CLI - Command-line interface for FuzzForge OSS."
+description = "FuzzForge CLI - Command-line interface for FuzzForge AI."
authors = []
readme = "README.md"
requires-python = ">=3.14"
diff --git a/fuzzforge-cli/src/fuzzforge_cli/application.py b/fuzzforge-cli/src/fuzzforge_cli/application.py
index 8e3b89a..114ef0a 100644
--- a/fuzzforge-cli/src/fuzzforge_cli/application.py
+++ b/fuzzforge-cli/src/fuzzforge_cli/application.py
@@ -12,7 +12,7 @@ from fuzzforge_cli.context import Context
application: Typer = Typer(
name="fuzzforge",
- help="FuzzForge OSS - Security research orchestration platform.",
+ help="FuzzForge AI - Security research orchestration platform.",
)
@@ -62,7 +62,7 @@ def main(
] = "",
context: TyperContext = None, # type: ignore[assignment]
) -> None:
- """FuzzForge OSS - Security research orchestration platform.
+ """FuzzForge AI - Security research orchestration platform.
Execute security research modules in isolated containers.
diff --git a/fuzzforge-cli/src/fuzzforge_cli/commands/mcp.py b/fuzzforge-cli/src/fuzzforge_cli/commands/mcp.py
index 249cb27..71e20f8 100644
--- a/fuzzforge-cli/src/fuzzforge_cli/commands/mcp.py
+++ b/fuzzforge-cli/src/fuzzforge_cli/commands/mcp.py
@@ -129,13 +129,13 @@ def _detect_docker_socket() -> str:
def _find_fuzzforge_root() -> Path:
"""Find the FuzzForge installation root.
- :returns: Path to fuzzforge-oss directory.
+ :returns: Path to fuzzforge-ai directory.
"""
# Try to find from current file location
current = Path(__file__).resolve()
- # Walk up to find fuzzforge-oss root
+ # Walk up to find fuzzforge-ai root
for parent in current.parents:
if (parent / "fuzzforge-mcp").is_dir() and (parent / "fuzzforge-runner").is_dir():
return parent
@@ -152,7 +152,7 @@ def _generate_mcp_config(
) -> dict:
"""Generate MCP server configuration.
- :param fuzzforge_root: Path to fuzzforge-oss installation.
+ :param fuzzforge_root: Path to fuzzforge-ai installation.
:param modules_path: Path to the modules directory.
:param engine_type: Container engine type (podman or docker).
:param engine_socket: Container engine socket path.
@@ -326,7 +326,7 @@ def generate(
if agent == AIAgent.COPILOT:
config_path = _get_copilot_mcp_path()
elif agent == AIAgent.CLAUDE_CODE:
- config_path = _get_claude_code_mcp_path(fuzzforge_root)
+ config_path = _get_claude_code_user_mcp_path()
else: # Claude Desktop
config_path = _get_claude_desktop_mcp_path()
diff --git a/fuzzforge-mcp/README.md b/fuzzforge-mcp/README.md
index 1c68125..36f9738 100644
--- a/fuzzforge-mcp/README.md
+++ b/fuzzforge-mcp/README.md
@@ -45,11 +45,11 @@ For custom setups, you can manually configure the MCP server.
{
"mcpServers": {
"fuzzforge": {
- "command": "/path/to/fuzzforge-oss/.venv/bin/python",
+ "command": "/path/to/fuzzforge-ai/.venv/bin/python",
"args": ["-m", "fuzzforge_mcp"],
- "cwd": "/path/to/fuzzforge-oss",
+ "cwd": "/path/to/fuzzforge-ai",
"env": {
- "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-oss/fuzzforge-modules",
+ "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-ai/fuzzforge-modules",
"FUZZFORGE_ENGINE__TYPE": "docker"
}
}
@@ -64,11 +64,11 @@ For custom setups, you can manually configure the MCP server.
"servers": {
"fuzzforge": {
"type": "stdio",
- "command": "/path/to/fuzzforge-oss/.venv/bin/python",
+ "command": "/path/to/fuzzforge-ai/.venv/bin/python",
"args": ["-m", "fuzzforge_mcp"],
- "cwd": "/path/to/fuzzforge-oss",
+ "cwd": "/path/to/fuzzforge-ai",
"env": {
- "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-oss/fuzzforge-modules",
+ "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-ai/fuzzforge-modules",
"FUZZFORGE_ENGINE__TYPE": "docker"
}
}
@@ -83,11 +83,11 @@ For custom setups, you can manually configure the MCP server.
"mcpServers": {
"fuzzforge": {
"type": "stdio",
- "command": "/path/to/fuzzforge-oss/.venv/bin/python",
+ "command": "/path/to/fuzzforge-ai/.venv/bin/python",
"args": ["-m", "fuzzforge_mcp"],
- "cwd": "/path/to/fuzzforge-oss",
+ "cwd": "/path/to/fuzzforge-ai",
"env": {
- "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-oss/fuzzforge-modules",
+ "FUZZFORGE_MODULES_PATH": "/path/to/fuzzforge-ai/fuzzforge-modules",
"FUZZFORGE_ENGINE__TYPE": "docker"
}
}
diff --git a/fuzzforge-mcp/pyproject.toml b/fuzzforge-mcp/pyproject.toml
index 44f4255..d173c07 100644
--- a/fuzzforge-mcp/pyproject.toml
+++ b/fuzzforge-mcp/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "fuzzforge-mcp"
version = "0.0.1"
-description = "FuzzForge MCP Server - AI agent gateway for FuzzForge OSS."
+description = "FuzzForge MCP Server - AI agent gateway for FuzzForge AI."
authors = []
readme = "README.md"
requires-python = ">=3.14"
diff --git a/fuzzforge-mcp/src/fuzzforge_mcp/resources/workflows.py b/fuzzforge-mcp/src/fuzzforge_mcp/resources/workflows.py
index 968dce9..280c306 100644
--- a/fuzzforge-mcp/src/fuzzforge_mcp/resources/workflows.py
+++ b/fuzzforge-mcp/src/fuzzforge_mcp/resources/workflows.py
@@ -1,6 +1,6 @@
"""Workflow resources for FuzzForge MCP.
-Note: In FuzzForge OSS, workflows are defined at runtime rather than
+Note: In FuzzForge AI, workflows are defined at runtime rather than
stored. This resource provides documentation about workflow capabilities.
"""
@@ -19,7 +19,7 @@ mcp: FastMCP = FastMCP()
async def get_workflow_help() -> dict[str, Any]:
"""Get help information about creating workflows.
- Workflows in FuzzForge OSS are defined at execution time rather
+ Workflows in FuzzForge AI are defined at execution time rather
than stored. Use the execute_workflow tool with step definitions.
:return: Workflow documentation.
diff --git a/fuzzforge-mcp/src/fuzzforge_mcp/tools/modules.py b/fuzzforge-mcp/src/fuzzforge_mcp/tools/modules.py
index 567f12e..4ab4246 100644
--- a/fuzzforge-mcp/src/fuzzforge_mcp/tools/modules.py
+++ b/fuzzforge-mcp/src/fuzzforge_mcp/tools/modules.py
@@ -49,24 +49,19 @@ async def list_modules() -> dict[str, Any]:
"image": f"{module.identifier}:{module.version or 'latest'}",
"available": module.available,
"description": module.description,
- # New metadata fields from pyproject.toml
- "category": module.category,
- "language": module.language,
- "pipeline_stage": module.pipeline_stage,
- "pipeline_order": module.pipeline_order,
- "dependencies": module.dependencies,
"continuous_mode": module.continuous_mode,
- "typical_duration": module.typical_duration,
+ "suggested_predecessors": module.suggested_predecessors,
# AI-discoverable metadata
"use_cases": module.use_cases,
- "input_requirements": module.input_requirements,
+ "common_inputs": module.common_inputs,
"output_artifacts": module.output_artifacts,
+ "output_treatment": module.output_treatment,
}
for module in modules
]
- # Sort by pipeline_order if available
- available_modules.sort(key=lambda m: (m.get("pipeline_order") or 999, m["identifier"]))
+ # Sort alphabetically by identifier
+ available_modules.sort(key=lambda m: m["identifier"])
return {
"modules": available_modules,
diff --git a/fuzzforge-mcp/tests/test_resources.py b/fuzzforge-mcp/tests/test_resources.py
index 370ffff..d6ea452 100644
--- a/fuzzforge-mcp/tests/test_resources.py
+++ b/fuzzforge-mcp/tests/test_resources.py
@@ -1,4 +1,4 @@
-"""MCP tool tests for FuzzForge OSS.
+"""MCP tool tests for FuzzForge AI.
Tests the MCP tools that are available in the OSS version.
"""
diff --git a/fuzzforge-modules/fuzzforge-modules-sdk/Dockerfile b/fuzzforge-modules/fuzzforge-modules-sdk/Dockerfile
index c98782a..6c90669 100644
--- a/fuzzforge-modules/fuzzforge-modules-sdk/Dockerfile
+++ b/fuzzforge-modules/fuzzforge-modules-sdk/Dockerfile
@@ -18,8 +18,8 @@ WORKDIR /app
# Create FuzzForge standard directories
RUN mkdir -p /fuzzforge/input /fuzzforge/output
-# Copy wheels directory (built by parent Makefile)
-COPY .wheels /wheels
+# Create wheels directory (populated with pre-built wheels when available)
+RUN mkdir -p /wheels
# Set up uv for the container
ENV UV_SYSTEM_PYTHON=1
diff --git a/fuzzforge-runner/README.md b/fuzzforge-runner/README.md
index 570abdd..c401d98 100644
--- a/fuzzforge-runner/README.md
+++ b/fuzzforge-runner/README.md
@@ -1,6 +1,6 @@
# FuzzForge Runner
-Direct execution engine for FuzzForge OSS. Provides simplified module and workflow execution without requiring Temporal or external infrastructure.
+Direct execution engine for FuzzForge AI. Provides simplified module and workflow execution without requiring Temporal or external infrastructure.
## Overview
diff --git a/fuzzforge-runner/pyproject.toml b/fuzzforge-runner/pyproject.toml
index e6fab86..cbee128 100644
--- a/fuzzforge-runner/pyproject.toml
+++ b/fuzzforge-runner/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "fuzzforge-runner"
version = "0.0.1"
-description = "FuzzForge Runner - Direct execution engine for FuzzForge OSS."
+description = "FuzzForge Runner - Direct execution engine for FuzzForge AI."
authors = []
readme = "README.md"
requires-python = ">=3.14"
diff --git a/fuzzforge-runner/src/fuzzforge_runner/__init__.py b/fuzzforge-runner/src/fuzzforge_runner/__init__.py
index 16f6ea6..f6a8f62 100644
--- a/fuzzforge-runner/src/fuzzforge_runner/__init__.py
+++ b/fuzzforge-runner/src/fuzzforge_runner/__init__.py
@@ -1,4 +1,4 @@
-"""FuzzForge Runner - Direct execution engine for FuzzForge OSS."""
+"""FuzzForge Runner - Direct execution engine for FuzzForge AI."""
from fuzzforge_runner.runner import Runner
from fuzzforge_runner.settings import Settings
diff --git a/fuzzforge-runner/src/fuzzforge_runner/runner.py b/fuzzforge-runner/src/fuzzforge_runner/runner.py
index 8ee9b27..01bc525 100644
--- a/fuzzforge-runner/src/fuzzforge_runner/runner.py
+++ b/fuzzforge-runner/src/fuzzforge_runner/runner.py
@@ -1,6 +1,6 @@
"""FuzzForge Runner - Main runner interface.
-This module provides the high-level interface for FuzzForge OSS,
+This module provides the high-level interface for FuzzForge AI,
coordinating module execution, workflow orchestration, and storage.
"""
diff --git a/fuzzforge-runner/src/fuzzforge_runner/storage.py b/fuzzforge-runner/src/fuzzforge_runner/storage.py
index 6b629da..f39f93e 100644
--- a/fuzzforge-runner/src/fuzzforge_runner/storage.py
+++ b/fuzzforge-runner/src/fuzzforge_runner/storage.py
@@ -39,7 +39,7 @@ def get_logger() -> BoundLogger:
class LocalStorage:
- """Local filesystem storage backend for FuzzForge OSS.
+ """Local filesystem storage backend for FuzzForge AI.
Provides lightweight storage for execution results while using
direct source mounting (no copying) for input assets.
diff --git a/pyproject.toml b/pyproject.toml
index 105034f..89488cc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[project]
-name = "fuzzforge-oss"
+name = "fuzzforge-ai"
version = "1.0.0"
-description = "FuzzForge OSS - AI-driven security research platform for local execution"
+description = "FuzzForge AI - AI-driven security research platform for local execution"
readme = "README.md"
requires-python = ">=3.14"
authors = [