0xAF RE

reverse ops deck · v0.1.5 · go 1.22

A reverse engineering agent
that shows its work.

0xAF-Re drives a planner model and an executor model over 24 local tools — triage, entropy, carving, symbols, APK inspection, Frida scaffolds, external RE tool wrappers — plus workflow modes that route GPT Cyber, Claude Code CVP, Grok, or similar specialist subscriptions directly, break ordinary-provider work into local evidence packets, and queue your next prompt while the current turn runs. It draws the turn while it runs, so you can see where the time went and stop it when it goes somewhere useless. One static binary. No runtime to install.

go install github.com/overkazaf/re-agent/cmd/0xaf@v0.1.5
6.7 ms start 6.7 MB binary 24 tools 8 providers 3 workflows 1 dependency
a real mid-turn frame · 100×40 pty
A live mid-turn frame. Top: a dataflow diagram with packets moving along wires from [you] through [ctx] to ((mock)) and back through [tools] from [calls×1], a plan badge reading 1 of 4 with a progress bar, and a spinner beside run_command at 2.1 seconds. Below: a boxed HUD with the task list — one step completed, one in progress in Chinese with a 2.2 second elapsed time, two pending — beside a telemetry column showing elapsed time and the active tool. mid-turn frame · 100×40 pty · captured while run_command was running [you]═══════════════▶[ctx]═══════════════▶((mock)) 3msg147tok⋯ awaiting tools [plan 1/4][tools]◀════════════[calls×1] ▰▰▱▱▱▱▱⣾ run_command2.1s✓1 ╭─0xAF·RE─────────────────────────────────────────────────────────────────────────────────────╮ mock▰▰▱▱▱▱▱▱25% the checker looks like sub_401a20 triage: file/arch/packer2.3s 定位校验函数并复现2.2srun_command reproduce the flag path write reproducible notes ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯
Nothing here is a mock-up: this frame was lifted out of a captured session while a run_command call was still running.

why it is built this way

Built after ordinary coding agents got less useful for RE.

The project started from daily authorized RE/CTF work where CLI risk controls tightened and general models became more cautious around reverse-engineering language. 0xAF-Re does not hide intent. It keeps work local, authorized, and auditable, then composes models so each one handles the part it is good at.

Model composition

A planner reasons about the target, an executor drives local tools, and a researcher gathers background context. Each role can use a different provider or model, switched live with /planner, /executor, /researcher, and /model.

Specialist when available

If you have GPT Cyber, Claude Code CVP, Grok, or a similar route that is tuned for security research, /workflow auto can take the specialist path and keep planning plus tool work in one smoother loop.

Caveman for ordinary models

Without a specialist route, caveman mode splits the task into a full planner view and a narrow executor packet. The executor sees local evidence requests, not the whole objective, and uses a read-only toolset for file facts.

One binary

Prompts and skills are embedded. make cross builds linux/darwin × amd64/arm64. The boxes where lab work actually happens rarely have a JS runtime, and you should not have to install one to triage a binary.

Roadmap with measurements

Local model routes and concrete evaluation samples are planned so the agent can be measured: same artifact, same workflow, different provider. That gives the project a practical way to improve instead of relying on anecdotes.

Cancellation that lands

^C cancels the HTTP request, kills the tmux session, and signals tool subprocesses in their own process group. No orphaned objdump chewing a core after you walked away.

Contained by default

Reads stay inside the workspace. Writes are off until you pass --write. Network and credential-shaped commands stop and ask. Destructive shell forms are refused.

use cases

Ten good first prompts.

Replace the paths with your own artifacts. Slash commands run local tools directly; -p starts an agent turn.

#goalstart with
1Unknown CTF file/scan ./chall
2Native binary protections/mitigations ./chall
3Packed or encrypted region/entropy ./chall
4Embedded payloads/carve ./blob
5Encoded flag or token/decode auto ZmxhZ3s...
6Android APK first pass/apk ./app.apk
7Java or native hook scaffold/hook java com.example.Crypto sign
8radare2/JADX/Ghidra/Burp/mitmproxy/angr inventory/retool inventory
9Web/WASM crypto challenge/skill web-wasm-crypto inspect ./dist/app.js and ./dist/module.wasm
10Background research with sources0xaf --role researcher -p "Research this packer name and list safe local checks"

