Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
04c8383
refactor(modules-sdk): write all events to stdout as JSONL
AFredefon Feb 23, 2026
f389927
feat(hub): add hub integration and rename project to FuzzForge AI
AFredefon Feb 25, 2026
6cd8fd3
fix(hub): fix hub config wiring and volume expansion in client
AFredefon Feb 25, 2026
075b678
Merge pull request #42 from FuzzingLabs/features/hub-integration
AFredefon Mar 4, 2026
1d495ce
refactor: remove module system, migrate to MCP hub tools architecture
AFredefon Mar 8, 2026
3e0d1cd
Merge pull request #43 from FuzzingLabs/refactor/remove-module-system…
AFredefon Mar 8, 2026
9376645
feat(tui): add terminal UI with hub and agent management
AFredefon Mar 10, 2026
f2dca0a
Merge pull request #45 from FuzzingLabs/feature/tui-agent-setup
AFredefon Mar 10, 2026
f800225
ci: add GitHub Actions workflows with lint, typecheck and tests
AFredefon Mar 11, 2026
b137f48
fix(ci): use uv sync
AFredefon Mar 11, 2026
47c254e
fix: add workspace packages as root deps so uv sync installs everything
AFredefon Mar 11, 2026
6f967ff
fix: find_fuzzforge_root searches cwd first instead of __file__
AFredefon Mar 11, 2026
544569d
fix: use ~/.fuzzforge for user-global data, keep workspace .fuzzforge…
AFredefon Mar 11, 2026
976947c
feat: add FUZZFORGE_USER_DIR env var to override user-global data dir
AFredefon Mar 11, 2026
f192771
fix: improve new user experience and docs
AFredefon Mar 11, 2026
a344167
tui: in-UI image building, hub registry auto-recovery, clean hub-config
AFredefon Mar 11, 2026
1891a43
tui: background image builds with live log viewer
AFredefon Mar 11, 2026
b975d28
tui: fix single-click buttons and double-modal push
AFredefon Mar 11, 2026
6ced81a
fix: inject project assets as Docker volume mounts in execute_hub_tool
AFredefon Mar 11, 2026
9cfbc29
fix: add noqa for optional git URL fetch exception
AFredefon Mar 11, 2026
462f6ed
fix: resolve ruff lint errors in TUI modules
AFredefon Mar 11, 2026
6cdd0ca
fix: suppress BLE001 for intentional broad catch in execute_hub_tool
AFredefon Mar 11, 2026
73a0170
fix: resolve mypy type errors in TUI app and build_log screen
AFredefon Mar 11, 2026
bc5e937
fix: document mount paths in execute_hub_tool and inject volumes into…
AFredefon Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: CI

