Skip to main content
Glama
README.md
<div align="center">

# tracea

### Trace anything running โ€” hooks, calls, memory, network โ€” with evidence, through your agent.

**The dynamic half of reverse engineering, built for AI coding agents.**

[![PyPI](https://img.shields.io/badge/PyPI-tracea-blue)](https://pypi.org/project/tracea/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![CI](https://github.com/Hisernberg/tracea/actions/workflows/ci.yml/badge.svg)](../../actions)
[![MCP](https://img.shields.io/badge/protocol-MCP-black)](https://modelcontextprotocol.io)
[![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97-Space-yellow)](https://huggingface.co/spaces/Nabidnur/tracea-demo)

</div>

> ๐Ÿšง **Status: under active development.** v0.1 (network evidence engine) ships this week; **v1.0 launches November 2026.** See the [roadmap](docs/ROADMAP.md). Stars watch the build. ๐Ÿ“ˆ

---

Static-analysis MCPs tell your agent what software *looks like*.
**tracea shows your agent what software *does*** โ€” spawn it, hook it, trace it, capture its traffic โ€” and returns every finding as a structured **Evidence Record**, so the agent cites proof instead of guessing.

- **Runtime, not guesses** โ€” API hooks, syscall summaries, memory inspection, HTTP/TLS/DNS reconstruction from live traffic or pcaps
- **Evidence over assertion** โ€” every result carries observation, artifacts, confidence, and explicit limitations
- **Token-efficient by design** โ€” deduplicated summaries + artifact references; never a 10 MB strace dump in your context window
- **Works where you already work** โ€” Claude Code, Codex, Cursor, Gemini CLI via MCP; or standalone CLI

## The one-liner (shipping with v0.1)

```bash
uvx tracea setup
```

Detects your agents, backs up configs, registers the MCP server, installs matching workflow instructions. Restart your agent and ask:

```
Trace what this app actually does at startup, hook its crypto calls,
and show me the evidence.
```

Or use it straight from the terminal:

```bash
tracea net-pcap-summary capture.pcap --json
tracea run-diff run-a run-b        # what changed between two runs?
tracea evidence-export --html      # standalone, shareable report
```

## What you can trace (v1 โ€” 24 tools)

| Domain | Tools | Provider |
|---|---|---|
| **Network & protocols** | `net_pcap_summary` ยท `net_flow_graph` ยท `net_http_reconstruct` ยท `net_tls_inventory` ยท `net_dns_timeline` ยท `net_live_capture` | scapy / dpkt / mitmproxy |
| **Linux & macOS processes** | `proc_list` ยท `proc_trace_syscalls` ยท `proc_hook_function` ยท `proc_memory_map` ยท `proc_memory_scan` ยท `proc_watch_files` ยท `proc_stalker` | Frida + /proc |
| **Android** | `android_list_apps` ยท `android_spawn_app` ยท `android_hook_java` ยท `android_hook_native` ยท `android_trace_api` ยท `android_dump_ui` ยท `android_crypto_scan` ยท `android_capture_traffic` | Frida + adb |
| **Cross-cutting** | `evidence_query` ยท `evidence_export` ยท `run_diff` | built-in |

## How tracea works

```
Agent (Claude Code / Codex / Cursor / Gemini CLI)
        โ”‚  MCP (stdio)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  tracea MCP server (Python, FastMCP)            โ”‚
โ”‚  โ€ข 24 tools   โ€ข session manager   โ€ข evidence DB โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ”‚ provider adapters
   โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ–ผ          โ–ผ          โ–ผ           โ–ผ          โ–ผ
 Frida      adb        /proc       mitmproxy   dpkt
```

The agent calls a tracea tool โ†’ tracea drives the mature instrumentation stack โ†’ findings come back as **Evidence Records**, not raw dumps:

```json
{
  "id": "ev_01HZX...",
  "tool": "android_hook_java",
  "provider": "frida",
  "target": "com.example.app",
  "observation": "SharedPreferences.getString('api_key') from AntiTamper.check()",
  "confidence": "observed",
  "artifacts": [{"type": "stacktrace", "ref": "artifacts/0001.txt"}],
  "limitations": ["string value not captured (hook depth 1)"]
}
```

`observed` outranks `inferred`. Every record states what it *couldn't* see. That's the whole philosophy.

## The Hugging Face suite

| Asset | What | Why |
|---|---|---|
| ๐Ÿค— [**tracea-demo**](https://huggingface.co/spaces/Nabidnur/tracea-demo) | Live Space: pcap explorer, APK static teaser, evidence viewer | Try it in the browser, zero install |
| ๐Ÿค— [**tracea-bench**](https://huggingface.co/datasets/Nabidnur/tracea-bench) | **TraceBench** โ€” annotated runtime traces + hook-script corpus with ground truth | Train/eval dynamic-analysis agents |
| ๐Ÿค— [**tracea-explainer**](https://huggingface.co/Nabidnur/tracea-explainer) | Small model fine-tuned on TraceBench: trace โ†’ plain-English report | Proof the data works |

## Who is this for

- **Security researchers** โ€” triage, malware lab analysis, pinning checks, protocol documentation
- **Developers** โ€” "why does our release build phone home?" answered with evidence, not vibes
- **Agent builders** โ€” give your agent runtime perception; eval against TraceBench
- **Software preservationists** โ€” understand abandoned binaries by watching them run

## Ethics

tracea is for **authorized analysis only**: your apps, your devices, your captures, your labs. No DRM circumvention, no piracy tooling, no malware development. Evidence exports redact high-entropy secrets by default. Full policy in [docs](docs/ARCHITECTURE.md#ethics).

## Roadmap

`v0.1` network engine โ†’ `v0.3` native processes + setup wizard โ†’ `v0.5` Android + Space demo โ†’ **`v1.0` launch (Nov 2026)**. Details in [docs/ROADMAP.md](docs/ROADMAP.md).

## Credits & ecosystem

- Built with [Frida](https://frida.re), [scapy](https://scapy.net), [FastMCP](https://github.com/jlowin/fastmcp)
- Evidence philosophy inspired by [morluto/rea](https://github.com/morluto/rea) โ€” the static half. tracea is the dynamic half.
- Ideas from the whole agentic-RE community: [ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp), [GhidraMCP](https://github.com/LaurieWired/GhidraMCP), [hooker](https://github.com/CreditTone/hooker)

## License

MIT ยฉ 2026 [Nabid Nur](https://github.com/Hisernberg)