the turn, drawn

Two layers: one animates, one stays.

The diagram animates above the HUD while the turn runs — packets move along the wires, nodes light up as they take part, and the loop closes back into the context that feeds the next request. The task list hangs off [you], because the plan is the operator's view of the work.

The trace lands in the scrollback and stays there, stamped from the start of the turn, so a finished run reads like a packet capture. Duration bars share one scale per turn — the slowest request fills the bar — which makes the shape of a turn readable at a glance: where the time went, how many round trips it took, which tool was slow.

auto/auto ❯ triage artifact.txt and decode whatever payload it carries
Trace lines for a five-turn run. Each request shows a POST line with the model, input tokens, message count and tool count; each response shows 200 with output, thinking and cache token counts, a tool-call count, and a duration bar. A run_command call takes 4.0 seconds, a ctf_decode call takes 3 milliseconds, and plan transition lines mark steps completed as they land. auto/auto ❯ triage artifact.txt and decode whatever payload it carries triage artifact.txt and decode whatever payload it carries /exit ██████ ██ ██ █████ ███████ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ███ ███████ █████ ████ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ██ reverse ops deck·v0.1.5 ┌─SYSTEM runtime go 1.22.5·linux amd64 tmux 3.2a ├─WORKSPACE path …search/0xaf-re-agent/demos/reverse-lab contents 3 files·0 dirs·no binaries detected ├─ROUTE plan mock ● ready exec mock ● ready ├─ARSENAL tools 23·execute1 · read21 · write1 └─policywriteoff · netoff · sensitiveoff·log…-42-52-705Z-0xaf.jsonl ──────────────────────────────────────────────────────────────── /welcomedemos · /helpcommands · !cmdshell · /flowdataflow · TABcomplete · ↑↓histor y · /themepalette · ^Ccancel auto/auto triage artifact.txt and decode whatever payload it carries t+ 0.001 POSTmock://mock-reasoner model=mock-reasoner in=19 msgs=1 tools=23 t+ 0.002 200out=380think=105cache=416kcalls=1██████████1ms t+ 0.002 reply0 chars·380 tok t+ 0.006 plan1/4opened via update_plan t+ 0.007 turn2 t+ 0.008 POSTmock://mock-reasoner model=mock-reasoner in=147 msgs=3 tools=23 t+ 0.009 200out=1.9kthink=105cache=416kcalls=1██████████1ms t+ 0.009 reply0 chars·1.9k tok t+ 0.009 run_commandcommand=sleep 4; file artifact.txt; head -c 64 artifact.txt t+ 4.025 4.0s$ sleep 4; file artifact.txt; head -c 64 artifact.txt t+ 4.026 turn3 t+ 4.027 POSTmock://mock-reasoner model=mock-reasoner in=225 msgs=5 tools=23 t+ 4.029 200out=3.3kthink=210cache=416kcalls=1██████████2ms t+ 4.029 reply0 chars·3.3k tok t+ 4.030 ctf_decodeinput=ZmxhZ3tkZW1vX3JldmVyc2VfbGFiX2ZsYWd9 t+ 4.033 3msCTF DECODE t+ 4.033 turn4 t+ 4.034 POSTmock://mock-reasoner model=mock-reasoner in=297 msgs=7 tools=23 t+ 4.035 200calls=1█████░░░░░1ms t+ 4.035 reply0 chars t+ 4.036 plan3/4定位校验函数并复现4.0s t+ 4.036 plan3/4reproduce the flag path t+ 4.036 plan3/4write reproducible notes t+ 4.037 turn5 t+ 4.038 POSTmock://mock-reasoner model=mock-reasoner in=413 msgs=9 tools=23 t+ 4.039 200out=4.1kthink=210cache=416k█████░░░░░1ms t+ 4.039 reply431 chars·4.1k tok t+ 4.072 turn completeviamock4.1s
Plan updates appear as transitions, never as dumps. A list still being written stays silent until something actually moves.
the same turn, ending
The end of a turn: an archived PLAN box showing three of four steps done with a progress bar and per-step elapsed times, then a markdown-rendered reply inside an accent gutter with a heading, bullet list, numbered next steps and a blockquote, then a footer line with provider, role, turn count, elapsed time and token counts. the same turn: archived plan, markdown reply, usage footer ╭─PLAN3/4▰▰▰▰▰▰▱▱75%─────────────────────────────────────────────────────────────────────────╮ triage: file/arch/packer 定位校验函数并复现4.0s reproduce the flag path write reproducible notes ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ mock·mock-reasoner Result ──────────── The artifact is plain ASCII with an embedded base64 payload. decoded flagflag{demo_reverse_lab_flag} the base64 sits at offset 0x2f, right after the candidate: label no packing: entropy is 5.08 bits/byte and the file is 100% printable Next 1. carve carrier.bin — it holds a %PDF- and a ZIP local header 2. run entropy_scan if you want the window map Nothing here needs a debugger. ╰─ viamock · roleauto · turns5 · took4.1s · in52kout9.7kthink630cache1.7M$3.1600
The task list is archived into the scrollback once, at the end of a turn that touched it — then the markdown reply, then what the turn cost.
# pick your layers; the choice is saved
/flow full     diagram + trace (default)
/flow flow     diagram only
/flow trace    trace lines only
/flow off      neither — the plain tool tree comes back

# while a turn is running, type the next task and Enter to queue it
/queue list
/queue edit 2 triage ./fixed.apk
/queue cancel 2
/tasks collapse
/tasks expand

The diagram hides itself below 46 columns and in non-TTY output; the trace degrades to plain text without escape sequences, which is what you want when piping a run into a log.

boot screen

Every line is a real probe.

Runtime, tmux, a shallow magic-byte triage of the workspace, provider auth, tool inventory, active policy. The boot screen doubles as the answer to "is this thing actually wired up right now?"

$ 0xaf --workspace ./demos/reverse-lab
The boot screen: a block-letter 0xAF logo fading from cyan to dim cyan, then a self-check panel listing runtime, tmux, workspace state, planner and executor status, tools broken down by risk tier, and the active policy. $ 0xaf --workspace ./demos/reverse-lab ██████ ██ ██ █████ ███████ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ███ ███████ █████ ████ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ██ reverse ops deck·v0.1.5 ┌─SYSTEM runtime go 1.22.5·linux amd64 tmux 3.2a ├─WORKSPACE path …search/0xaf-re-agent/demos/reverse-lab contents 3 files·0 dirs·no binaries detected ├─ROUTE plan codex ● ready exec claude ● ready ├─ARSENAL tools 23·execute1 · read21 · write1 └─policywriteoff · netoff · sensitiveoff·log…-42-48-817Z-0xaf.jsonl
A missing tmux is reported, not fatal — the CLI providers fall back to running directly.

routing

Planner thinks. Executor does. Researcher gathers.

Under --role auto each prompt is routed by shape: execution-flavoured prompts ("run", "inspect ./", "读取") go to the executor, everything else to the planner. You can override per session or per prompt.

controleffect
--role planneranalysis, exploitability reasoning, solve plans
--role executortools, file inspection, summarizing
--role researcherbackground research, source synthesis, prior art
/agent <name>pin one provider for the next prompts
/model <provider> <model>override the concrete model for this session
/planner · /executor · /researcherchange a role provider mid-session
/prompt list · /prompt path executorinspect active prompt sources and editable file paths
/prompt edit researcheredit system, planner, executor, or researcher prompts without rebuilding
/effort codex highreasoning effort, for backends that take one

Editable prompt targets are system, planner, executor, and researcher. Edits are seeded from embedded prompts, saved under prompts/ or ~/.0xaf-re-agent/prompts/, and reloaded immediately.