on:
push:
branches: [main, dev, feature/*]
pull_request:
branches: [main, dev]
workflow_dispatch:

jobs:
lint-and-typecheck:
name: Lint & Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.14

- name: Install dependencies
run: uv sync

- name: Ruff check (fuzzforge-cli)
run: |
cd fuzzforge-cli
uv run --extra lints ruff check src/

- name: Ruff check (fuzzforge-mcp)
run: |
cd fuzzforge-mcp
uv run --extra lints ruff check src/

- name: Ruff check (fuzzforge-common)
run: |
cd fuzzforge-common
uv run --extra lints ruff check src/

- name: Mypy type check (fuzzforge-cli)
run: |
cd fuzzforge-cli
uv run --extra lints mypy src/

- name: Mypy type check (fuzzforge-mcp)
run: |
cd fuzzforge-mcp
uv run --extra lints mypy src/

# NOTE: Mypy check for fuzzforge-common temporarily disabled
# due to 37 pre-existing type errors in legacy code.
# TODO: Fix type errors and re-enable strict checking
#- name: Mypy type check (fuzzforge-common)
# run: |
# cd fuzzforge-common
# uv run --extra lints mypy src/

test:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.14

- name: Install dependencies
run: uv sync --all-extras

- name: Run MCP tests
run: |
cd fuzzforge-mcp
uv run --extra tests pytest -v

- name: Run common tests
run: |
cd fuzzforge-common
uv run --extra tests pytest -v
49 changes: 49 additions & 0 deletions .github/workflows/mcp-server.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: MCP Server Smoke Test

on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
workflow_dispatch:

jobs:
mcp-server:
name: MCP Server Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.14

- name: Install dependencies
run: uv sync --all-extras

- name: Start MCP server in background
run: |
cd fuzzforge-mcp
nohup uv run python -m fuzzforge_mcp.server > server.log 2>&1 &
echo $! > server.pid
sleep 3

- name: Run MCP tool tests
run: |
cd fuzzforge-mcp
uv run --extra tests pytest tests/test_resources.py -v

- name: Stop MCP server
if: always()
run: |
if [ -f fuzzforge-mcp/server.pid ]; then
kill $(cat fuzzforge-mcp/server.pid) || true
fi

- name: Show server logs
if: failure()
run: cat fuzzforge-mcp/server.log || true
Comment on lines +28 to +49
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This workflow starts python -m fuzzforge_mcp.server, but the package entrypoint is python -m fuzzforge_mcp (there is no fuzzforge_mcp.server module). Also, the MCP tests use the in-process mcp transport (see fuzzforge-mcp/tests/conftest.py), so starting a background stdio server here is unnecessary and may hang. Consider removing the start/stop steps entirely, or updating the command to python -m fuzzforge_mcp and actually exercising it via a real stdio client.

Suggested change
- name: Start MCP server in background
run: |
cd fuzzforge-mcp
nohup uv run python -m fuzzforge_mcp.server > server.log 2>&1 &
echo $! > server.pid
sleep 3
- name: Run MCP tool tests
run: |
cd fuzzforge-mcp
uv run --extra tests pytest tests/test_resources.py -v
- name: Stop MCP server
if: always()
run: |
if [ -f fuzzforge-mcp/server.pid ]; then
kill $(cat fuzzforge-mcp/server.pid) || true
fi
- name: Show server logs
if: failure()
run: cat fuzzforge-mcp/server.log || true
- name: Run MCP tool tests
run: |
cd fuzzforge-mcp
uv run --extra tests pytest tests/test_resources.py -v

Copilot uses AI. Check for mistakes.
10 changes: 5 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down Expand Up @@ -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
```

Expand Down Expand Up @@ -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
Expand Down
39 changes: 7 additions & 32 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
.PHONY: help install sync format lint typecheck test build-modules clean
.PHONY: help install sync format lint typecheck test build-hub-images clean

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"
@echo " make format - Format code with ruff"
@echo " make lint - Lint code with ruff"
@echo " make typecheck - Type check with mypy"
@echo " make test - Run all tests"
@echo " make build-modules - Build all module container images"
@echo " make clean - Clean build artifacts"
@echo " make build-hub-images - Build all mcp-security-hub images"
@echo " make clean - Clean build artifacts"
@echo ""

# Install all dependencies
Expand Down Expand Up @@ -64,34 +64,9 @@ test:
fi \
done

# Build all module container images
# Uses Docker by default, or Podman if FUZZFORGE_ENGINE=podman
build-modules:
@echo "Building FuzzForge module images..."
@if [ "$$FUZZFORGE_ENGINE" = "podman" ]; then \
if [ -n "$$SNAP" ]; then \
echo "Using Podman with isolated storage (Snap detected)"; \
CONTAINER_CMD="podman --root ~/.fuzzforge/containers/storage --runroot ~/.fuzzforge/containers/run"; \
else \
echo "Using Podman"; \
CONTAINER_CMD="podman"; \
fi; \
else \
echo "Using Docker"; \
CONTAINER_CMD="docker"; \
fi; \
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"); \
echo "Building $$name:$$version..."; \
$$CONTAINER_CMD build -t "fuzzforge-$$name:$$version" "$$module" || exit 1; \
fi \
done
@echo ""
@echo "✓ All modules built successfully!"
# Build all mcp-security-hub images for the firmware analysis pipeline
build-hub-images:
@bash scripts/build-hub-images.sh
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

build-hub-images invokes scripts/build-hub-images.sh, but there is no scripts/ directory/script in the repository, so this target will fail. Either add the script to the PR or update the target to call an existing script/path (or inline the build logic).

Suggested change
@bash scripts/build-hub-images.sh
@echo "Error: build-hub-images is not implemented because scripts/build-hub-images.sh is missing." 1>&2; exit 1

Copilot uses AI. Check for mistakes.

# Clean build artifacts
clean:
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<h1 align="center"> FuzzForge OSS</h1>
<h1 align="center"> FuzzForge AI</h1>
<h3 align="center">AI-Powered Security Research Orchestration via MCP</h3>

<p align="center">
Expand Down Expand Up @@ -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

Expand All @@ -43,7 +43,7 @@ At the heart of FuzzForge are **modules** - containerized security tools that AI
- **🔗 Composable**: Chain modules together into automated workflows
- **📦 Extensible**: Build custom modules with the Python SDK

The OSS runtime handles module discovery, execution, and result collection. Security modules (developed separately) provide the actual security tooling - from static analyzers to fuzzers to crash triagers.
FuzzForge AI handles module discovery, execution, and result collection. Security modules (developed separately) provide the actual security tooling - from static analyzers to fuzzers to crash triagers.

Instead of manually running security tools, describe what you want and let your AI assistant handle it.

Expand Down Expand Up @@ -171,11 +171,11 @@ 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) |
| **Compatibility** | ✅ Runs any compatible module | ✅ Works with OSS runtime |
| **Compatibility** | ✅ Runs any compatible module | ✅ Works with FuzzForge AI |

**Enterprise modules** are developed separately and provide production-ready security tooling:

Expand All @@ -187,7 +187,7 @@ FuzzForge modules are containerized security tools that AI agents can orchestrat
| 🔐 **Vulnerability Detection** | Pattern Matcher, Taint Analyzer | Security vulnerability scanning |
| 📝 **Reporting** | Report Generator, SARIF Exporter | Automated security report generation |

> 💡 **Build your own modules!** The FuzzForge SDK allows you to create custom modules that integrate seamlessly with the OSS runtime. See [Creating Custom Modules](#-creating-custom-modules).
> 💡 **Build your own modules!** The FuzzForge SDK allows you to create custom modules that integrate seamlessly with FuzzForge AI. See [Creating Custom Modules](#-creating-custom-modules).

### Execution Modes

Expand Down
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -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.

---

Expand Down
Loading