PAGES
← all tools
◆ Exploitation & C2

merlin-agent

v2.5.1 open-source

Agent component of the Merlin post-exploitation command and control framework.

Summary

merlin-agent is an open-source post-exploitation agent that serves as the implant component of the Merlin command-and-control framework, distributed under GPL v3. It runs as a compiled binary deployed on a compromised host, communicating back to a Merlin server over HTTP/1.1, HTTP/2, or HTTP/3HTTP/3The third major version of HTTP, standardized by the IETF, which runs over QUIC instead of TCP, eliminating head-of-line blocking and reducing connection latency for faster, more resilient data transfer., with options set at runtime for proxy authentication, choice of HTTP client, message transforms, and TLS certificate validation. It is built for red teamers and penetration testers running authorized post-exploitation exercises rather than for defenders, and it sits in the same category as other HTTP-based C2 frameworks, with compiled agents for multiple operating systems provided through the main Merlin project's releases. Development is not very active: the agent has had four contributors since its first commit in 2020, with no commits in the past year and its last release nearly a year and a half ago.

Agent component of the Merlin post-exploitation command and control framework.

How merlin-agent helps

Can a compromised host stay in contact with its operator when the network path filters or inspects normal web traffic?

the agent falls back across HTTP/1.1, HTTP/2, and HTTP/3, so traffic blends with ordinary encrypted web sessions on the segments where those protocols are permitted

Does the agent's network fingerprint match what's already normal on this host, or does it stand out?

the HTTP client used for communication can be switched between the native client and the OS's own HTTP library, so traffic can be made to resemble what the compromised host already generates

Should this agent be trusted to validate the server it's talking to before sending back data?

TLS certificate validation can be required at runtime, so the agent refuses to communicate with a server presenting an unrecognized certificate

Which operating systems can this exercise's target hosts run the implant on?

compiled agent binaries for each supported operating system are distributed together in the main project's release packages, not built separately from this repository

all 16 features, with the evidence for each →

Languages

Not documented

Features

16 capabilities · 3 backed by code, an API document or a real run

Built from merlin-agent's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What merlin-agent offers you

  • Command-line interface9
All capabilities 16 capabilities
HTTP communication verified Sends messages over HTTP with configurable client backend and optional TLS certificate validation. 8 releases · 6 other sources · first seen Aug 2021

Also counts toward: Command-line interface

release 8 total

  • Adds the -http-client CLI argument to select the Go or winhttp API HTTP client v2.4.0 · Mar 2024 · source · release history
  • Passes TLS X509 certificate validation settings through to JA3 and Parrot clients v2.1.0 · Nov 2023 · source · release history
  • Adds -listener, -addr, -auth, -transforms, and -secure CLI arguments to configure p2p methods, network interfaces, authentication, transforms, and TLS validation. v2.0.0 · Nov 2023 · source · release history
  • Allows changing the --parrot parameter dynamically while the agent is running without restart. v1.6.0 · Nov 2022 · source · release history
  • Adds --parrot CLI argument to enable JA3 signature spoofing via the utls library. v1.6.0 · Nov 2022 · source · release history
  • Introduces Go build tags to separate Mythic client from standalone HTTP1/2/3 client v1.4.1 · Apr 2022 · source · release history

command line

  • --http-client — The HTTP client to use for communication [go, winhttp] v2.4.0 · Mar 2024 · command-line history
  • --secure — Require TLS certificate validation for HTTP communications v2.0.0 · Nov 2023 · command-line history

example

  • Run the agent and explicitly force the use of the winhttp API for HTTP C2 traffic ./merlin-agent -http-client winhttp v2.4.0 · Mar 2024 · source
  • Disable strict TLS validation for internal servers with self-signed certs when using JA3 or Parrot transports. ./merlin-agent -transport ja3 -secure false v2.1.0 · Nov 2023 · source
  • Build the agent with AES transformation and verify TLS certificates. make windows TRANSFORMS=aes SECURE=true v2.0.0 · Nov 2023 · source
  • Start the agent impersonating Chrome 102's TLS fingerprint. ./merlin-agent -parrot HelloChrome_102 v1.6.0 · Nov 2022 · source
Message transform pipeline verified Constructs outgoing messages by applying an ordered sequence of transforms specified by the user. 4 releases · 4 other sources · first seen Dec 2021

Also counts toward: Command-line interface

release

  • Added mythic encoder to transform messages in the format Mythic expects them in v2.3.0 · Dec 2023 · source · release history
  • Adds AUTH and TRANSFORMS Make file variables to control agent build-time configuration options. v2.0.0 · Nov 2023 · source · release history
  • Adds memory subcommand to Windows agents for reading and writing process memory via direct syscalls. v1.4.0 · Apr 2022 · source · release history
  • Adds -headers CLI argument and HEADERS= Make parameter to inject arbitrary HTTP headers using newline-separated lists v1.2.0 · Dec 2021 · source · release history

