-
Notifications
You must be signed in to change notification settings - Fork 2
developer codebase overview
Welcome to the Siyarix codebase! This document serves as a quick tour of the project structure and core modules. Siyarix started as a personal passion project to explore AI-native orchestration, and it's continuously growing thanks to active development.
Tip
If you are new to the codebase, I recommend starting with the Agent Orchestrator (core/) and Interactive Chat (chat/) modules, as they form the core experience!
Siyarix lives under the src/siyarix/ directory. Here is the layout:
src/siyarix/
├── __init__.py # Public API
├── __main__.py # Entry point for `python -m siyarix`
├── main.py # Legacy entry point
│
├── cli/
│ └── __init__.py # Main Typer CLI app
│
├── chat/ # 💬 Interactive REPL system
│ ├── engine.py # LLMEngineMixin
│ ├── repl.py # SiyarixChat: prompt_toolkit REPL
│ ├── handlers.py # Slash command handlers
│ ├── openai_compat.py # Adapter for AI providers
│ └── ...
│
├── core/ # 🧠 Agent Orchestration Kernel
│ ├── __init__.py # AgentCore
│ ├── pipeline.py # CommandPipeline
│ └── swarm.py # SwarmRouter
│
├── providers/ # ☁️ Multi-Provider LLM Abstraction Layer
│ ├── manager.py # Registration and management
│ ├── state.py # Cooldowns and caching
│ └── profiles/ # Provider profiles (OpenAI, Gemini, Ollama, etc.)
│
├── parsers/ # 🔍 Tool Output Parser Subsystem
│ ├── __init__.py # ParserRegistry
│ ├── nmap_parser.py # Nmap XML/text parser
│ └── ...
│
├── output/ # 🎨 Output Engine
│ └── __init__.py # Renders formats (JSON, YAML, HTML, etc.)
│
├── report/ # 📊 Reporting
│ └── __init__.py # Generates reports in MARKDOWN, HTML, JSON
│
├── plugins/ # 🔌 Dynamic Plugin Architecture
├── templates/ # 📝 UI Templates and ASCII Art
├── data/ # 🗄️ Static assets
├── offline_registry/ # 📴 Offline heuristic planning subsystem
│
└── Root-Level Modules:
├── audit_log.py # Audit trails
├── credential_store.py # Encrypted credential vault
├── deep_scan.py # Reconnaissance engine
├── learning_system.py # Basic learning from executions
├── opsec.py # Basic OPSEC controls
├── permission_gate.py # Command permission control
├── workflow.py # Workflow engine
└── ...
AgentCore is the brain of Siyarix. It dispatches tasks across four operational modes:
-
REGISTRY(heuristic-based) -
AUTONOMOUS(LLM-driven) -
HYBRID(combined) -
INTERACTIVE(chat-driven)
Our interactive shell is built on prompt_toolkit, featuring a split-pane layout and context-aware autocomplete. The LLMEngineMixin runs the agent loop.
Siyarix abstracts various AI providers through a unified adapter (openai_compat.py). The ProviderManager handles failover and backoff, so things keep running if an API goes down.
The ParserRegistry discovers tool parsers at import time. Each parser implements the Parser protocol, mapping raw tool output to structured data.
Siyarix includes some neat security features:
- PermissionGate: A review stage before running commands.
- DLP Engine: Tries to mask sensitive data patterns.
- CredentialStore: Secures API keys locally.
- AuditLogger: Keeps a log of actions.
The OutputEngine supports multiple formats and themes, and the ReportEngine compiles assessments into Markdown or HTML.
Important
Implemented Features vs. Stubs
Siyarix is a growing project. While features like MultiWaveExecution and BudgetChecking are active, some features listed in chat/stubs.py are placeholders designed for future expansion as I continue building out the tool.
To keep the codebase manageable, I try to follow these standards:
- Type Hints: Encouraged on public APIs.
-
Async First:
asynciois used extensively. -
Structured Data: Using Python
dataclassesfor representing findings. -
Error Handling: Use
SiyarixExceptioninstead of bareexcept:blocks. -
Logging: Standard Python logging (
logging.getLogger(__name__)). -
Testing: We rely on
pytest. Let's try to keep coverage up! - Linting: Using Ruff for formatting and linting.
Note
👋 Welcome to Siyarix! This is a personal passion project built by a single developer. It's currently under active development and growing fast. Expect rough edges, but lots of love! ❤️
Welcome to the Siyarix Documentation Map! This page serves as your master compass for navigating the extensive documentation we have built for the platform.
Whether you are a brand new user, a seasoned security operator, or a developer looking to contribute to the core engine, you can find exactly what you need here.
Not sure where to start? Pick the path that best describes you:
Just getting started? We highly recommend following these guides in order:
- Installation Guide — Get Siyarix running on your machine.
- Onboarding Wizard — Let our interactive wizard help you set up your API keys and environment.
- Setup & Configuration — A deeper dive into customizing your setup.
- Your First Run — A gentle walkthrough of your very first Siyarix command.
Ready to put Siyarix to work? Dive into our operational guides:
- Interactive Chat (REPL) — Learn how to use the powerful interactive terminal.
- Security Workflows — Best practices for recon, vulnerability assessment, and incident response.
- Cloud & IaC Scanning — How to secure your cloud environments and infrastructure code.
- Compliance Frameworks — Map your scans to SOC 2, HIPAA, ISO 27001, and more.
Looking under the hood or wanting to write some code? Start here:
- Contribution Guide — Our workflow, standards, and how you can help!
- Codebase Overview — A comprehensive map of our 82+ source modules.
- Testing Standards — How we ensure reliability with pytest and CI/CD.
- Module Architecture — Component design and responsibilities.
If you prefer to browse the raw structure, here is a complete layout of the docs/ folder:
docs/
├── 🚀 getting-started/ # Installation, onboarding, and configuration
│ ├── installation.md # Multi-platform install (pip, brew, winget, docker)
│ ├── onboarding.md # The interactive 11-step setup wizard
│ ├── setup.md # Managing API keys, credentials, and settings
│ ├── first-run.md # A walkthrough of your first session
│ ├── configuration.md # A deep-dive into advanced settings
│ └── troubleshooting.md # Common issues and how to fix them instantly
│
├── 📖 user/ # Daily operations and workflows
│ ├── cli-commands.md # Reference for 50+ CLI commands across 12 groups
│ ├── interactive-chat.md # Mastering the AI REPL and 54+ slash commands
│ ├── security-workflows.md # Recon, vulnerability assessment, incident response
│ ├── cloud-scanning.md # Multi-cloud security scanning (under development)
│ ├── compliance.md # Framework mapping (SOC 2, NIST, GDPR, PCI-DSS)
│ ├── threat-intelligence.md# Integrations with OTX, NVD, and MITRE ATT&CK
│ ├── playbooks.md # Building automated YAML-based IR playbooks
│ ├── workflow-files.md # DAG workflow reference (programmatic API)
│ ├── reporting.md # Multi-format report generation
│ ├── offline-registry.md # Running without AI (Offline/Registry execution mode)
│ └── ai-workflows.md # Advanced AI-driven autonomous operations
│
├── 💻 developer/ # Building, testing, and extending Siyarix
│ ├── codebase-overview.md # Full module structure mapping
│ ├── contribution-guide.md # How to submit PRs and our coding standards
│ ├── module-architecture.md# Component design and responsibilities
│ ├── testing.md # Writing tests (pytest), coverage, and CI/CD
│ └── building.md # Packaging, distribution, and Docker builds
│
├── 🏗️ architecture/ # System design and core internals
│ ├── overview.md # High-level data flow and layered orchestration
│ ├── ai-agent-pipeline.md # The AgentCore reasoning and execution pipeline
│ ├── provider-abstraction.md# How we unify 26 different AI providers
│ ├── execution-engine.md # Plan-based step orchestration
│ ├── memory-and-state.md # Knowledge graph, session persistence, and learning
│ ├── security-model.md # The Permission Gate, DLP, audit logging, and OPSEC
│ └── intent-routing.md # Semantic intent classification and routing
│
├── 🧠 ai/ # Deep dive into the AI provider & agent systems
│ ├── routing.md # Managing 26 providers, failovers, and circuit breakers
│ ├── persona-system.md # Overview of our 10 security personas
│ ├── agent-reasoning.md # The Observe-Reason-Act loop and tool call repair
│ ├── tool-execution.md # The tool registry, capability graph, and parsers
│ ├── ensemble.md # Parallel LLM voting strategies
│ ├── multi-wave.md # Iterative goal execution with context carry-over
│ ├── prompt-architecture.md# System prompt design and management
│ └── safety.md # Our rigorous 8-layer hallucination mitigation system
│
├── 🛡️ security/ # Safety, ethics, and threat models
│ ├── reporting.md # How to safely report vulnerabilities to us
│ ├── threat-model.md # System threat model and our mitigations
│ ├── operational-security.md# TOR routing, stealth modes, and OPSEC controls
│ ├── ethical-policy.md # Mandatory rules of engagement for all users
│ └── abuse-prevention.md # How we prevent misuse of the AI engine
│
└── ⚖️ legal/ # Licensing and governance
├── agpl-guide.md # A plain-English overview of the AGPL-3.0-or-later license
├── why-agpl.md # The philosophy behind our license choice
├── trademark-policy.md # Branding and trademark guidelines
├── responsible-ai.md # Our framework for ethical AI usage
├── disclaimer.md # Important legal disclaimers
└── plugin-exception.md # The license exception for building custom plugins
As you read through the documentation, you might encounter some specific terms. Here is a quick cheat sheet:
| Term | What It Means |
|---|---|
| Provider | The backend AI engine powering Siyarix (e.g., OpenAI, Anthropic, Ollama). |
| Tool | A traditional security executable installed on your system (e.g., nmap, nuclei). |
| Plan | A step-by-step sequence of tool commands intelligently generated by the AI. |
| Workflow | A hardcoded, predefined execution path (usually defined in YAML/JSON) that doesn't require AI generation. |
| Persona | A specialized behavioral profile given to the AI (e.g., instructing it to act specifically as a "Network Recon Specialist"). |
| Knowledge Graph | Siyarix's internal memory where it stores findings (like IP addresses, open ports) to contextually inform future steps. |
Need help finding something specific? Feel free to use the search bar at the top of the documentation site, or open a discussion on our GitHub!