Skip to main content

Enterprise IT Helpdesk Assistant CLI with RAG, memory, and escalation workflows.

Project description

AegisDesk

Enterprise Autonomous IT Intelligence — Multi-Agent Swarm for the Modern Service Desk

Python 3.10+ LangGraph FastAPI SQLite ChromaDB Security License CI

AegisDesk is a next-generation, multi-agent AI system purpose-built for Enterprise IT Service Desks. It goes far beyond conventional RAG chatbots by combining a deterministic intent router, an ACID-compliant semantic graph memory, and a hardened security layer — delivering sub-second responses while protecting mission-critical infrastructure from hallucination and abuse.


Table of Contents


Why AegisDesk?

Traditional IT helpdesk bots suffer from three fundamental problems:

Problem Conventional Approach AegisDesk Approach
Slow responses Single monolithic LLM call for every query Zero-Token Semantic Router + specialist worker agents
Unreliable memory Ephemeral context window or in-memory graphs ACID-compliant SQLite-backed Semantic Graph
Security risk Unguarded tool calls & open shell access Zero-Trust command sanitization + SSRF/RCE mitigations

AegisDesk is engineered for enterprises where accuracy, auditability, and security are non-negotiable.


Architecture Overview

User Query
    │
    ▼
┌─────────────────────────────────────────────────┐
│          Zero-Token Semantic Router              │
│   (Deterministic intent routing — no LLM call)  │
└──────────┬───────────────────┬──────────────────┘
           │                   │
   ┌───────▼──────┐   ┌────────▼──────────┐   ┌───────────────────┐
   │   Network    │   │  Cloud/Atlassian   │   │  Web Intelligence │
   │  Ops Agent  │   │   Infra Agent      │   │     Agent         │
   │ (ping, port  │   │ (Azure/AWS/Jira)   │   │ (Internal wikis,  │
   │  scan, proc) │   │                   │   │  HR portals)      │
   └──────┬───────┘   └────────┬──────────┘   └────────┬──────────┘
          │                    │                        │
          └────────────────────▼────────────────────────┘
                               │
               ┌───────────────▼───────────────┐
               │  ACID SQLite Semantic Graph   │
               │  + ChromaDB Vector Store      │
               │  + BGE CrossEncoder Reranker  │
               └───────────────┬───────────────┘
                               │
               ┌───────────────▼───────────────┐
               │    FastAPI SSE Streaming API  │
               │  (JWT Auth + RBAC + TTLCache) │
               └───────────────────────────────┘

The LangGraph Supervisor orchestrates all agent activity. Recursive tool calls are capped at n=5 to prevent runaway loops and protect your API budget — any breach triggers escalation to a human IT agent.


Key Features

🤖 Multi-Agent Swarm Architecture

Incoming queries are routed directly to specialized worker agents, eliminating the "monolithic prompt" anti-pattern:

  • Network Operations Agent — OS-level diagnostics (ping, port scans, process enumeration) with strict regex-based RCE sanitization.
  • Cloud Infrastructure Agent — Direct integration with Azure, AWS, and Atlassian toolchains via secured REST APIs.
  • Web Intelligence Agent — Headless scraping of internal wikis and HR portals, protected against SSRF via pre-flight DNS resolution.

🧠 ACID-Compliant Semantic Graph Memory

Unlike systems that lose context on reboot, AegisDesk uses a custom SQLite-backed Semantic Graph (sqlite-vec + langgraph-checkpoint-sqlite):

  • Entities and relational edges are stored persistently across sessions.
  • Context is assembled recursively via Waggle-inspired edge traversal.
  • A BAAI/bge-reranker-base PyTorch CrossEncoder injects the most hyper-relevant subgraph into the LLM context window without overflow.

⚡ Server-Sent Events (SSE) Streaming API

  • FastAPI backend with native text/event-stream responses for real-time, ChatGPT-like UX.
  • JWT Authentication and Role-Based Access Control (RBAC) on all endpoints.
  • Global cachetools.TTLCache prevents memory leaks from long-running sessions.
  • CrossEncoder inference is fully decoupled from the ASGI event loop via asyncio.to_thread, guaranteeing zero deadlocks under high concurrent load.

