I am building a fork with these goals:
Refactor Archon V2 Into a More Modular “Master Orchestrator” System
Overview
We want to evolve Archon V2 into a more robust, modular, and extensible agent framework—capable of handling multiple sub-agents, a wide variety of tools, and smarter error handling. Below is a prioritized to-do list outlining the steps needed to achieve this goal, plus details on how to proceed with the first major refactor.
To-Do List (Prioritized)
-
Refactor Orchestrator Logic
- Goal: Separate high-level orchestration (the “master agent”) from the individual nodes and sub-agents currently defined in
archon_graph.py.
- Outcome: A new
orchestrator.py to handle flow creation, memory state, and sub-agent orchestration.
- Priority: High (foundation for further work).
-
Create a Plugin Architecture for Tools
- Goal: Move tool definitions out of
pydantic_ai_coder.py into a dedicated plugins/ (or tools/) directory.
- Outcome: A simple plugin loader or registry that auto-detects tool modules, making them easily reusable and extensible.
- Priority: High (enables quick addition or removal of tools).
-
Implement Error Handling & Diagnostic Agent
- Goal: If a node or sub-agent fails repeatedly, pass context to a “Diagnostic Agent” that attempts self-healing or user guidance.
- Outcome: Prevention of entire flow failures; improved reliability and debugging.
- Priority: High (critical for production-ready stability).
-
Add a “Tool Generator” Sub-Agent
- Goal: Automatically generate new plugin files for external integrations (e.g., Twilio, Slack) when requested by the user.
- Outcome: Rapid expansion of capabilities and less manual coding for new services.
- Priority: Medium (depends on plugin architecture).
-
Enhance Streamlit UI / Integrate with n8n
- Goal: Provide a user-friendly interface to orchestrate tasks, show logs, and possibly visually link subflows.
- Outcome: Broader accessibility for non-developers; potential “drag-and-drop” automation via n8n nodes.
- Priority: Medium (quality-of-life improvement).
-
Database & Logging Improvements
- Goal: Add tables (e.g.,
agent_runs) for storing conversation logs, sub-agent usage, error messages, and “lessons learned” for RAG.
- Outcome: Persistent session tracking, advanced analytics, and potential continuous learning.
- Priority: Medium (helps debugging and analytics).
-
Deployment & Scaling with Proxmox
- Goal: Containerize or orchestrate (orchestrator + vector DB + crawler, etc.) in a Proxmox cluster.
- Outcome: Allows horizontal scaling, environment isolation, and easier resource allocation for heavier workloads.
- Priority: Lower (infrastructure enhancement).
First Step: Refactor Orchestrator Logic
Summary
The first coding step is to extract the orchestration logic out of archon_graph.py into a new file (e.g., orchestrator.py). This will make archon_graph.py focus only on:
- Defining sub-agents (Reasoner, Router, Coder, etc.)
- Declaring node functions and their typed states
Meanwhile, orchestrator.py will handle:
- Building the
StateGraph
- Compiling it with a memory saver
- Exposing methods like
start_flow() and resume_flow()
Example Refactor
Sample code
# orchestrator.py
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
from langgraph.types import interrupt
# Import the existing node functions & typed state from archon_graph
from archon_graph import (
define_scope_with_reasoner,
coder_agent,
finish_conversation,
route_user_message,
AgentState
)
class Orchestrator:
def __init__(self):
self.memory = MemorySaver()
self.graph = self._build_graph()
def _build_graph(self):
builder = StateGraph(AgentState)
builder.add_node("define_scope_with_reasoner", define_scope_with_reasoner)
builder.add_node("coder_agent", coder_agent)
builder.add_node("get_next_user_message", self.get_next_user_message)
builder.add_node("finish_conversation", finish_conversation)
builder.add_edge(START, "define_scope_with_reasoner")
builder.add_edge("define_scope_with_reasoner", "coder_agent")
builder.add_edge("coder_agent", "get_next_user_message")
builder.add_conditional_edges(
"get_next_user_message",
route_user_message,
{"coder_agent": "coder_agent", "finish_conversation": "finish_conversation"}
)
builder.add_edge("finish_conversation", END)
return builder.compile(checkpointer=self.memory)
def get_next_user_message(self, state: AgentState):
value = interrupt({})
return {
"latest_user_message": value
}
def start_flow(self, user_message: str):
initial_state = {
"latest_user_message": user_message,
"messages": [],
"scope": ""
}
return self.graph.run(initial_state)
def resume_flow(self, user_message: str):
return self.graph.run(user_message)
archon_graph.py
(Original content minus the orchestration logic)
- Keep your Agents (reasoner, router_agent, end_conversation_agent)
- Keep your node functions (define_scope_with_reasoner, coder_agent, route_user_message, finish_conversation)
- Keep your typed state (AgentState)
- Remove references to .compile() or .run() because that's now in orchestrator.py
Next Steps
Once this refactor is tested and stable:
Implement Task 2: Create a directory for plugins and move all existing “tools” out of pydantic_ai_coder.py.
Implement Task 3: Add robust error handling and a “Diagnostic Agent” node if repeated failures occur.
With these changes, Archon V2 can more easily scale, incorporate new features, and handle complex multi-agent workflows.
If you have any questions or ideas, please comment below!
I am building a fork with these goals:
Refactor Archon V2 Into a More Modular “Master Orchestrator” System
Overview
We want to evolve Archon V2 into a more robust, modular, and extensible agent framework—capable of handling multiple sub-agents, a wide variety of tools, and smarter error handling. Below is a prioritized to-do list outlining the steps needed to achieve this goal, plus details on how to proceed with the first major refactor.
To-Do List (Prioritized)
Refactor Orchestrator Logic
archon_graph.py.orchestrator.pyto handle flow creation, memory state, and sub-agent orchestration.Create a Plugin Architecture for Tools
pydantic_ai_coder.pyinto a dedicatedplugins/(ortools/) directory.Implement Error Handling & Diagnostic Agent
Add a “Tool Generator” Sub-Agent
Enhance Streamlit UI / Integrate with n8n
Database & Logging Improvements
agent_runs) for storing conversation logs, sub-agent usage, error messages, and “lessons learned” for RAG.Deployment & Scaling with Proxmox
First Step: Refactor Orchestrator Logic
Summary
The first coding step is to extract the orchestration logic out of
archon_graph.pyinto a new file (e.g.,orchestrator.py). This will makearchon_graph.pyfocus only on:Meanwhile,
orchestrator.pywill handle:StateGraphstart_flow()andresume_flow()Example Refactor
Sample code
archon_graph.py
(Original content minus the orchestration logic)
- Keep your Agents (reasoner, router_agent, end_conversation_agent)
- Keep your node functions (define_scope_with_reasoner, coder_agent, route_user_message, finish_conversation)
- Keep your typed state (AgentState)
- Remove references to .compile() or .run() because that's now in orchestrator.py
Next Steps
Once this refactor is tested and stable:
Implement Task 2: Create a directory for plugins and move all existing “tools” out of pydantic_ai_coder.py.
Implement Task 3: Add robust error handling and a “Diagnostic Agent” node if repeated failures occur.
With these changes, Archon V2 can more easily scale, incorporate new features, and handle complex multi-agent workflows.
If you have any questions or ideas, please comment below!