Architecture
Sirji has a modular architecture for easily creating custom agents and recipes. Let's discuss its components, one by one.
Custom Agent
An Agent in the Sirji framework is a modular AI component that performs specific tasks based on custom pseudocode.
Recipe
A recipe is a list of tasks, each assigned to a specific agent.
Orchestrator
The Orchestrator is the central component in the Sirji framework responsible for:
- Recipe Selection: Displaying the list of recipes from the recipe index file for user selection.
- Agent Invocation: Invoking agents in the order specified by the recipe to perform tasks.
Executor
The Executor is a non-AI agent with the following capabilities:
- File system CRUD operations
- Execute commands
- Run code
- Install packages
All agents can access these capabilities via the Executor.
Researcher
The Researcher is an agent based on Retrieval-Augmented Generation (RAG) using the OpenAI Assistants API. It can sync your entire project folder with the OpenAI assistant and answer queries based on the synced files. The project files are uploaded to a vector store, which updates automatically with any changes made by the Sirji framework.
Agent Sessions
Agents can start a new session or continue an existing one. New sessions begin with a fresh system prompt without retaining previous context.
Messaging Protocol
Sirji implements a custom messaging protocol defining how LLM-based agents instruct the Executor or Researcher to perform actions. Read more
How It Works
-
Orchestrator Invokes Recipe Selector: The Recipe Selector agent reads
recipes/index.json
to list available recipes. -
User Selects a Recipe: The Recipe Selector saves the chosen recipe in the Agent Output Folder.
-
Orchestrator Reads the Selected Recipe: The Orchestrator retrieves the selected recipe from the Agent Output Folder.
-
Orchestrator Invokes Agents: The Orchestrator invokes agents in the order specified in the recipe to perform tasks.
-
Agent Execution: Each agent follows its pseudocode step-by-step.
-
Agent Invokes Sub-Agents: Agents can optionally invoke other agents for sub-tasks.