A language that mutates its own bytecode
Built for practical security work
Mutant is a programming language built for practical security work, forensic automation, and cross-platform analysis tooling.
Workshop · DFRWS APAC 2026
Learn Mutant on a real case
An interactive path from your first program to a full investigation: the language, then artefacts, timestomping, malicious ads and registry persistence, ending on the QUILLDROP case.
What is Mutant
It is not just a scripting language with a few security helpers bolted on. The language, compiler, virtual machine, runtime security layer, and example corpus are designed together so you can write small programs that do real investigations, produce reusable artifacts, and run under a security model that includes encryption, signing, anti-tamper checks, anti-debugging, anti-sandbox checks, and bytecode polymorphism.
- It automates security and forensic workflows.
- It can compile .mut source into encrypted bytecode and standalone binaries.
- It has a large standard library (694 builtins across 41 categories): strings, math, hashing,…
Pipeline
The parser builds an AST and the compiler walks it, emitting a flat byte stream directly — nothing sits in between. The VM then runs those bytes on an expression stack, with the polymorphic engine free to mutate them on the way through.
Bytecode IR reference ↗Why Mutant · four value props
Tool carousel · drag to scroll
All docs ↗- The [mutant](https://mudocs.aoiflux.xyz) Programming Language
- Mutant in 30 minutes
- What Is Mutant?
- Mutant Capability Reference
- Mutant Language Reference
- Mutant Cookbook
- Mutant IR / ByteCode Reference
- Polymorphic Bytecode LLD (Current + Roadmap)
- Binary Artifact Security Deep Dive
- Security Policy
- Configuration Policy
- Evidence Handling Policy
- Contributing to Mutant
- Security Implementation Guide (Current + Next Steps)
- Debugging Mutant programs
VSCode extension
Mutant for VSCode
Diagnostics, hover, completion, rename, formatting and semantic tokens for .mut files, served over LSP by the mlsp process.
from docs/LSP_EXTENSION_LLD.md