explaingit

praetorian-inc/wasmforge

Analysis updated 2026-05-18

102GoAudience · researcherComplexity · 5/5Setup · hard

TLDR

WasmForge compiles Go or C# programs into a single native Windows or macOS binary that runs the code inside a WebAssembly sandbox, aimed at red team security testing.

Mindmap

mindmap
  root((wasmforge))
    What it does
      Compiles Go or C# to WASM
      Packages as native binary
      Sandboxed via wazero fork
      Runs on Windows or macOS
    Tech stack
      Go
      C sharp
      WebAssembly
      dotNET
    Use cases
      Red team tooling
      Static detection evasion
      Cross platform builds
    Limitations
      Partial Win32 support
      C sharp path experimental
      No memory scan evasion

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Compile an existing Go network tool into a single Windows or macOS binary for a red team engagement.

USE CASE 2

Port a .NET Framework C# tool to run through the WASI/WebAssembly pipeline instead of natively.

USE CASE 3

Apply a ghost profile to change a compiled binary's internal symbols to reduce static detection rates.

What is it built with?

GoC#WebAssemblywazero.NETDocker

How does it compare?

praetorian-inc/wasmforgeaymanhs/nanotdb0xmassi/pocketdev
Stars102102101
LanguageGoGoGo
Setup difficultyhardmoderatemoderate
Complexity5/53/53/5
Audienceresearcherdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

C# builds need a Docker image bundling the .NET SDK, NativeAOT-LLVM, and WASI SDK toolchains.

No license information stated in the README.

In plain English

WasmForge is a command line tool that takes programs written in Go, or existing C# projects, and compiles them into a single native binary that runs on Windows or macOS. Instead of running directly on the operating system, the guest program is compiled to WebAssembly and executed inside a sandboxed runtime built on a modified version of the wazero project. Even though the code runs inside this sandbox, it still gets access to networking, raw sockets, Windows APIs, and macOS framework APIs, so a normal Go program using net.Dial or net/http can be built without changing its source code. The project is built primarily for security researchers doing red team work. Its README is candid about what still does not work: a meaningful portion of the Windows Win32 API is unsupported, especially APIs that rely on callback thunks, and some operations will simply crash. The author gives the well known Sliver command and control framework as an example: many of its commands run through WasmForge, but the port is not complete, and small quirks remain, like file paths still showing forward slashes instead of the usual Windows backslash format. Support for compiling C# to this same format is described as more experimental than the Go path, often requiring parts of the program to be rewritten to work at all. WasmForge is aimed mainly at getting past static detection methods that scan a binary's contents, it is less effective against tools that inspect a running program's memory, and the README notes that obvious strings inside a binary can still trigger simple in-memory scans. You can get started by downloading a prebuilt release binary, using a bundled Docker image that includes the full .NET and WebAssembly toolchain needed for C# builds, or building from source with a single make command. A build command lets you target Windows or macOS, choose a raw sockets option, and pick a ghost profile that changes how the compiled binary's internal symbols look to reduce detection rates. The project openly acknowledges it was built with heavy use of AI coding tools, and the codebase is described by its own author as still somewhat disorganized in places.

Copy-paste prompts

Prompt 1
Explain how WasmForge's wazero-based WASM sandbox gives a guest Go program access to raw sockets and Win32 APIs.
Prompt 2
Walk me through building a Go program with WasmForge targeting GOOS=windows with the traefik ghost profile.
Prompt 3
What are the current limitations of WasmForge's C# to WebAssembly compilation pipeline?
Prompt 4
Set up the WasmForge Docker image for compiling a .NET Framework C# project on Linux.

Frequently asked questions

What is wasmforge?

WasmForge compiles Go or C# programs into a single native Windows or macOS binary that runs the code inside a WebAssembly sandbox, aimed at red team security testing.

What language is wasmforge written in?

Mainly Go. The stack also includes Go, C#, WebAssembly.

What license does wasmforge use?

No license information stated in the README.

How hard is wasmforge to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is wasmforge for?

Mainly researcher.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.