🛡️ Zero-Trust Security Protocols

  • RCE Preventionshell=True is explicitly disabled. All OS inputs are stripped of shell metacharacters (&, |, ;, $, <).
  • SSRF Mitigation — All web scraper requests undergo pre-flight DNS resolution. Loopback, link-local, or private subnet targets trigger an immediate block.
  • Denial-of-Wallet Protection — LangGraph Supervisor counts recursive tool_calls; infinite loops are caught at n=5 and escalated to a human.
  • Human-in-the-Loop — Pipeline uses interrupt_before=["dangerous_tools"] so critical OS commands are never executed blindly.

💻 Rich CLI Interface

A typer-powered, Rich-rendered interactive CLI for headless server deployments — no browser required.


Tech Stack

Layer Technology
Language Python 3.10+
Agent Orchestration LangGraph, LangChain
LLM Providers Groq (langchain-groq), OpenAI (langchain-openai), Google Gemini (google-generativeai)
Vector Store ChromaDB
Graph Memory SQLite + sqlite-vec, langgraph-checkpoint-sqlite
Reranking sentence-transformers (BAAI/bge-reranker-base)
API Framework FastAPI + Uvicorn
Streaming Server-Sent Events (SSE)
Auth JWT + RBAC
CLI Typer + Rich
Document Ingestion PyPDF, BeautifulSoup4
HTTP Client HTTPX
Caching cachetools.TTLCache
Container Docker
Linting / Typing Ruff, Mypy
Testing Pytest, pytest-asyncio

Project Structure

AegisDesk/
├── app/
│   ├── api/                  # FastAPI endpoints (SSE streams, JWT auth, RBAC)
│   ├── memory/               # SQLite Semantic Graph + context assemblers
│   ├── rag/                  # LangGraph pipeline, graph definitions, reranking
│   └── db/                   # ChromaDB vector store (Singleton-managed)
│
├── src/aegisdesk/
│   ├── core/
│   │   ├── tools.py          # Sanitized subprocess tooling
│   │   ├── integration_tools.py  # Cloud & Atlassian integrations
│   │   ├── pipeline.py       # Execution engine (Human-in-the-Loop interrupt)
│   │   └── llm_factory.py    # LLMFactory — unified LLM instantiation
│   ├── cli/
│   │   └── main.py           # Rich-rendered Typer CLI
│   └── observability/
│       └── logger.py         # Structured logger (get_logger())
│
├── docs/
│   ├── architecture.md       # Deep-dive architecture documentation
│   ├── roadmap.md            # Development roadmap
│   ├── context-map.md        # File-to-task mapping for contributors
│   └── adr/                  # Architecture Decision Records (ADRs)
│       └── 0002-sqlite-plus-chroma.md
│
├── tests/                    # Pytest test suite
├── examples/                 # Usage examples
├── Dockerfile                # Container build definition
├── pyproject.toml            # Project metadata, dependencies, tooling config
├── requirements.txt          # Pinned dependency list
├── AGENTS.md                 # AI agent collaboration guide
├── CONTRIBUTING.md           # Contributor guidelines
└── test_security.py          # Standalone security validation suite

Getting Started

Prerequisites

  • Python 3.10 or higher
  • git
  • (Optional) Docker

Installation

git clone https://github.com/sitanshukr08/Aegisdesk.git
cd Aegisdesk

# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate

# Install the package in editable mode (includes dev tools)
pip install -e ".[dev]"

Docker (Alternative)

docker build -t aegisdesk .
docker run --env-file .env -p 8000:8000 aegisdesk

Configuration

Copy the environment template and fill in the required keys:

cp .env.example .env

Key variables:

# LLM Provider (choose one or more)
OPENAI_API_KEY=sk-...
GROQ_API_KEY=gsk_...
GOOGLE_API_KEY=...

# JWT Secret
JWT_SECRET_KEY=your-secret-key

# Cloud Integrations (optional)
AZURE_SUBSCRIPTION_ID=...
AWS_ACCESS_KEY_ID=...
ATLASSIAN_API_TOKEN=...

Only fill the keys needed for the features you are running. Unused providers can be left blank.


Usage

Initialize AegisDesk

