Deception
the AI hacker
The problem Deception solves
Modern red-teaming and security testing are complex, fragmented, and manual.
Security professionals often need to:
Switch between multiple tools and terminals
Manually plan attack paths
Track execution steps across long sessions
Interpret raw outputs without structured context
Reproduce or explain previous test runs
This makes red-team operations time-consuming, error-prone, and hard to audit or replay—especially for beginners or small teams.
🚀 What This Project Enables
Decepticon turns high-level security objectives into a coordinated, multi-agent AI workflow, reducing cognitive load and operational friction.
🔐 Practical Use Cases
Red Teaming & Ethical Hacking
Automates reconnaissance, analysis, and execution planning using AI agents.
Security Learning & Training
Beginners can observe real workflows instead of memorizing commands.
Attack Path Simulation
Safely simulate offensive strategies without uncontrolled manual execution.
Security Audits & Research
Maintain structured logs and reproducible workflows.
Challenges we ran into
Building a real-time, multi-agent AI system came with several non-trivial challenge especially around state management, streaming, and UI synchronization.
- Managing Complex Session State in Streamlit
Problem:
Streamlit reruns the entire app on every interaction, which caused:
Duplicate messages
Lost agent state
Broken workflows during long-running executions
Solution:
I built a centralized AppStateManager to:
Initialize session state safely (idempotent setup)
Track active agents, completed agents, and workflow status
Prevent reruns during critical execution phases
This made the UI stable even during multi-step AI workflows.
- Preventing Duplicate Messages During Streaming
Problem:
When streaming agent responses, the same message could appear multiple times due to repeated updates from the underlying execution graph.
Solution:
Inside the executor, I implemented message de-duplication using:
Unique message IDs
Content hashing as a fallback
Only unseen messages are rendered, ensuring clean and readable output.
- Synchronizing Chat UI with a Live Terminal
Problem:
Chat messages and terminal outputs were generated from different parts of the workflow, often falling out of sync.
Solution:
I separated concerns by:
Sending structured “tool” messages to the terminal UI
Rendering chat messages independently from execution logs
A floating terminal UI was added so users could inspect execution without interrupting the chat flow.
- Replaying Past Sessions Reliably
Problem:
Replaying a previous session required reconstructing chat messages, agent states, and terminal output—without triggering unwanted reruns.
Solution:
I introduced a ReplayManager that:
Converts logged events back into frontend-friendly messages
Replays them in a single controlled render pass
Disables streaming during replay to ensure deterministic output
This made sessions fully reproducible and reviewable.
- Safely Switching Models Mid-Application
Problem:
Changing AI models while the app was running often broke the agent swarm or left it in an inconsistent state.
Solution:
I added an ExecutorManager that:
Cleanly resets the swarm
Reinitializes agents with the new model
Preserves session integrity and logs
This allows seamless model switching without restarting the app.
Tracks Applied (2)
Open Track
Agentic AI / ML
Technologies used