command line

  • --transforms — Ordered CSV of transforms to construct a message v2.0.0 · Nov 2023 · command-line history

example

  • Handle ShiftJIS encoded text in a Go-based merlin-agent module. import "github.com/Ne0nd0g/merlin-agent/os/windows/pkg/text" v2.2.0 · Dec 2023 · source
  • Build the agent with AES transformation and verify TLS certificates. make windows TRANSFORMS=aes SECURE=true v2.0.0 · Nov 2023 · source
  • Inject custom HTTP headers when building the agent binary. make HEADERS='X-Custom: value\nAuthorization: Bearer token' v1.2.0 · Dec 2021 · source
Proxy support verified Routes HTTP communication through a proxy server with optional username and password authentication. 3 releases · 3 other sources · first seen Jun 2021

Also counts toward: Command-line interface

release

  • Enables automatic Windows HTTP proxy authentication via the winhttp API v2.4.0 · Mar 2024 · source · release history
  • Adds new SOCKS5 functionality for traffic routing v1.5.0 · Jul 2022 · source · release history
  • HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables are now used if a proxy was not explicitly provided v1.0.2 · Jun 2021 · source · release history

command line

example

  • Route agent traffic through an explicit HTTP proxy by setting the HTTP_PROXY environment variable before starting the service. HTTP_PROXY=http://proxy.corp:8080 merlin-agent v1.0.2 · Jun 2021 · source
Anti-analysis capabilities shipped Bypasses security mechanisms by patching AMSI and obfuscating builds. 3 releases · 1 other source · first seen Mar 2022

release

  • Adds automatic AmsiScanBuffer patching in the existing load-assembly command. v1.4.0 · Apr 2022 · source · release history
  • Allows specifying a build seed via the SEED make variable (e.g., make windows-debug SEED=<your seed valuee>). v1.3.1 · Mar 2022 · source · release history
  • Adds windows-garble, linux-garble, and darwin-garble targets to the Makefile to produce garbled agent builds. v1.3.1 · Mar 2022 · source · release history

example

  • Build an obfuscated Linux agent binary using a specific seed for reproducible obfuscation. make linux-garble SEED=my_secret_seed v1.3.1 · Mar 2022 · source
Process management shipped Manages running processes by listing them, killing them by PID, and viewing host uptime. 4 releases · first seen Aug 2021

Also counts toward: Command-line interface

release

  • Adds os.GetIntegrityLevel() API to detect Windows integrity levels (Medium, High, System) or Linux/Unix sudo/root status v1.3.0 · Feb 2022 · source · release history
  • Adds uptime command to view host uptime v1.1.0 · Aug 2021 · source · release history
  • Adds ps command to retrieve a Windows process list v1.1.0 · Aug 2021 · source · release history
  • Adds kill command to stop or kill a running process by PID v1.1.0 · Aug 2021 · source · release history
Peer-to-peer communication shipped Initiates, manages, and terminates direct peer-to-peer links between agents over TCP. 2 releases · 1 other source · first seen Nov 2023

Also counts toward: Command-line interface

release

  • Adds -listener, -addr, -auth, -transforms, and -secure CLI arguments to configure p2p methods, network interfaces, authentication, transforms, and TLS validation. v2.0.0 · Nov 2023 · source · release history
  • Adds link, listener (with list, start, stop subcommands), and unlink commands to the agent for initiating and managing peer-to-peer connections. v2.0.0 · Nov 2023 · source · release history

example

  • Initiate a peer-to-peer link to a remote agent over TCP. link tcp 192.168.1.72:4444 v2.0.0 · Nov 2023 · source
Memory manipulation shipped Reads, writes, and patches memory in running processes or modules using direct syscalls. 1 release · 2 other sources · first seen Apr 2022

Also counts toward: Command-line interface

release

  • Adds memory read, memory write, and memory patch sub-subcommands to target specific module procedures. v1.4.0 · Apr 2022 · source · release history

example

  • Read specific bytes from a function in a Windows module for debugging or exploitation. memory read ntdll.dll EtwEventWrite <count> v1.4.0 · Apr 2022 · source
  • Patch a function in memory by locating it and overwriting its bytes. memory patch kernel32.dll CreateFileW <bytes_hex> v1.4.0 · Apr 2022 · source
Access token and privilege management shipped Creates new access tokens, manages privileges, steals tokens, and impersonates users to run processes under different credentials. 2 releases · 1 other source · first seen Dec 2021

Also counts toward: Command-line interface

release

  • Adds token make, privs, rev2self, steal, and whoami subcommands for Windows Access Token interaction v1.2.0 · Dec 2021 · source · release history
  • Adds runas Windows command to create a process as another user with their password v1.2.0 · Dec 2021 · source · release history

example

  • Create a new Windows access token to run a process under different credentials. runas <username> <password> <executable> v1.2.0 · Dec 2021 · source
