explaingit

djskncxm/duckagent

14PythonAudience · developerComplexity · 4/5Setup · hard

TLDR

A multi-agent AI system for Android reverse engineering that coordinates a main agent, trace analysis agent, and IDA Pro/JADX decompiler agent via peer-to-peer @mention routing over a FastAPI message bus.

Mindmap

mindmap
  root((DuckAgent))
    Agents
      Main coordinator
      Trace analysis
      IDA JADX agent
    Routing
      @mention peer routing
      FastAPI message bus
      SQLite persistence
    Tools
      IDA Pro integration
      JADX decompiler
      WebSocket delivery
    Deployment
      tmux multi-window
      Single-process debug
      DeepSeek LLM
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Automate Android APK decompilation and execution flow analysis using coordinated AI agents connected to IDA Pro and JADX.

USE CASE 2

Watch multiple specialized agents collaborate in real time through separate tmux windows, each handling a different analysis task.

USE CASE 3

Route reverse engineering subtasks between agents using @mention syntax so each agent calls on a peer directly without a central router.

Tech stack

PythonFastAPISQLiteWebSocketstmuxDeepSeekIDA ProJADX

Getting it running

Difficulty · hard Time to first run · 1day+

Requires IDA Pro, JADX, a DeepSeek API key, and tmux. Prompts are in Chinese and optimized for DeepSeek behavior.

In plain English

DuckAgent is a multi-agent system designed to assist with Android reverse engineering, which is the process of analyzing an Android app to understand how it works without access to its original source code. The system coordinates several AI agents that work together on this task, with the README written primarily in Chinese. The system includes three specialized AI agents. The main agent handles coordination and breaks tasks into pieces. The trace agent focuses on execution flow analysis and algorithm reconstruction. The IDA/JADX agent handles static analysis and decompilation, connecting to IDA Pro and JADX, which are professional tools used for inspecting compiled Android apps. A human participant also sits in the loop as the final decision-maker. What makes the design notable is that the agents are treated as peers rather than arranged in a hierarchy. Instead of one central router deciding who gets each message, agents direct messages to each other using @mentions, similar to tagging someone in a chat. An agent responding to a task can call on another agent directly, and that agent can in turn ping a third. The routing is automatic: the system parses @agent_id references from message content and delivers accordingly. The system can run in two modes. The default mode uses tmux, a terminal multiplexer, to run each agent in a separate process with its own visible window, which makes it easier to watch what each agent is doing in real time. A single-process debug mode is also available for development. A FastAPI server acts as the message bus, persisting messages to SQLite and distributing them to agents over WebSockets. Configuration is done through a .env file where you set your LLM API key, the model name, and paths to trace log files. The README recommends using DeepSeek as the AI model because the system was designed with Chinese-language prompts and Chinese tool-calling patterns in mind, and other models tend to behave inconsistently in that context.

Copy-paste prompts

Prompt 1
I want to set up DuckAgent from djskncxm/duckagent to analyze an Android APK. Walk me through configuring the .env file with my DeepSeek API key, starting the FastAPI message bus, and launching the three agents in tmux.
Prompt 2
How does the @mention peer routing work in DuckAgent? Explain how the main agent hands off a decompilation task to the IDA/JADX agent and how the reply gets routed back.
Prompt 3
I want to replace DeepSeek with a different LLM in DuckAgent. Which config values do I change and are there prompt format assumptions in the agent logic that might break with another model?
Prompt 4
How do I use single-process debug mode in DuckAgent to step through agent interactions when the tmux multi-window setup is too noisy for debugging?
Open on GitHub → Explain another repo

← djskncxm on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.