# Initialize data structures, logs, and environments
aegisdesk init

Ingest IT Documentation

# Ingest HR / IT documentation into the ChromaDB vector store
aegisdesk ingest ./docs/vpn_troubleshooting.pdf
aegisdesk ingest ./docs/onboarding_guide.pdf

Ask a Question (CLI)

aegisdesk ask "Can you ping the corporate gateway and check if my Okta token expired?"

Run the API Server

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

The SSE endpoint will be available at http://localhost:8000. Authenticate with a JWT token and stream responses in real time.

Diagnostics

aegisdesk doctor

Security Model

AegisDesk is hardened against common Red Team attack vectors:

Threat Mitigation
Remote Code Execution (RCE) shell=True disabled; shell metacharacters stripped from all OS inputs
Server-Side Request Forgery (SSRF) Pre-flight DNS resolution blocks private/loopback/link-local targets
Infinite Agent Loops (Denial of Wallet) LangGraph Supervisor caps recursive tool_calls at n=5; escalates to human
Blind OS Command Execution interrupt_before=["dangerous_tools"] enforces Human-in-the-Loop review
Memory Leaks Global cachetools.TTLCache with TTL-based garbage collection
Async Deadlocks CrossEncoder PyTorch inference decoupled via asyncio.to_thread

Development

Coding Standards

  • Keep business logic out of API route handlers and CLI commands; place shared behavior in src/aegisdesk/core/.
  • Never instantiate ChatGroq or ChatOpenAI directly — always use get_llm() from src/aegisdesk/core/llm_factory.py.
  • Never use print() — use get_logger() from src/aegisdesk/observability/logger.py.
  • Use typed Pydantic models for all public request/response shapes.
  • Prefer repository classes for persistence over direct database access in services.

Branch Naming

feature/cli-init-command
fix/cache-isolation
docs/rag-boundaries
refactor/memory-graph-edges

Linting & Type Checking

ruff check .
mypy src/

Testing

# Run the full test suite
python -m pytest

# Run only security tests
python test_security.py

# Run with verbose output
python -m pytest -v tests/

Tests cover cache keys, persistence, retrieval, and ticket escalation logic. All runtime behavior changes must be accompanied by tests.


Contributing

AegisDesk is moving from prototype to product in small, reviewable phases. Contributions should be narrow in scope and reviewable.

Every PR must explain:

  1. What changed
  2. Why it changed
  3. What behavior changed (if any)
  4. What was intentionally left out
  5. What validation was run via the aegisdesk CLI

See CONTRIBUTING.md for full guidelines and see AGENTS.md for AI agent collaboration rules.


Roadmap

See docs/roadmap.md for the full roadmap. Current version: v0.1.0 (Phase 16).

Planned improvements include:

  • Additional worker agents (HR, Procurement, Identity Management)
  • OpenTelemetry-based observability tracing
  • Multi-tenant RBAC with department-level scoping
  • GitHub Actions CI/CD pipeline
  • Formal open-source license

Author

Sitanshu Kumar GitHub: @sitanshukr08


AegisDesk — Turning the IT Service Desk from a cost center into an autonomous intelligence layer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aegisdesk-0.1.6.tar.gz (31.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aegisdesk-0.1.6-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file aegisdesk-0.1.6.tar.gz.

File metadata

  • Download URL: aegisdesk-0.1.6.tar.gz
  • Upload date:
  • Size: 31.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for aegisdesk-0.1.6.tar.gz
Algorithm Hash digest
SHA256 657109eeb7aad500438097ff15d30a0c75470024599611d67604874a7842f993
MD5 ce3aa41034ad10d85062c7242600a1cc
BLAKE2b-256 d6247756e763c28443d12d278382ddf65fcc4e038582d5db07779fda7bc3708b

See more details on using hashes here.

File details

Details for the file aegisdesk-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: aegisdesk-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for aegisdesk-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8774ac68d356ceee5aabd9541eb6dfe7e659abd8efe2b93106d9fbeb8bd46d65
MD5 3a9dab811a5330fc4effe224df081ab9
BLAKE2b-256 8e074f93a2f7e079291c48a7cbf4c373cf75cba3ddeee9a3cda35edaa79ce66d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page