File manipulation shipped Performs file operations such as securely deleting files, modifying timestamps, and deleting files natively. 3 releases · first seen Aug 2021

release

Network reconnaissance shipped Collects host network information including adapter details, active connections, and Windows named pipes. 3 releases · first seen Aug 2021

Also counts toward: Command-line interface

release

  • Adds ifconfig/ipconfig command to print host network adapter information v1.1.0 · Aug 2021 · source · release history
  • Adds pipes command to list Windows named pipes v1.1.0 · Aug 2021 · source · release history
  • Adds netstat command to list active network connections v1.1.0 · Aug 2021 · source · release history
Selective build tagging shipped Compiles the agent with only specified capabilities by using build tags to exclude others. 2 releases · first seen Mar 2024

release

  • When ANY build tag is included, the agent will ONLY include that feature and nothing else; e.g., using ONLY the http tag excludes SMB, TCP, and UDP clients v2.4.0 · Mar 2024 · source · release history
  • Introduces build tags (http, http1, http2, http3, winhttp, etc.) to selectively compile specific C2 clients v2.4.0 · Mar 2024 · source · release history
Agent sleep interval shipped Configures the duration the agent waits between operations or check-ins via build-time parameters. 1 release · 1 other source · first seen Apr 2022

release

  • Adds SLEEP Makefile variable (e.g., make windows SLEEP=2m) to control agent sleep interval v1.4.1 · Apr 2022 · source · release history

example

  • Build a Windows agent binary with a custom sleep interval of 2 minutes. make windows SLEEP=2m v1.4.1 · Apr 2022 · source
Process desktop interaction shipped Interacts with Windows session desktops and window stations for the agent's process. 1 release · 1 other source · first seen Mar 2022

release

  • Adds GetProcessWindowStation and GetThreadDesktop functions to the user32 package. v1.3.1 · Mar 2022 · source · release history

example

  • Use the new user32 functions in Go code to interact with Windows session desktops. import "merlin-agent/user32" // ... later in code: wStation := user32.GetProcessWindowStation() v1.3.1 · Mar 2022 · source
Remote command execution via SSH shipped Executes commands on remote hosts using an existing session or establishes non-interactive SSH connections. 1 release · 1 other source · first seen Dec 2021

Also counts toward: Command-line interface

release

  • Adds ssh command for non-interactive remote host connection and command execution v1.2.0 · Dec 2021 · source · release history

example

  • Execute a remote command over SSH within an existing session. ssh <host> <command> v1.2.0 · Dec 2021 · source
Cross-platform support shipped Supports execution on Windows, Linux, macOS, and FreeBSD across x64 and ARM architectures. 1 release · first seen Oct 2026

release

  • Adds pre-built agent binaries for macOS (Darwin) arm64, Linux armv7, and Linux arm64, expanding the existing Windows x64, Linux x64, FreeBSD x64, and macOS x64 build matrix.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v2.5.1 · Oct 2026 · source · release history
Environment variable management shipped Allows viewing, adding, or removing environment variables on the compromised host. 1 release · first seen Aug 2021

release

  • Adds env command to view, add, or remove environment variables v1.1.0 · Aug 2021 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for merlin-agent, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail merlin-agent puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Coverage

Missing something? Tell us

What merlin-agent connects to, runs on and detects, read from its release notes and docs. So far: 1 new supported platform.

Show

1 change, tracked since Oct 13, 2026.

  • Oct 132026

    new macOS (Darwin) arm64 and Linux armv7 / arm64 agent binaries

    macOS (Darwin) arm64 and Linux armv7 / arm64 agent binaries, alongside the existing Windows x64, Linux x64, FreeBSD x64, and macOS x64 builds

    v2.5.1 Source ↗

How we count

Read from 1 of 15 release notes and docs updates we hold for merlin-agent. "First seen" is the earliest note that names something; "last" is the latest. Our history may start partway through merlin-agent's life, so an old integration can show a recent first-seen date.

Each change counts once: "added 40 checks" is one line, so the numbers measure how often coverage moves, not how big the catalogue is or how well it detects.

Releases

Show
Coverage in all entries

15 entries

  1. October 20261
  2. March 20241
  3. December 20232
  4. November 20232
  5. November 20221
  6. July 20221
  7. April 20222
  8. March 20221
  9. February 20221
  10. December 20211
  11. August 20211
  12. June 20211
    Show
    Coverage in all entries

    15 entries

    Project health

    Issue, contributor and maintainer activity in Ne0nd0g/merlin-agent, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 0 −1 vs prior 12 months
    2. Maintainers 0 +0 joined · −1 left, last 12 months
    3. Bus factor 0 committers behind half the commits
    4. Community-filed not measured of issues opened, last 12 months
    5. Median time to close not measured issues closed, last 12 months
    6. Open backlog 1 of 35 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 1
    3. Contributors / month 0
    4. Commits / month 0
    5. Stars 218
    Issue themes, last 12 months not measured

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →