HexWitness
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HexWitnessShow me evidence for the message length validation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Function names live in a decompiler. Runtime behavior lives in traces. Protocol findings land in scratch files. Weeks later, the build changed and nobody remembers which observation proved the conclusion.
HexWitness turns that scattered work into durable, evidence-backed knowledge.
flowchart LR
S["Binary Ninja · IDA · Ghidra"] --> J["Portable evidence JSONL"]
R["Frida · debuggers · wire observers"] --> P["Sealed capture pack"]
P --> J
J --> E[("Evidence graph")]
E --> D["Read-only daemon"]
D --> C["CLI / REST"]
D --> M["MCP agents"]What it does
Capability | Result |
Build-scoped truth | Every address, type, event, and claim stays attached to an exact artifact identity. |
Deep static graph | Functions, blocks, calls, references, types, classes, fields, vtables, dataflow, and bounded analysis slices. |
Sealed capture packs | Wire, semantic hooks, markers, video, context, checksums, quality gates, and safe normalization. |
Runtime reconstruction | Ordered timelines, request/response links, object relationships, search, comparison, and first divergence. |
One evidence dossier |
|
Agent-native access | A read-only daemon and MCP vocabulary for query, class, UUID, types, captures, gaps, and coverage. |
Honest uncertainty | Conflicting claims remain visible. Missing evidence becomes a concrete worklist, never a guessed answer. |
Vendor-neutral interchange | JSONL and adapter manifests prevent lock-in to one disassembler, debugger, or target. |
HexWitness is target-agnostic. No application, game, protocol, address, packet layout, or private evidence is built into the core.
Related MCP server: NEAT MCP Server
Let the agent drive
HexWitness is not intended to make a person memorize another command vocabulary. Connect its MCP server, describe the investigation, and let the agent choose the evidence sequence:
Use HexWitness to determine which function validates message length before dispatch
and whether the failing capture reached it. Select the exact build and reuse retained
evidence first. If the proof is missing and Binary Ninja or IDA is connected, inspect
only the smallest missing scope read-only, then prepare the bounded export that makes
the result durable. Separate proof, inference, contradictions, and unknowns.The agent performs:
memory → exact build → resolve → explain → focused evidence → answer
↓ missing
live viewer read-only
↓
bounded promotionThree MCP prompts package the high-value workflows:
hexwitness_start_investigationdrives a complete static or mixed investigation;hexwitness_compare_runtime_behaviorfinds the first divergence between working and failing captures;hexwitness_promote_live_findingturns a transient Binary Ninja or IDA result into a minimal durable handoff.
See AI-first workflows for realistic protocol, crash, class-recovery, vulnerability, and team-handoff examples. Connect Binary Ninja or IDA MCP as optional live eyes.
Durable memory: investigate once, reuse it
HexWitness is not just a search wrapper around a live disassembler. It is persistent project memory.
An exporter or capture pack turns a finding into build-scoped evidence.
Idempotent ingestion stores entities, calls, types, UUIDs, offsets, runtime events, relationships, claims, and provenance in SQLite.
Humans and agents query that memory before asking Binary Ninja, IDA, Ghidra, Frida, or another live tool.
A live tool is called only when retained evidence cannot answer the question.
The new bounded result is exported and ingested, so the next investigation reuses it.
hexwitness memory
curl http://127.0.0.1:7878/v1/memoryMCP agents get the same view through hexwitness_memory_status. The response shows durable evidence counts, database size, latest ingest and capture, retention policy, and recent privacy-preserving activity.
One important boundary: HexWitness does not silently retain every proprietary viewer response. A live result becomes durable after the viewer adapter exports it or the result is otherwise ingested. Query activity is stored separately as operation hashes, timing, status, and result counts—never full arguments or returned evidence.
Quick start
Requirements: Git and Node.js 22.13 or newer.
Install directly from GitHub and launch the wizard:
npm install --global github:siaginw/HexWitness
hexwitness setupOr work from a source checkout:
git clone https://github.com/siaginw/HexWitness.git
cd HexWitness
npm install
npm run demo
npm run setupThe setup wizard asks which AI clients to configure and whether to add Binary Ninja or IDA live inspection. It installs a client-native HexWitness skill for Codex, Claude Code, Cursor, and GitHub Copilot, with wording and discovery paths tailored to each agent. Claude Desktop and generic MCP clients receive the same workflow as an MCP guide. The installed hexwitness-agent entrypoint starts the local daemon automatically—no second terminal or background-service ceremony.
Then ask the agent:
Use HexWitness to explain 0x401120 in build toy-v1. Separate proven evidence,
conflicting claims, and missing proof. Drive the investigation yourself.The bundled demo is synthetic and redistributable. It contains no third-party binary data.
See the AI setup wizard for non-interactive installs, dry runs, safe replacement, and supported clients. Granular CLI commands remain available for CI, scripting, and recovery.
Export a binary
Open a binary you are authorized to analyze, run an exporter, then ingest its JSONL:
Tool | Adapter | Exports |
Binary Ninja | Functions, strings, imports, calls, references, blocks, types, fields, optional HLIL | |
IDA / IDAPython | Functions, strings, imports, calls, references, blocks | |
Ghidra | Functions, calls, blocks, types, fields, enums | |
Frida | Narrow semantic call events and markers; no arbitrary payload reads |
hexwitness init
hexwitness ingest ./program.hexwitness.jsonl
hexwitness serveExporters hash the input executable and do not embed its bytes. Decompiled text is opt-in. Read the binary dump guide before designing a large export.
Capture runtime behavior
Put the collector output and a tiny capture.json manifest in one folder:
roundtrip/
├── capture.json
├── wire.jsonl
├── hooks.jsonl
├── screen.mp4
└── context.jsonThen run one command:
hexwitness capture ./private/roundtripHexWitness detects the conventional files, applies the baseline gate, normalizes, seals, verifies, and imports the result atomically. Missing evidence fails closed without leaving a half-built output. Raw payload-like fields become length and SHA-256; common secret fields are removed recursively.
See sealed capture packs for collector contracts, directory layout, scenario markers, and privacy rules.
Query vocabulary
The CLI, REST daemon, and MCP server expose the same investigation concepts:
query,search,explain,callers,callees,xrefs, and boundedreach;memorystatus showing retained evidence and query-before-live-tool policy;functions,classes,class,uuid,types,vtable,dataflow, andslices;evidence,contradictions,gaps,worklist, andcoverage;capture list, detail, timeline, search, graph, compare, and first divergence.
The daemon publishes its current route manifest at GET /v1/routes.
Connect an agent
The setup wizard installs this autostart MCP entry automatically. The equivalent manual configuration is:
{
"mcpServers": {
"hexwitness": {
"command": "node",
"args": ["/absolute/path/to/HexWitness/bin/hexwitness-agent.mjs"],
"env": {
"HEXWITNESS_AGENT_SESSION": "my-analysis-project"
}
}
}
}An agent starts with health and memory status, selects an exact build, resolves a target, reads its dossier, and only then performs focused graph or capture queries. AGENTS.md contains the full evidence discipline.
For a combined workspace with optional live viewers, copy .mcp.ai-first.json.example. The recommended pairings are BinAssistMCP for Binary Ninja and ida-pro-mcp/idalib-mcp for IDA. These third-party viewers provide live context; HexWitness provides durable memory, build identity, provenance, contradiction handling, and promotion.
HexWitness's core is Node.js. The small Python files are viewer-native exporters for Binary Ninja, IDA, and Ghidra—not a second command framework users must operate by hand.
Evidence model
Build — exact artifact identity and analysis provenance.
Entity — static or runtime object with a build-scoped stable key.
Edge — call, reference, control-flow, ownership, type, vtable, or dataflow relationship.
Slice — bounded IL, SSA, decompiler, block, codec, or manually reviewed analysis.
Evidence — observation with source, timestamp, classification, and confidence.
Claim — interpretation linked to supporting or opposing evidence.
Capture pack — sealed scenario, artifacts, markers, normalized events, and checksums.
Relationship — runtime correlation between events, markers, requests, responses, and objects.
Gap — prioritized missing artifact or observation needed to prove a behavior.
Addresses are canonical hexadecimal strings, preserving unsigned 64-bit values. Imports are transactional and idempotent.
Privacy and trust boundary
raw private material → normalized project evidence → synthetic/public fixturesThe daemon binds to localhost and exposes read-only queries.
Ingestion and capture mutation remain local CLI operations.
A non-local bind requires
HEXWITNESS_API_TOKEN; use TLS through a trusted tunnel or proxy.Activity retention stores operation names, argument hashes, timing, result counts, and optional session hashes—not prompts or returned evidence.
The release audit rejects common credentials, proprietary binary formats, captures, dumps, oversized payloads, and personal absolute paths.
Read the privacy model and security policy.
Documentation
Guide | Purpose |
Verified first run | |
One-command MCP and tailored skill installation for Codex, Claude, Cursor, VS Code, and generic clients | |
Generic parity scope and intentional boundaries | |
Commands and environment | |
Read-only integration surface | |
Agent setup and tool vocabulary | |
Goal-driven prompts and end-to-end investigation examples | |
Optional live-viewer setup, safety, and promotion flow | |
Add another RE or runtime tool | |
Collect, normalize, audit, compare, and import runtime evidence | |
Export the smallest sufficient evidence | |
Components, boundaries, and identity model | |
Pair live vendor tools with durable evidence | |
Diagnose setup and ingestion issues |
Status
HexWitness 0.4 defines and tests the generic evidence, query, capture-pack, comparison, CLI, REST, MCP, installer, tailored agent-skill, and one-command packaging contracts with synthetic fixtures. Vendor GUI adapters remain compatibility-sensitive because their APIs change between releases; the core interchange does not.
No benchmark, adoption, or universal vendor-version claim is implied beyond the checks published in this repository.
Contributing
Focused issues and pull requests are welcome. Read CONTRIBUTING.md before submitting an adapter or fixture. Never attach proprietary binaries, vendor databases, credentials, or captures you cannot redistribute.
License
Apache-2.0. Analyzed binaries, imported evidence, vendor SDKs, and reverse-engineering databases retain their own terms and are not part of HexWitness.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI agents to search code by meaning, explore codebase structure, store and query knowledge with temporal facts, and read source code through a set of MCP tools.4536MIT

NEAT MCP Serverofficial
Alicense-qualityAmaintenanceProvides AI agents with a live architecture model of a codebase, enabling queries for root cause analysis, blast radius, and dependency traversal through MCP tools.27917Apache 2.0- Flicense-qualityCmaintenanceRead-only MCP server for querying an evidence-aware knowledge vault with temporal and provenance-aware data, supporting agent memory and semantic graph projections.
- AlicenseBqualityBmaintenanceProvides a read-only MCP interface to query and retrieve verifiable evidence from a local memory bank, supporting search, dossier, chronology, source, and evidence tools.6BSD Zero Clause
Related MCP Connectors
A paid remote MCP for agent memory MCP, built to return verdicts, receipts, usage logs, and audit-re
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/siaginw/HexWitness'
If you have feedback or need assistance with the MCP directory API, please join our Discord server