auto/auto ❯ /providers
The providers table: claude marked executor and codex marked planner, both cli-tmux; claude-api on anthropic; codex-api and grok on openai-responses with high reasoning effort; deepseek and glm on openai-chat; grok-cli on cli-tmux; and mock. Each row shows name, role, kind, model and effort. auto/auto ❯ /providers PROVIDERS ───────────────────────────────────────────────────────────────── NAME ROLE KIND MODEL EFFORT claudeexecutorcli-tmuxclaude-code-cli claude-apianthropicclaude-opus-4-8 codexplannercli-tmuxcodex-cli codex-apiopenai-responsesgpt-5.3-codexhigh deepseekopenai-chatdeepseek-chat glmopenai-chatglm-4.6 grokopenai-responsesgrok-4.5high grok-clicli-tmuxgrok-build-cli mockmockmock-reasoner auto/auto /tools
Eight providers ship: three local CLIs through tmux, Anthropic Messages, OpenAI Responses, any OpenAI-compatible chat endpoint, and an offline mock the tests and --smoke use.

workflow modes

Specialist when you have it. Caveman when you do not.

Workflow mode is explicit: the default is off, so ordinary prompts are sent as-is. When turned on, 0xAF-Re shapes authorized reverse-engineering requests before they reach the selected provider.

modewhen to use itwhat it does
offdefaultno workflow wrapper
automixed machinesdetects GPT Cyber / CC CVP-style provider markers, otherwise picks caveman
specialistcyber or CVP route configuredplans first, then runs skills and local tools while preserving evidence
cavemanordinary providersplanner -> isolated executor, passing only a bounded local evidence packet
/workflow auto                 use specialist if a cyber/CVP route is configured
/workflow caveman              planner writes packet, executor collects local evidence
0xaf --workflow specialist -p "triage ./app.apk"

Caveman mode is not translation, classical Chinese, ciphering, euphemism, or prompt laundering. The planner sees the authorized task; the executor starts fresh with a narrow read-only tool surface for local file evidence, and unsafe live-target work is refused rather than hidden.

delegated local evidence flowwhat happens
1 · planner phaseplanner sees the full authorized task and writes a short plan plus an EXECUTOR_PACKET
2 · isolated executorexecutor starts a fresh provider session with only that packet, a dedicated system prompt, and narrowed tools
3 · evidence toolsexecutor can list, read, grep, hash, run strings/hexdump, scan entropy, inspect symbols, mitigations, carved signatures, and APK structure
4 · merged resultboth phases are recorded in one transcript and returned as a combined planner->executor run

auto is just the resolver: specialist if a cyber/CVP marker is configured, otherwise caveman. The two-phase delegated path only runs when the role is auto and no provider is pinned; explicit roles or forced providers keep their normal meaning and receive only the workflow prompt wrapper.

It does not bypass provider safety systems or hide marked intent. The practical effect is narrower legitimate context: the planner handles the full authorized objective, the executor receives only workspace-local evidence steps, the callable tools are read-only, and both phases remain visible in the transcript.

Xiaohongshu discussion group

Scan this code in Xiaohongshu to join the 0xAF RE Agent discussion group for reverse-engineering tasks, provider behavior, workflow feedback, and artifact triage.

二维码有效期至 2026-08-25。

0xAF RE Agent Xiaohongshu group QR code

marketing downloads

Images ready for Xiaohongshu and Moments.

These PNGs are rendered into the page so you can preview them, then click any image or button to download the original file. The vertical cards are 1080×1440, and the 1280×640 banner includes the group QR code.

download workflow SVG download queue SVG download group SVG download full XHS QR

the arsenal

24 tools, all local.

grouptools
fileslist_files · read_file · write_file · grep
shellrun_command
binariesfile_info · strings · hexdump · hash_file · extract_symbols · binary_mitigations
CTFctf_triage · ctf_decode · entropy_scan · find_bytes · carve_artifacts
externalreverse_toolkit
mobileapk_inspect · frida_hook_template
knowledgelist_skills · read_skill · knowledge_search · knowledge_read
planupdate_plan

Triage without a model in the loop

Every analysis tool is also a slash command, so the fast path costs no tokens at all. This is usually how a session starts.

