Arm your red team with a command-and-control platform that runs the whole engagement from a browser tab — a 225 KB modular agent, an honest console, boring traffic, and delivery that treats every build as a one-way artifact. Eight tours below; the full fifty-three-entry reference is on the capabilities page.
AGENT LINE C 1.12 · GOPROTOCOL axis-v1PANEL v2.2 · EN/RUPLATFORMS 5 PROFILES
Feature 01
The agent — small core, nothing resident
The signature implant is a C agent of about 225 KB that carries almost no capability on disk. What it does carry is the protocol, the scheduler, and the loader — everything else arrives from the module depot when tasked and leaves when done.
One protocol, five platform profiles
axis-v1 · C 1.12
Windows 7 through 11 and Server on x86 and x64; current Linux servers; old-glibc NAS appliances; fully static embedded builds for QNAP, Synology and OpenWrt-class targets down to ARMv5; macOS on Apple silicon and Intel. One agent line, one protocol, one console — the build profile is a decision about the host, not about the tooling.
Every customer build is structurally unique. That is a property of the toolchain, not a setting you remember to enable.
The Go agent, when breadth wins
Windows · ≈ 8 MB
An alternate Windows implant with the full command set resident in the binary. Same server, same campaigns, same console. Choose it when footprint is cheap and you want everything local; choose the C agent when you want on-demand modules, or elevation, which the C agent alone offers. Both run in one fleet, side by side.
Approval before admission
Fleet hygiene
New check-ins land in a pending queue, not in your fleet. An operator with the right grant admits an agent to a campaign — or rejects it. Rejection is type-to-confirm and final: the agent is ordered to destroy itself, and the decision is logged like everything else. Stale and one-way hosts prune cleanly.
C core · 225 KB⇄shellsfilestunnelsbofcollection
fetched on demandin memory onlywiped on unload
Feature 02
The console — the whole product, in a tab
The web panel is not a companion view. It is served by the teamserver itself and holds every operator feature: dashboard, agents, workspace, builder, stagers, BOF depot, campaigns, users, keys, audit, and server administration.
Any machine you trust
Zero install
Operators sign in with a password and a TOTP second factor — nothing to install, nothing to license per machine, nothing to carry. An operator's workstation stops being an installation and becomes a credential. Multi-operator is the default way the product exists: every operator sees the same fleet at the same time.
Localized, not translated later
EN · RU
The panel ships fully localized in English and Russian — every view, every dialog, every audit string. Language is a per-operator setting, not a per-server one.
A desktop client, optional on purpose
Electron · mirrors the panel
For teams that want native windows and tray alerts, the desktop client is a full native reimplementation of the panel — not a wrapper around a web view. It wins nothing for existing: if a capability cannot be reached from a browser tab, it does not ship. Research note N.01 is the doctrine; the console page is the proof.
Shells and the interactive PTY, the file manager, tunnels and peer routing, the SMB browser, the BOF runtime, the collection set, elevation — all of it lives server-side in per-OS module pools and crosses to the agent only when tasked.
Every fetch is deliberate
One-time tokens · per-module keys
A module fetch is a one-time download token, a per-module key derived from the session, results streamed back in chunks, and key material wiped on unload. The server gates what an agent may fetch by agent type and platform. And the fetch never names itself: capable agents pull each module under a random cover name with a matching content type, so the request reads as an ordinary asset — a font, a script, a map file — not as dpapi.dll. A quiet agent therefore carries almost nothing — the loud moment is the fetch, and it happens once, in memory, wearing a boring name.
Static builds invert the model
Embedded profile
Where there is no loader — the static embedded builds — the same module set is compiled in. One codebase, two linking decisions, no fork in capability. The budget table and the full fetch sequence are in research note N.04.
one-time token→fetch · per-module key→runs in memory→results in chunks→wiped on unload
Feature 04
Traffic profiles — boring on the wire
Sessions are X25519 ECDH with AES-256-GCM, and the session's identity rotates on a fixed cadence, so correlation by identifier dies on schedule. What they look like is a separate decision: twenty-three traffic profiles dress the protocol as Microsoft Graph, the GitHub API, S3, DNS-over-HTTPS, a Kubernetes API, and more.
A profile per build, not per server
23 profiles
The builder takes a traffic profile per build, so one campaign can read like cloud telemetry and the next like developer tooling — from the same teamserver. Profiles are part of the licensed material and ship ready to use, not as templates you finish yourself.
Fronting, rotation, and a way home
Cloudflare Workers · Ghost Chain
An optional Cloudflare Worker fronts the teamserver so agents never see its address. Server keys rotate without a fleet rebuild. And when the path home dies entirely, Ghost Chain recovers tasking through a blockchain resolver — a fallback we would rather you never need, built for the day you do.
ms-graphgithub-apiaws-s3docker-registryk8s-apidoh-dnsprometheus-remotenpm-registry+15 more
Feature 05
Delivery & the builder — one-way artifacts
Thirteen delivery formats for Windows, Linux, and macOS, from full-featured stagers to a 21 KB minimal. Every artifact is treated as disposable: minted for a purpose, burned on use.
One-time stager tokens
Minted · counted · burned
A stager URL is a token with a use count. Served once, it burns; burned, it answers like nothing was ever there. Payload pools go further — one URL serves a different build per delivery, so a recovered sample describes one artifact, never your fleet.
Match the stager to the watch
EDR-aware delivery
Different guards call for different doors. The full stager family is the choice for hosts watched by CrowdStrike, SentinelOne, or Kaspersky; the minimal family — smaller, metamorphic, with a fully in-memory variant — is built for Symantec, Defender, and static-ML environments. The matrix of which family covers which product ships in the licensee manual, and it is honest about the cells marked verify first.
Routing is only half of the discipline; the other half is measurement. Every build is exercised in the evaluation lab — static, on-execute, and behavioral lanes across the tracked engine families — and rev 0328 completed the matrix with no blocking verdict. The method is on the home page.
Every install is a new specimen
Per-build · per-install polymorphism
A signature written against one AXIS artifact describes exactly one artifact. The pipeline mutates every binary it emits — polymorphic API hashing, junk and section variation, padding — and the server re-mutates every Windows artifact it serves — timestamp, provenance header, checksum, overlay — so no two downloads share a hash, even of the same payload. The persistence installer goes further: its stub is compiled per install, on the server, with randomized optimization, names, and a 192-combination identity pool for the provider names it registers. Investigators hold samples; they never hold the sample.
Ghost Stream MSI, signed in the pipeline
Authenticode in-band
The MSI pipeline packages a Ghost Stream install and signs it in the same pass. The builder streams a live log as it works — profile, size, mutations — and keeps an artifact history your whole team can see, not just the operator who pressed build.
minted · max uses 1→served once→burned · answers like nothing
Feature 06
Execution — shells, terminals, BOFs, contained
A queued command shell for patient work and a real interactive PTY when you need a terminal. Managed code executes in process. And a Beacon-compatible BOF runtime runs a 67-object library under a crash guard.
A fault returns an error, never the session
Crash-guarded runtime
BOFs are contained by design: a fault in a tasked tool comes back as an error line in the workspace, and the agent keeps its session. The guard is the feature — the library being large is just nice.
Phantom — a shell that starts nothing
In-process · lazy CLR
On a host where spawning cmd.exe or powershell.exe is the loudest move you can make, Phantom answers commands without creating a process at all. A 116-command built-in set covers the everyday work in-process; the managed runtime loads lazily, only when a command genuinely needs it — so a session that never leaves the built-ins produces no module-load telemetry at all. Color-coded in the console so you always know which shell you're in.
Shared token context
One identity per task
Execution inherits the token context you task it with, so shells, BOFs, and modules act as the identity you chose — not as whatever the process happened to be.
whoaminetstattasklistdirenvarpipconfig+109 more
crash-guarded runtimebeacon-compatible objects
Feature 07
Automation — the API is the panel's API
Everything the panel does is a REST call with the same token. Automate builds, tasking, and reporting from your own tooling; the API is not a reduced second interface, it is the interface the product is built on.
Script the boring parts
REST · token auth
Mint stagers from CI, sweep results into your own evidence store, export audit on a schedule, wire build completion to whatever chat your team actually reads. If you can reach the panel, you can reach the API — same origin, same credential.
illustrative · operator tokenbash
# tonight's build, from cron
curl -sS -X POST "$TS/api/builds" \
-H "Authorization: Bearer $TOK" \
-d '{"profile":"windows-x64","traffic":"ms-graph","campaign":"NORTH"}'
# audit trail, to the evidence store
curl -sS "$TS/api/audit?campaign=NORTH&format=csv" \
-H "Authorization: Bearer $TOK" -o north-audit.csv
Feature 08
Interoperability — plays well with the rest of the kit
Out to your analysis tools
BloodHound · CSV
Directory discovery exports straight to BloodHound, so collection becomes a graph your team already knows how to read. The audit log exports to CSV for evidence stores and after-action reports.
In from the ecosystem
BOF-compatible
The object runtime is Beacon-compatible, so the community's tooling — and your own — runs without a port. Peer chaining routes over SMB named pipes for segmented networks; SOCKS5 and reverse tunnels carry the rest of your kit through the agent that is already there.
bloodhoundcsvbeacon-compatible BOFssmb named pipessocks5reverse tunnels
Feature 09
More in the edition
Six more things teams ask about, each linked to its place in the capability reference — every one of the fifty-three entries there is deep-linkable.
“It replaced a workstation, a VM, and the spreadsheet of who had which session.”
Red team lead, European consultancy — licensed since 2025. Shared with permission; the industry being what it is, names stay off the page.
Keep reading
The reference, the console, or the license.
The capability reference itemizes everything above — fifty-three entries with scope and limits. The console page shows the product working. Licensing tells you how acquisition works and what it includes.