The LuaN1aoAgent Web UI is a standalone FastAPI application that provides a persistent, database-backed dashboard for monitoring and managing agent tasks. It runs independently from the agent worker and stays alive between runs.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/SanMuzZzZz/LuaN1aoAgent/llms.txt
Use this file to discover all available pages before exploring further.
Architecture
The web server is built on FastAPI and persists all state to a SQLite database (luan1ao.db). The frontend communicates with the backend over a combination of REST API calls and Server-Sent Events (SSE) for real-time updates.
Starting the web server
Dashboard features
Real-time task graph
Watch the DAG evolve as the Planner adds, deprecates, and completes nodes live.
Live log streaming
Every P-E-R event is streamed to the log panel as it is written to the database.
Node detail panel
Click any node to view its full execution log, tool outputs, artifacts, and state transition history.
Task management
Create new tasks, abort running tasks, delete historical records, and reorder the task sidebar.
Creating a task from the UI
Open the dashboard
Navigate to http://localhost:8088 in your browser.
Fill in task details
Enter the Goal (the penetration testing objective) and an optional Task Name for display purposes.You can also configure:
- Output mode:
simple,default, ordebug - Human-in-the-Loop: toggle HITL mode for this task
- LLM models: override planner, executor, and reflector models per task
The web server creates the task database record before spawning the agent subprocess, so the task appears in the UI instantly even before the agent initializes.
Understanding node states and colors
The task graph visualizes nodes with colors corresponding to their state machine status:| State | Color | Meaning |
|---|---|---|
pending | Gray | Awaiting dependency completion |
in_progress | Blue | Currently being executed by the Executor |
completed | Green | Successfully finished; Reflector confirmed goal achieved |
failed | Red | Executor exhausted steps without success |
deprecated | Faded | Planner pruned this node (replaced by a better path) |
stalled_orphan | Orange | Dependency was removed without a replacement |
- Root node — the overall task goal
- Task nodes — subtasks created by the Planner (displayed with description labels)
- Action nodes — individual tool invocations (execution steps)
Viewing the causal graph
Switch to the Causal Graph tab to see the evidence-hypothesis-vulnerability-exploit chain the agent is building. Each node represents a causal inference:Viewing node details
Click any node in the execution graph to open the detail panel on the right. The panel shows:- Description — the subtask objective
- Status — current state with timestamp
- Execution log — all tool calls and observations for that subtask
- Artifacts — structured findings produced (vulnerabilities, credentials, flags)
- Thought — the Executor’s internal reasoning chain
Managing tasks
Aborting a running task
Click a task in the sidebar, then click Abort. The web server sendsSIGKILL to the entire process group of the agent subprocess (using os.killpg), which also terminates any MCP tool child processes.
Deleting a historical task
Click the task in the sidebar, then click Delete. This removes theSessionModel record and all associated graph nodes, edges, and event logs from the SQLite database via cascading delete.
Reordering tasks
Drag tasks in the sidebar to reorder them. The order is persisted to the database (sort_index column on SessionModel) and restored on the next page load.
Active intervention: injecting subtasks
During a running task, you can inject new subtasks directly into the agent’s task graph without waiting for the next Planner cycle:Describe the subtask
Enter the subtask description and optionally specify node IDs this subtask depends on.
HITL approval modal
When a task is started with Human-in-the-Loop enabled (HUMAN_IN_THE_LOOP=true), the agent pauses after generating each plan and waits for human approval before execution begins.
The Web UI detects pending approval requests via the SSE stream (intervention.required event) and automatically displays a modal:
- Approve — execute the plan as generated
- Reject — discard the plan; the agent will re-plan
- Modify — edit the raw plan JSON in the modal’s editor before approving
Data persistence
All task data is stored inluan1ao.db (SQLite) in the project root. The database is created automatically on first startup. The following tables are used:
| Table | Contents |
|---|---|
SessionModel | One row per task: goal, name, status, config |
GraphNodeModel | Task graph and causal graph nodes |
GraphEdgeModel | Dependency and causal edges |
EventLogModel | All P-E-R log events (streamed to the UI) |
InterventionModel | Pending and resolved HITL/injection requests |