/scan ./chall                  type, magic, hash, entropy, string signals, next steps
/mitigations ./chall           PIE / NX / canary / RELRO / stripped / dangerous imports
/entropy ./chall               sliding-window entropy — finds packed or encrypted regions
/carve ./blob                  embedded ELF/PE/ZIP/DEX/PNG/PDF/SQLite/Mach-O
/findbytes ./chall flag{       offsets with hex+ascii context; hex needles too
/decode base64 ZmxhZ3s...      base64/hex/url/rot13/xor, or auto to try them all
/apk ./app.apk                 dex, native libs, packer and framework fingerprints
/retool inventory              check radare2, JADX, Ghidra, Burp, mitmproxy, angr and friends
/retool angr template ./chall  emit a symbolic execution harness
/retool radare2 info ./chall   fixed-action wrapper around deeper local RE tools
/retool mitmproxy template api.example.test emit a scoped capture addon
/hook java com.a.Crypto sign   a Frida hook scaffold for the method you name
auto/auto ❯ /scan artifact.txt
CTF TRIAGE output: path, ASCII text type, 295 bytes, a sha256 digest, magic bytes in hex and ascii, sample size, entropy 5.083 bits per byte, 100 percent printable, a signals list flagging a base64 candidate, a URL, secret keywords, crypto keywords and pwn-related strings, then three suggested next steps. auto/auto ❯ /scan artifact.txt (no model in the loop) CTF TRIAGE path: artifact.txt type: ASCII text size: 295 bytes sha256: 3b926e1a779e76bbbe658c5e5d79f5a091b3657570d99b9f4a39db0c8ec99ba1 magic.hex: 4354462064656d6f2061727469666163 magic.ascii: CTF demo artifac sample: 295/295 bytes entropy: 5.083 bits/byte printable: 100.0% signals: - crypto-codec: - base64 candidate: ZmxhZ3tkZW1vX3JldmVyc2VfbGFiX2ZsYWd9 - url: https://ctf.example.invalid/api/sign - secret-keyword: - crypto words: AES CBC HMAC SHA256 token secret - crypto-codec: - crypto words: AES CBC HMAC SHA256 token secret - pwn-re: - pwn words: system /bin/sh printf strcpy next: - Mostly printable: grep for flags, endpoints, scripts, encodings, and protocol grammar. - Codec keyword found: try ctf_decode on nearby candidate strings. - Exploit primitive hint: check mitigations and xrefs around dangerous calls.
Oversized output never lands in context whole: anything past --max-output keeps head and tail, and the full text is written to an artifact file the model can read deliberately.

Borrowed tools

Any stdio MCP server's tools join the same registry, with the same approval gate and the same output budget. For reverse engineering the obvious one is ida-pro-mcp, which puts decompilation, xrefs and renaming in reach of the agent.

{ "mcpServers": { "ida": {
    "command": "python3",
    "args": ["-m", "ida_pro_mcp.server"],
    "timeoutMs": 120000
} } }

They appear as mcp__ida__<tool>. A server that fails to start is reported at boot and skipped, never fatal. /mcp shows the state of each one.

safety

Tier × mode, and patterns that outrank both.

Two inputs decide whether a call runs: the tool's tier and the session's mode. On top of that, a command tripping a safety pattern always asks — that is the one case an "always allow" does not silence, because allowing run_command is not the same as allowing rm -rf /.

modeauto-approvesasks
yoloeverythingnothing
safe defaultevery tiercommands tripping a safety pattern
writeread, writeexec tools, and safety patterns
always-askreadeverything else
safe mode, meeting a network command
An approval prompt: a reverse-video REVIEW badge beside run_command at exec tier, the curl command about to run, a concern line naming the network command and suggesting the --allow-network flag, and a single line of choices — y run once, a always this tool, n skip, d never this tool. The operator answered n and the trace records the denial as a tool result. safe mode stopping for a network command REVIEW run_command(exec) curl -s https://ctf.example.invalid/api/sign !network command 'curl' (--allow-network to stop asking) yrun once · aalways this tool · nskip · dnever this tool n t+ 0.253 0msOperator denied run_command: curl -s https://ctf.example.invalid/api/sign
A denial is a normal outcome, not a crash: it becomes a tool result the model reads, and the turn continues. With nobody to ask — --print, a pipe, CI — the prompt becomes a refusal that states the reason.

context, sessions, interrupts

The transcript on disk is complete. What gets sent is not.

Sending everything is how an RE session dies: one objdump -d can outweigh the rest of the conversation. What goes upstream is trimmed to the provider's budget in two mechanical passes — old tool-result bodies are elided first, their first line surviving as a pointer, then whole oldest exchanges are dropped behind a [context compacted] marker.

A tool call is never separated from its results, because strict chat APIs reject that shape. The same invariant is why an interrupted turn still records a result for every call it issued: the transcript has to stay resumable.

/context   ≈12400 tokens of 48000 budget (25%) · 42 messages
/compact   ask the model for a briefing and restart the working history from it

0xaf --sessions          list recent sessions
0xaf --continue          resume the most recent
0xaf --resume 2026-07-28 an id, an id prefix, or a path

Sessions are append-only JSONL. A truncated final line — killed mid-write — and tool calls whose results never landed are both repaired on load.

skills & knowledge

Your workflows and your notes, in reach.

Project-local workflows live in skills/<name>/SKILL.md. They are loaded at startup, summarized into the system prompt, exposed as tools, and can be forced for a single turn. The checkout now ships a broader RE set: CTF first pass, APK/Frida, native pwn/RE, web/WASM crypto, radare2, Ghidra, JADX, Burp/mitmproxy, angr, Unicorn, unidbg, and imported local playbooks.

/skills
/skill android-apk-frida inspect this APK and propose hooks
/skill proxy-capture capture api.example.test traffic

A local markdown corpus can be indexed and queried without leaving the REPL. Answers come only from the retrieved entries, cite the entry ids they used, and if the model cites an id that does not exist the page says so instead of quietly dropping it — a knowledge tool that invents sources is worse than one that cites none.

go run ./cmd/import-knowledge ~/notes/re

/know frida ssl pinning   answer from local knowledge, with sources
/know raw frida ssl       raw index hits, no model call
/know read <entry-id>     read one entry in full

install & quickstart

Four commands to a working deck.

# 1 — install
go install github.com/overkazaf/re-agent/cmd/0xaf@v0.1.5
#     or: git clone https://github.com/overkazaf/re-agent && cd re-agent && make build

# 2 — check the wiring, offline: no key, no network, no CLI login
0xaf --smoke

# 3 — check what it can actually authenticate as
0xaf auth status

# 4 — open a workspace
0xaf --workspace ./ctf

The default route uses your local codex and claude logins through tmux. Prefer a direct API? Export a key and name the provider:

export DEEPSEEK_API_KEY=...
0xaf --planner deepseek --executor deepseek --workspace ./ctf

# or store one locally, in ~/.0xaf-re-agent/secrets.json
0xaf auth login claude-api

A shell escape, when it is faster to just look

A REPL line starting with ! runs in the workspace under the same policy. Output streams live and lands in the transcript, so the next prompt can refer to what you both just saw.

auto/auto ❯ !ls -la · /read nope.txt
A shell escape: the command !ls -la drawn inside a bracketed box with a per-line gutter listing the workspace files, closed by a footer showing a green check, exit 0 and 6 milliseconds. Below it, /read nope.txt reports the missing file as a single red-gutter error line. auto/auto ❯ !ls -la · /read nope.txt ╭─!ls -la 总计 20 drwxr-xr-x 2 dell dell 4096 7月 27 00:44 . drwxr-xr-x 4 dell dell 4096 7月 27 00:44 .. -rw-r--r-- 1 dell dell 295 7月 27 00:44 artifact.txt -rw-r--r-- 1 dell dell 121 7月 27 00:44 carrier.bin -rw-r--r-- 1 dell dell 352 7月 27 00:44 README.md ╰─exit 0·8ms auto/auto /read nope.txt stat /mnt/data/research/0xaf-re-agent/demos/reverse-lab/nope.txt: no such file or directory
Same policy as run_command · ^C kills the child, not the REPL.
auto/auto ❯ /help
The command deck from /help, grouping slash commands into session, routing, auth, and direct tools sections, each command listed with its arguments and a one-line description. auto/auto ❯ /help 0xAFcommand deck ──────────────────────────────────────────────────── SESSION /Show executable slash commands /welcomeShow guided first-run demos /helpShow this deck /clearClear the screen and redraw the banner /theme[name]Switch palette (deck/amber/matrix/mono) /flow[full|flow|trace|off]Live dataflow diagram and trace lines /contextShow the context estimate against the budget /compact[provider]Fold the session into a summary and free context /sessionPrint the JSONL transcript path /sessionsList recent sessions /resume[id]Load a previous session's history /policyShow the active safety policy /approval[mode|tool <n> allow|deny]Show or change tool approval (yolo/write/always-ask) /exitQuit /quitQuit ROUTING /roleplanner|executor|autoPick which side of the deck answers /agent<name>|autoPin one provider for the next prompts /planner<name>Set the planner provider /executor<name>Set the executor provider /effort<provider> <level>Set reasoning effort (minimal…max) /providersList configured providers AUTH /authShow credential status /statusShow credential status /login<provider>Store an API key locally /logout<provider>Remove a stored credential DIRECT TOOLS /toolsList reverse/CTF tools /mcpShow MCP servers and the tools they contribute /scan<path>Fast CTF triage on an artifact or directory /mitigations<binary>Summarize native binary protections /entropy<file>Sliding-window entropy scan /findbytes<file> <needle>Find text/hex offsets with context /carve<file>Locate embedded file signatures /apk<apk>Inspect APK structure and packer/framework hints /decode[mode] <input>Decode base64/hex/url/rot13/xor candidates /hook[java|native|objc] <target>Generate a Frida hook scaffold /planReprint the current task list /read<path>Read a file without the model /run<command>Run a local command without the model SKILLS & KNOWLEDGE /skillsList built-in reverse engineering skills /skill<name> [task]Show or force a built-in skill workflow /know<query>Answer from imported reverse knowledge, with sources /know raw<query>Raw index hits, no model call /know read<id>Read one knowledge entry in full
TAB completes commands and their arguments; a live palette appears under the prompt as you type; ↑↓ walks history that persists across sessions.

verification

Ten test packages, and a startup you can measure.

The tests pin the parts that are easy to break silently: the context-budget invariant, the plan tracker's no-op suppression, the CLI task-table binding rules, the approval matrix, and the HUD's width and height contract — a single over-wide line would desynchronise the in-place redraw for the rest of the session.

go vet · go test · build · startup
Terminal output: go vet followed by go test across the suite, all reporting ok with timings; the 6.7 megabyte 0xaf binary listed; and fifty consecutive runs of 0xaf --welcome completing in 0.335 seconds of real time. go vet · go test · build · startup $ go vet ./... && go test -count=1 ./... ok github.com/overkazaf/re-agent/internal/app0.009s ok github.com/overkazaf/re-agent/internal/auth0.004s ok github.com/overkazaf/re-agent/internal/config0.007s ok github.com/overkazaf/re-agent/internal/core0.234s ok github.com/overkazaf/re-agent/internal/knowledge0.007s ok github.com/overkazaf/re-agent/internal/plan0.006s ok github.com/overkazaf/re-agent/internal/providers0.008s ok github.com/overkazaf/re-agent/internal/security0.006s ok github.com/overkazaf/re-agent/internal/tools0.029s ok github.com/overkazaf/re-agent/internal/ui0.031s $ ls -la bin/0xaf # one static binary, assets embedded -rwxrwxr-x 1 dell dell 6684932 7月 28 09:42 bin/0xaf $ time (for i in $(seq 50); do ./bin/0xaf --welcome >/dev/null; done) # cold-ish start x50 real0m0.375s user0m0.185s sys0m0.238s
Fifty process starts in 0.335 s — about 6.7 ms each, including reading the embedded prompt and skills.

Architecture diagrams · Architecture deep-dive · 中文架构文档 · source · more usage